From e22732775adc9e729f158484c7539f8468a52f07 Mon Sep 17 00:00:00 2001 From: ko1234 Date: Fri, 29 Aug 2025 11:44:29 +0800 Subject: [PATCH] =?UTF-8?q?autodesk=E6=9C=AC=E5=9C=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 7 +- .../extensions/BimWalk/BimWalk.min.js | 18 +++ .../BoxSelection/BoxSelection.min.js | 18 +++ .../extensions/CompGeom/CompGeom.min.js | 18 +++ .../DataVisualization.min.js | 45 ++++++++ .../DocumentBrowser/DocumentBrowser.min.js | 18 +++ .../LayerManager/LayerManager.min.js | 18 +++ .../MaterialConverterPrism.min.js | 18 +++ .../extensions/Measure/Measure.min.js | 18 +++ .../MixpanelProvider/MixpanelProvider.min.js | 18 +++ .../extensions/Section/Section.min.js | 18 +++ .../extensions/Snapping/Snapping.min.js | 18 +++ .../extensions/ViewCubeUi/ViewCubeUi.min.js | 18 +++ public/autodesk/lmvworker.min.js | 2 + .../SharpHighlights_irr.logluv.dds | Bin 0 -> 98432 bytes .../SharpHighlights_mipdrop.logluv.dds | Bin 0 -> 524408 bytes .../res/environments/boardwalk_irr.logluv.dds | Bin 0 -> 98432 bytes .../environments/boardwalk_mipdrop.logluv.dds | Bin 0 -> 524408 bytes .../res/locales/en/VCcrossRGBA8small.dds | Bin 0 -> 98432 bytes .../autodesk/res/locales/en/allstrings.json | 1 + .../res/locales/zh-Hant/VCcrossRGBA8small.dds | Bin 0 -> 98432 bytes .../res/locales/zh-Hant/allstrings.json | 1 + .../autodesk/res/locales/zh/allstrings.json | 1 + public/autodesk/res/textures/VCarrows.png | Bin 0 -> 1840 bytes public/autodesk/res/textures/VCarrowsS0.png | Bin 0 -> 1935 bytes public/autodesk/res/textures/VCarrowsS1.png | Bin 0 -> 1829 bytes .../autodesk/res/textures/VCcompass-base.png | Bin 0 -> 9123 bytes .../res/textures/VCcompass-pointer-b.png | Bin 0 -> 3805 bytes public/autodesk/res/textures/VCcontext.png | Bin 0 -> 379 bytes public/autodesk/res/textures/VCcontextS.png | Bin 0 -> 399 bytes public/autodesk/res/textures/VCedge1.png | Bin 0 -> 365 bytes public/autodesk/res/textures/VChome.png | Bin 0 -> 491 bytes public/autodesk/res/textures/VChomeS.png | Bin 0 -> 502 bytes .../res/ui/powered-by-autodesk-blk-rgb.png | Bin 0 -> 22996 bytes public/autodesk/style.min.css | 1 + public/autodesk/viewer3D.min.js | 109 ++++++++++++++++++ src/hooks/baja/useSystemStatusByBaja.js | 9 +- .../dashboard/components/DashboardAlert.vue | 13 +-- 38 files changed, 368 insertions(+), 19 deletions(-) create mode 100644 public/autodesk/extensions/BimWalk/BimWalk.min.js create mode 100644 public/autodesk/extensions/BoxSelection/BoxSelection.min.js create mode 100644 public/autodesk/extensions/CompGeom/CompGeom.min.js create mode 100644 public/autodesk/extensions/DataVisualization/DataVisualization.min.js create mode 100644 public/autodesk/extensions/DocumentBrowser/DocumentBrowser.min.js create mode 100644 public/autodesk/extensions/LayerManager/LayerManager.min.js create mode 100644 public/autodesk/extensions/MaterialConverterPrism/MaterialConverterPrism.min.js create mode 100644 public/autodesk/extensions/Measure/Measure.min.js create mode 100644 public/autodesk/extensions/MixpanelProvider/MixpanelProvider.min.js create mode 100644 public/autodesk/extensions/Section/Section.min.js create mode 100644 public/autodesk/extensions/Snapping/Snapping.min.js create mode 100644 public/autodesk/extensions/ViewCubeUi/ViewCubeUi.min.js create mode 100644 public/autodesk/lmvworker.min.js create mode 100644 public/autodesk/res/environments/SharpHighlights_irr.logluv.dds create mode 100644 public/autodesk/res/environments/SharpHighlights_mipdrop.logluv.dds create mode 100644 public/autodesk/res/environments/boardwalk_irr.logluv.dds create mode 100644 public/autodesk/res/environments/boardwalk_mipdrop.logluv.dds create mode 100644 public/autodesk/res/locales/en/VCcrossRGBA8small.dds create mode 100644 public/autodesk/res/locales/en/allstrings.json create mode 100644 public/autodesk/res/locales/zh-Hant/VCcrossRGBA8small.dds create mode 100644 public/autodesk/res/locales/zh-Hant/allstrings.json create mode 100644 public/autodesk/res/locales/zh/allstrings.json create mode 100644 public/autodesk/res/textures/VCarrows.png create mode 100644 public/autodesk/res/textures/VCarrowsS0.png create mode 100644 public/autodesk/res/textures/VCarrowsS1.png create mode 100644 public/autodesk/res/textures/VCcompass-base.png create mode 100644 public/autodesk/res/textures/VCcompass-pointer-b.png create mode 100644 public/autodesk/res/textures/VCcontext.png create mode 100644 public/autodesk/res/textures/VCcontextS.png create mode 100644 public/autodesk/res/textures/VCedge1.png create mode 100644 public/autodesk/res/textures/VChome.png create mode 100644 public/autodesk/res/textures/VChomeS.png create mode 100644 public/autodesk/res/ui/powered-by-autodesk-blk-rgb.png create mode 100644 public/autodesk/style.min.css create mode 100644 public/autodesk/viewer3D.min.js diff --git a/index.html b/index.html index 78bb417..2bd1a23 100644 --- a/index.html +++ b/index.html @@ -4,10 +4,7 @@ - + 台灣百家珍釀造食品股份有限公司 @@ -20,7 +17,7 @@
- + diff --git a/public/autodesk/extensions/BimWalk/BimWalk.min.js b/public/autodesk/extensions/BimWalk/BimWalk.min.js new file mode 100644 index 0000000..3ce7127 --- /dev/null +++ b/public/autodesk/extensions/BimWalk/BimWalk.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var A={1759:(A,t,i)=>{"use strict";i.d(t,{A:()=>s});var e=i(1354),o=i.n(e),n=i(6314),a=i.n(n)()(o());a.push([A.id,'.adsk-viewing-viewer .mobile-joystick.visible{display:block}.adsk-viewing-viewer .mobile-joystick{pointer-events:none;display:none;position:fixed;z-index:10}.adsk-viewing-viewer .mobile-joystick-handle.transition{transition:.2s}.adsk-viewing-viewer .dark-theme .mobile-joystick-handle{border-color:rgba(0,0,0,.4)}.adsk-viewing-viewer .mobile-joystick-handle{pointer-events:all;border-radius:100%;border-radius:100%;border:20px solid;border-color:rgba(180,180,180,.55);box-sizing:border-box;display:inherit;position:fixed;z-index:12}.adsk-viewing-viewer .dark-theme .mobile-joystick-inner-circle{background-color:#3c3c3c}.adsk-viewing-viewer .mobile-joystick-inner-circle{width:100%;height:100%;display:block;position:absolute;background-color:rgba(255,255,255,.5);border-radius:100%}.adsk-viewing-viewer .dark-theme .mobile-joystick-back-circle{background:rgba(0,0,0,.7)}.adsk-viewing-viewer .mobile-joystick-back-circle{display:block;width:100%;height:100%;position:absolute;border-radius:100%;background:rgba(255,255,255,.8);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.adsk-viewing-viewer .mobile-joystick-arrow.active{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxNiAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE1LjE1NjEgOS4xNDk3TDE1LjE0OTUgOS4xNTYyN0wxNS4xNDMzIDkuMTYzMDdDMTUuMDQxMiA5LjI3MzgzIDE0LjkxOSA5LjM2MDI2IDE0Ljc4NDkgOS40MTc4MkMxNC42NTA4IDkuNDc1MzcgMTQuNTA3MyA5LjUwMzA5IDE0LjM2MzQgOS40OTk3M0wxNC4zNjM0IDkuNDk5NTNMMTQuMzQ5MyA5LjQ5OTZDMTQuMjAyNyA5LjUwMDMxIDE0LjA1NzEgOS40NzA3OCAxMy45MjA4IDkuNDEyMjVDMTMuNzg0NCA5LjM1MzcgMTMuNjU5NSA5LjI2NzA4IDEzLjU1NCA5LjE1NjU4TDEzLjU1MjkgOS4xNTU0M0wxMC4wMDIxIDUuNDYwMzhMMTAuMDAwOSA1LjQ1ODkyTDkuOTU5NTEgNS40MDg0QzkuOTIzOTQgNS4zNjUyOCA5Ljg3Mjk4IDUuMzA0MTEgOS44MTA2MiA1LjIzMDg4QzkuNjg2MzEgNS4wODQ5MSA5LjUxNDc2IDQuODg4NzIgOS4zMjgyMyA0LjY5MTE3QzkuMTQzODQgNC40OTU4OSA4LjkzNDk4IDQuMjg4NzUgOC43MzcxMiA0LjEyNjg1QzguNjM4NyA0LjA0NjMyIDguNTMxNiAzLjk2NzUyIDguNDIzMDIgMy45MDY0NkM4LjMyNzU0IDMuODUyNzYgOC4xNzAyNSAzLjc3NzE5IDcuOTg2NTcgMy43NzcxOUM3LjgwMjg5IDMuNzc3MTkgNy42NDU2IDMuODUyNzYgNy41NTAxMiAzLjkwNjQ2QzcuNDQxNTQgMy45Njc1MiA3LjMzNDQ0IDQuMDQ2MzIgNy4yMzYwMiA0LjEyNjg1QzcuMDM4MTYgNC4yODg3NSA2LjgyOTMgNC40OTU4OSA2LjY0NDkxIDQuNjkxMTdDNi40NTgzOCA0Ljg4ODcyIDYuMjg2ODMgNS4wODQ5MSA2LjE2MjUzIDUuMjMwODhDNi4xMDAxNyA1LjMwNDExIDYuMDQ5MjEgNS4zNjUyOCA2LjAxMzYzIDUuNDA4NEw1Ljk3MjIgNS40NTg5Mkw1Ljk3MTQ5IDUuNDU5NzhMMi40MDYwNyA5LjE0NzQzQzIuMTg5NTkgOS4zNTMyMSAxLjkwODE3IDkuNDYyMzMgMS42MjA2OCA5LjQ1NzA5QzEuMzMwNTYgOS40NTE3OSAxLjA1MDI5IDkuMzMwMzEgMC44Mzk5NSA5LjExMjc2QzAuNjI5MTAyIDguODk0NjkgMC41MDU1NiA4LjU5NzEzIDAuNTAwMTgzIDguMjgxOTRDMC40OTQ4NTMgNy45Njk1IDAuNjA2MTU3IDcuNjY5ODQgMC44MDY0MTIgNy40NDQ0OUw3LjE4NDU4IDAuODQ3NjYxQzcuMjkyMTQgMC43MzkzODcgNy40MTczNiAwLjY1MzQ4NCA3LjU1MzUzIDAuNTkzNjA1TDcuNTUzNTMgMC41OTM2MTVMNy41NTY1NiAwLjU5MjI1N0M3LjY5MjkgMC41MzEyMTYgNy44MzkxOSAwLjUgNy45ODY1NyAwLjVDOC4xMzM5NSAwLjUgOC4yODAyNCAwLjUzMTIxNiA4LjQxNjU4IDAuNTkyMjU2TDguNDE2NTcgMC41OTIyNjdMOC40MTk2MiAwLjU5MzYwNUM4LjU1NTY1IDAuNjUzNDI4IDguNjgwNzYgMC43MzkyMjQgOC43ODgyNSAwLjg0NzM1NEwxNS4xNTA5IDcuNDUwNzZMMTUuMTUwOSA3LjQ1MDhMMTUuMTU2MSA3LjQ1NjAxQzE1LjI2MzggNy41NjQ2MSAxNS4zNTA0IDcuNjk1MzYgMTUuNDA5OCA3Ljg0MTAxQzE1LjQ2OTIgNy45ODY2OSAxNS41IDguMTQzNzcgMTUuNSA4LjMwMjg2QzE1LjUgOC40NjE5NCAxNS40NjkyIDguNjE5MDMgMTUuNDA5OCA4Ljc2NDdDMTUuMzUwNCA4LjkxMDM1IDE1LjI2MzggOS4wNDExIDE1LjE1NjEgOS4xNDk3WiIgZmlsbD0iIzA2OTZENyIvPgo8L3N2Zz4K")}.adsk-viewing-viewer .mobile-joystick-arrow{position:absolute;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxNiAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE1LjE1NjEgOS4xNDk3TDE1LjE0OTUgOS4xNTYyN0wxNS4xNDMzIDkuMTYzMDdDMTUuMDQxMiA5LjI3MzgzIDE0LjkxOSA5LjM2MDI2IDE0Ljc4NDkgOS40MTc4MkMxNC42NTA4IDkuNDc1MzcgMTQuNTA3MyA5LjUwMzA5IDE0LjM2MzQgOS40OTk3M0wxNC4zNjM0IDkuNDk5NTNMMTQuMzQ5MyA5LjQ5OTZDMTQuMjAyNyA5LjUwMDMxIDE0LjA1NzEgOS40NzA3OCAxMy45MjA4IDkuNDEyMjVDMTMuNzg0NCA5LjM1MzcgMTMuNjU5NSA5LjI2NzA4IDEzLjU1NCA5LjE1NjU4TDEzLjU1MjkgOS4xNTU0M0wxMC4wMDIxIDUuNDYwMzhMMTAuMDAwOSA1LjQ1ODkyTDkuOTU5NTEgNS40MDg0QzkuOTIzOTQgNS4zNjUyOCA5Ljg3Mjk4IDUuMzA0MTEgOS44MTA2MiA1LjIzMDg4QzkuNjg2MzEgNS4wODQ5MSA5LjUxNDc2IDQuODg4NzIgOS4zMjgyMyA0LjY5MTE3QzkuMTQzODQgNC40OTU4OSA4LjkzNDk4IDQuMjg4NzUgOC43MzcxMiA0LjEyNjg1QzguNjM4NyA0LjA0NjMyIDguNTMxNiAzLjk2NzUyIDguNDIzMDIgMy45MDY0NkM4LjMyNzU0IDMuODUyNzYgOC4xNzAyNSAzLjc3NzE5IDcuOTg2NTcgMy43NzcxOUM3LjgwMjg5IDMuNzc3MTkgNy42NDU2IDMuODUyNzYgNy41NTAxMiAzLjkwNjQ2QzcuNDQxNTQgMy45Njc1MiA3LjMzNDQ0IDQuMDQ2MzIgNy4yMzYwMiA0LjEyNjg1QzcuMDM4MTYgNC4yODg3NSA2LjgyOTMgNC40OTU4OSA2LjY0NDkxIDQuNjkxMTdDNi40NTgzOCA0Ljg4ODcyIDYuMjg2ODMgNS4wODQ5MSA2LjE2MjUzIDUuMjMwODhDNi4xMDAxNyA1LjMwNDExIDYuMDQ5MjEgNS4zNjUyOCA2LjAxMzYzIDUuNDA4NEw1Ljk3MjIgNS40NTg5Mkw1Ljk3MTQ5IDUuNDU5NzhMMi40MDYwNyA5LjE0NzQzQzIuMTg5NTkgOS4zNTMyMSAxLjkwODE3IDkuNDYyMzMgMS42MjA2OCA5LjQ1NzA5QzEuMzMwNTYgOS40NTE3OSAxLjA1MDI5IDkuMzMwMzEgMC44Mzk5NSA5LjExMjc2QzAuNjI5MTAyIDguODk0NjkgMC41MDU1NiA4LjU5NzEzIDAuNTAwMTgzIDguMjgxOTRDMC40OTQ4NTMgNy45Njk1IDAuNjA2MTU3IDcuNjY5ODQgMC44MDY0MTIgNy40NDQ0OUw3LjE4NDU4IDAuODQ3NjYxQzcuMjkyMTQgMC43MzkzODcgNy40MTczNiAwLjY1MzQ4NCA3LjU1MzUzIDAuNTkzNjA1TDcuNTUzNTMgMC41OTM2MTVMNy41NTY1NiAwLjU5MjI1N0M3LjY5MjkgMC41MzEyMTYgNy44MzkxOSAwLjUgNy45ODY1NyAwLjVDOC4xMzM5NSAwLjUgOC4yODAyNCAwLjUzMTIxNiA4LjQxNjU4IDAuNTkyMjU2TDguNDE2NTcgMC41OTIyNjdMOC40MTk2MiAwLjU5MzYwNUM4LjU1NTY1IDAuNjUzNDI4IDguNjgwNzYgMC43MzkyMjQgOC43ODgyNSAwLjg0NzM1NEwxNS4xNTA5IDcuNDUwNzZMMTUuMTUwOSA3LjQ1MDhMMTUuMTU2MSA3LjQ1NjAxQzE1LjI2MzggNy41NjQ2MSAxNS4zNTA0IDcuNjk1MzYgMTUuNDA5OCA3Ljg0MTAxQzE1LjQ2OTIgNy45ODY2OSAxNS41IDguMTQzNzcgMTUuNSA4LjMwMjg2QzE1LjUgOC40NjE5NCAxNS40NjkyIDguNjE5MDMgMTUuNDA5OCA4Ljc2NDdDMTUuMzUwNCA4LjkxMDM1IDE1LjI2MzggOS4wNDExIDE1LjE1NjEgOS4xNDk3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-size:contain;z-index:11;width:20px;height:20px}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-up{left:50%;transform:translate(-50%, 50%)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-right{left:100%;top:50%;transform:translate(-150%, -50%) rotate(90deg)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-down{left:50%;top:100%;transform:translate(-50%, -150%) rotate(180deg)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-left{top:50%;transform:translate(50%, -50%) rotate(270deg)}',"",{version:3,sources:["webpack://./extensions/BimWalk/UI/NavigatorMobileJoystick.css"],names:[],mappings:"AAAA,8CAA8C,aAAa,CAAC,sCAAsC,mBAAmB,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,wDAAwD,cAAc,CAAC,yDAAyD,2BAA2B,CAAC,6CAA6C,kBAAkB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,qBAAqB,CAAC,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,+DAA+D,wBAAwB,CAAC,mDAAmD,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,kBAAkB,CAAC,8DAA8D,yBAAyB,CAAC,kDAAkD,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,+BAA+B,CAAC,0BAA0B,CAAC,kCAAkC,CAAC,mDAAmD,kvEAAkvE,CAAC,4CAA4C,iBAAiB,CAAC,kvEAAkvE,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,qDAAqD,QAAQ,CAAC,8BAA8B,CAAC,wDAAwD,SAAS,CAAC,OAAO,CAAC,8CAA8C,CAAC,uDAAuD,QAAQ,CAAC,QAAQ,CAAC,+CAA+C,CAAC,uDAAuD,OAAO,CAAC,6CAA6C",sourcesContent:['.adsk-viewing-viewer .mobile-joystick.visible{display:block}.adsk-viewing-viewer .mobile-joystick{pointer-events:none;display:none;position:fixed;z-index:10}.adsk-viewing-viewer .mobile-joystick-handle.transition{transition:.2s}.adsk-viewing-viewer .dark-theme .mobile-joystick-handle{border-color:rgba(0,0,0,.4)}.adsk-viewing-viewer .mobile-joystick-handle{pointer-events:all;border-radius:100%;border-radius:100%;border:20px solid;border-color:rgba(180,180,180,.55);box-sizing:border-box;display:inherit;position:fixed;z-index:12}.adsk-viewing-viewer .dark-theme .mobile-joystick-inner-circle{background-color:#3c3c3c}.adsk-viewing-viewer .mobile-joystick-inner-circle{width:100%;height:100%;display:block;position:absolute;background-color:rgba(255,255,255,.5);border-radius:100%}.adsk-viewing-viewer .dark-theme .mobile-joystick-back-circle{background:rgba(0,0,0,.7)}.adsk-viewing-viewer .mobile-joystick-back-circle{display:block;width:100%;height:100%;position:absolute;border-radius:100%;background:rgba(255,255,255,.8);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.adsk-viewing-viewer .mobile-joystick-arrow.active{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxNiAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE1LjE1NjEgOS4xNDk3TDE1LjE0OTUgOS4xNTYyN0wxNS4xNDMzIDkuMTYzMDdDMTUuMDQxMiA5LjI3MzgzIDE0LjkxOSA5LjM2MDI2IDE0Ljc4NDkgOS40MTc4MkMxNC42NTA4IDkuNDc1MzcgMTQuNTA3MyA5LjUwMzA5IDE0LjM2MzQgOS40OTk3M0wxNC4zNjM0IDkuNDk5NTNMMTQuMzQ5MyA5LjQ5OTZDMTQuMjAyNyA5LjUwMDMxIDE0LjA1NzEgOS40NzA3OCAxMy45MjA4IDkuNDEyMjVDMTMuNzg0NCA5LjM1MzcgMTMuNjU5NSA5LjI2NzA4IDEzLjU1NCA5LjE1NjU4TDEzLjU1MjkgOS4xNTU0M0wxMC4wMDIxIDUuNDYwMzhMMTAuMDAwOSA1LjQ1ODkyTDkuOTU5NTEgNS40MDg0QzkuOTIzOTQgNS4zNjUyOCA5Ljg3Mjk4IDUuMzA0MTEgOS44MTA2MiA1LjIzMDg4QzkuNjg2MzEgNS4wODQ5MSA5LjUxNDc2IDQuODg4NzIgOS4zMjgyMyA0LjY5MTE3QzkuMTQzODQgNC40OTU4OSA4LjkzNDk4IDQuMjg4NzUgOC43MzcxMiA0LjEyNjg1QzguNjM4NyA0LjA0NjMyIDguNTMxNiAzLjk2NzUyIDguNDIzMDIgMy45MDY0NkM4LjMyNzU0IDMuODUyNzYgOC4xNzAyNSAzLjc3NzE5IDcuOTg2NTcgMy43NzcxOUM3LjgwMjg5IDMuNzc3MTkgNy42NDU2IDMuODUyNzYgNy41NTAxMiAzLjkwNjQ2QzcuNDQxNTQgMy45Njc1MiA3LjMzNDQ0IDQuMDQ2MzIgNy4yMzYwMiA0LjEyNjg1QzcuMDM4MTYgNC4yODg3NSA2LjgyOTMgNC40OTU4OSA2LjY0NDkxIDQuNjkxMTdDNi40NTgzOCA0Ljg4ODcyIDYuMjg2ODMgNS4wODQ5MSA2LjE2MjUzIDUuMjMwODhDNi4xMDAxNyA1LjMwNDExIDYuMDQ5MjEgNS4zNjUyOCA2LjAxMzYzIDUuNDA4NEw1Ljk3MjIgNS40NTg5Mkw1Ljk3MTQ5IDUuNDU5NzhMMi40MDYwNyA5LjE0NzQzQzIuMTg5NTkgOS4zNTMyMSAxLjkwODE3IDkuNDYyMzMgMS42MjA2OCA5LjQ1NzA5QzEuMzMwNTYgOS40NTE3OSAxLjA1MDI5IDkuMzMwMzEgMC44Mzk5NSA5LjExMjc2QzAuNjI5MTAyIDguODk0NjkgMC41MDU1NiA4LjU5NzEzIDAuNTAwMTgzIDguMjgxOTRDMC40OTQ4NTMgNy45Njk1IDAuNjA2MTU3IDcuNjY5ODQgMC44MDY0MTIgNy40NDQ0OUw3LjE4NDU4IDAuODQ3NjYxQzcuMjkyMTQgMC43MzkzODcgNy40MTczNiAwLjY1MzQ4NCA3LjU1MzUzIDAuNTkzNjA1TDcuNTUzNTMgMC41OTM2MTVMNy41NTY1NiAwLjU5MjI1N0M3LjY5MjkgMC41MzEyMTYgNy44MzkxOSAwLjUgNy45ODY1NyAwLjVDOC4xMzM5NSAwLjUgOC4yODAyNCAwLjUzMTIxNiA4LjQxNjU4IDAuNTkyMjU2TDguNDE2NTcgMC41OTIyNjdMOC40MTk2MiAwLjU5MzYwNUM4LjU1NTY1IDAuNjUzNDI4IDguNjgwNzYgMC43MzkyMjQgOC43ODgyNSAwLjg0NzM1NEwxNS4xNTA5IDcuNDUwNzZMMTUuMTUwOSA3LjQ1MDhMMTUuMTU2MSA3LjQ1NjAxQzE1LjI2MzggNy41NjQ2MSAxNS4zNTA0IDcuNjk1MzYgMTUuNDA5OCA3Ljg0MTAxQzE1LjQ2OTIgNy45ODY2OSAxNS41IDguMTQzNzcgMTUuNSA4LjMwMjg2QzE1LjUgOC40NjE5NCAxNS40NjkyIDguNjE5MDMgMTUuNDA5OCA4Ljc2NDdDMTUuMzUwNCA4LjkxMDM1IDE1LjI2MzggOS4wNDExIDE1LjE1NjEgOS4xNDk3WiIgZmlsbD0iIzA2OTZENyIvPgo8L3N2Zz4K")}.adsk-viewing-viewer .mobile-joystick-arrow{position:absolute;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxNiAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE1LjE1NjEgOS4xNDk3TDE1LjE0OTUgOS4xNTYyN0wxNS4xNDMzIDkuMTYzMDdDMTUuMDQxMiA5LjI3MzgzIDE0LjkxOSA5LjM2MDI2IDE0Ljc4NDkgOS40MTc4MkMxNC42NTA4IDkuNDc1MzcgMTQuNTA3MyA5LjUwMzA5IDE0LjM2MzQgOS40OTk3M0wxNC4zNjM0IDkuNDk5NTNMMTQuMzQ5MyA5LjQ5OTZDMTQuMjAyNyA5LjUwMDMxIDE0LjA1NzEgOS40NzA3OCAxMy45MjA4IDkuNDEyMjVDMTMuNzg0NCA5LjM1MzcgMTMuNjU5NSA5LjI2NzA4IDEzLjU1NCA5LjE1NjU4TDEzLjU1MjkgOS4xNTU0M0wxMC4wMDIxIDUuNDYwMzhMMTAuMDAwOSA1LjQ1ODkyTDkuOTU5NTEgNS40MDg0QzkuOTIzOTQgNS4zNjUyOCA5Ljg3Mjk4IDUuMzA0MTEgOS44MTA2MiA1LjIzMDg4QzkuNjg2MzEgNS4wODQ5MSA5LjUxNDc2IDQuODg4NzIgOS4zMjgyMyA0LjY5MTE3QzkuMTQzODQgNC40OTU4OSA4LjkzNDk4IDQuMjg4NzUgOC43MzcxMiA0LjEyNjg1QzguNjM4NyA0LjA0NjMyIDguNTMxNiAzLjk2NzUyIDguNDIzMDIgMy45MDY0NkM4LjMyNzU0IDMuODUyNzYgOC4xNzAyNSAzLjc3NzE5IDcuOTg2NTcgMy43NzcxOUM3LjgwMjg5IDMuNzc3MTkgNy42NDU2IDMuODUyNzYgNy41NTAxMiAzLjkwNjQ2QzcuNDQxNTQgMy45Njc1MiA3LjMzNDQ0IDQuMDQ2MzIgNy4yMzYwMiA0LjEyNjg1QzcuMDM4MTYgNC4yODg3NSA2LjgyOTMgNC40OTU4OSA2LjY0NDkxIDQuNjkxMTdDNi40NTgzOCA0Ljg4ODcyIDYuMjg2ODMgNS4wODQ5MSA2LjE2MjUzIDUuMjMwODhDNi4xMDAxNyA1LjMwNDExIDYuMDQ5MjEgNS4zNjUyOCA2LjAxMzYzIDUuNDA4NEw1Ljk3MjIgNS40NTg5Mkw1Ljk3MTQ5IDUuNDU5NzhMMi40MDYwNyA5LjE0NzQzQzIuMTg5NTkgOS4zNTMyMSAxLjkwODE3IDkuNDYyMzMgMS42MjA2OCA5LjQ1NzA5QzEuMzMwNTYgOS40NTE3OSAxLjA1MDI5IDkuMzMwMzEgMC44Mzk5NSA5LjExMjc2QzAuNjI5MTAyIDguODk0NjkgMC41MDU1NiA4LjU5NzEzIDAuNTAwMTgzIDguMjgxOTRDMC40OTQ4NTMgNy45Njk1IDAuNjA2MTU3IDcuNjY5ODQgMC44MDY0MTIgNy40NDQ0OUw3LjE4NDU4IDAuODQ3NjYxQzcuMjkyMTQgMC43MzkzODcgNy40MTczNiAwLjY1MzQ4NCA3LjU1MzUzIDAuNTkzNjA1TDcuNTUzNTMgMC41OTM2MTVMNy41NTY1NiAwLjU5MjI1N0M3LjY5MjkgMC41MzEyMTYgNy44MzkxOSAwLjUgNy45ODY1NyAwLjVDOC4xMzM5NSAwLjUgOC4yODAyNCAwLjUzMTIxNiA4LjQxNjU4IDAuNTkyMjU2TDguNDE2NTcgMC41OTIyNjdMOC40MTk2MiAwLjU5MzYwNUM4LjU1NTY1IDAuNjUzNDI4IDguNjgwNzYgMC43MzkyMjQgOC43ODgyNSAwLjg0NzM1NEwxNS4xNTA5IDcuNDUwNzZMMTUuMTUwOSA3LjQ1MDhMMTUuMTU2MSA3LjQ1NjAxQzE1LjI2MzggNy41NjQ2MSAxNS4zNTA0IDcuNjk1MzYgMTUuNDA5OCA3Ljg0MTAxQzE1LjQ2OTIgNy45ODY2OSAxNS41IDguMTQzNzcgMTUuNSA4LjMwMjg2QzE1LjUgOC40NjE5NCAxNS40NjkyIDguNjE5MDMgMTUuNDA5OCA4Ljc2NDdDMTUuMzUwNCA4LjkxMDM1IDE1LjI2MzggOS4wNDExIDE1LjE1NjEgOS4xNDk3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-size:contain;z-index:11;width:20px;height:20px}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-up{left:50%;transform:translate(-50%, 50%)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-right{left:100%;top:50%;transform:translate(-150%, -50%) rotate(90deg)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-down{left:50%;top:100%;transform:translate(-50%, -150%) rotate(180deg)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-left{top:50%;transform:translate(50%, -50%) rotate(270deg)}'],sourceRoot:""}]);const s=a},4529:(A,t,i)=>{"use strict";i.d(t,{A:()=>s});var e=i(1354),o=i.n(e),n=i(6314),a=i.n(n)()(o());a.push([A.id,'.adsk-viewing-viewer .bimwalk .speed{min-width:0;min-height:0;display:block;position:absolute;left:calc(50% - 83px);top:30px;width:160px;height:34px;opacity:0;transform:translate(0, 10px);pointer-events:none;webkit-transition:opacity .5s ease-in-out,transform .5s ease-in-out;-moz-transition:opacity .5s ease-in-out,transform .5s ease-in-out;-ms-transition:opacity .5 ease-in-out,transform .5s ease-in-out;-o-transition:opacity .5s ease-in-out,transform .5s ease-in-out;transition:opacity .5s ease-in-out,transform .5s ease-in-out}.adsk-viewing-viewer .bimwalk .speed-text{padding-top:8px}.adsk-viewing-viewer .bimwalk .speed.open{opacity:1;pointer-events:all;transform:translate(0, 0)}.adsk-viewing-viewer .bimwalk .tooltip-info{display:block;position:absolute;right:12px;cursor:pointer;top:10px;opacity:0;width:30px;height:30px;background-color:rgba(34,34,34,.4);box-shadow:0 1px 2px 0 rgba(0,0,0,.2);border-radius:50%;transition:opacity .2s ease;z-index:1;pointer-events:none}.adsk-viewing-viewer .bimwalk .info-icon{display:block;width:24px;height:24px;margin:2.5px 2.5px 2.5px 2.5px;background:url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22 standalone%3D%22no%22%3F%3E%3Csvg width%3D%2224px%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 version%3D%221.1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E %3Ctitle%3Eicon-information%3C%2Ftitle%3E %3Cdesc%3ECreated with Sketch.%3C%2Fdesc%3E %3Cdefs%3E%3C%2Fdefs%3E %3Cg id%3D%22Symbols%22 stroke%3D%22none%22 stroke-width%3D%221%22 fill%3D%22none%22 fill-rule%3D%22evenodd%22%3E %3Cg id%3D%22icon-information%22 fill%3D%22%23ffffff%22%3E %3Cpath d%3D%22M13.75%2C11.1484375 C13.75%2C10.796875 13.6328125%2C10.5625 13.515625%2C10.2109375 C13.28125%2C9.625 12.6953125%2C9.2734375 11.875%2C9.2734375 C11.171875%2C9.2734375 10.5859375%2C9.625 10.234375%2C10.2109375 C10.1171875%2C10.5625 10%2C10.796875 10%2C11.1484375 L10%2C18.296875 L10.234375%2C19.234375 C10.5859375%2C19.8203125 11.0546875%2C20.171875 11.875%2C20.171875 C12.6953125%2C20.171875 13.1640625%2C19.8203125 13.515625%2C19.234375 L13.75%2C18.296875 L13.75%2C11.1484375 L13.75%2C11.1484375 Z M13.75%2C5.7578125 C13.75%2C5.2890625 13.515625%2C4.8203125 13.1640625%2C4.46875 C12.8125%2C4.1171875 12.4609375%2C4 11.9921875%2C4 C11.5234375%2C4 11.0546875%2C4.1171875 10.703125%2C4.46875 C10.3515625%2C4.8203125 10.234375%2C5.2890625 10.234375%2C5.7578125 C10.234375%2C6.2265625 10.3515625%2C6.6953125 10.703125%2C7.046875 C11.0546875%2C7.3984375 11.5234375%2C7.515625 11.9921875%2C7.515625 C12.4609375%2C7.515625 12.9296875%2C7.3984375 13.1640625%2C7.046875 C13.6328125%2C6.6953125 13.75%2C6.2265625 13.75%2C5.7578125 Z%22 id%3D%22Shape%22%3E%3C%2Fpath%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E");background-size:contain}.adsk-viewing-viewer .bimwalk .tooltip-info.open{opacity:.7;pointer-events:all}.adsk-viewing-viewer .bimwalk .tooltip-info:hover{opacity:1}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip{position:absolute;top:0;bottom:0;left:0;right:0;opacity:0;pointer-events:none;overflow:auto;z-index:6}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip--open{opacity:1;pointer-events:all}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip *{box-sizing:border-box !important}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__content{position:absolute;top:50%;left:50%;width:620px;height:520px;transform:translate(-50%, -50%)}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__title{font-size:16px;font-weight:bold;display:block;text-align:center;margin-bottom:20px;line-height:19px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__close{position:absolute;top:5px;right:-30px;cursor:pointer}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__row{clear:left;height:135px;margin-bottom:5px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip{border-radius:5px;padding:28px 0;width:100%;position:relative;text-align:center;font-size:0;height:135px;display:block;float:left}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip+.c-bimwalk-tooltip__tip{margin-left:5px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__subtitle{position:absolute;left:14px;top:12px;font-size:14px;font-weight:bold}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__instruction{position:absolute;height:31px;left:14px;bottom:6px;font-size:12px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--walk{padding:26px 14px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--walk svg{height:79px;display:inline-block;margin:0 26px}.adsk-viewing-viewer .bimwalk .bimwalk-tooltip-or{font-size:12px;font-weight:bold;position:absolute;bottom:27px;left:50%;transform:translateX(-50%)}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--updown{padding:53px 0 45px;width:307px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--updown svg{height:37px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--run{padding:53px 0 45px;width:308px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__shift{height:37px;display:inline-block;margin:0;vertical-align:middle}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__plus{width:11px;display:inline-block;margin:0 16px 0 19px;vertical-align:middle}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__direction{font-size:12px;font-weight:bold;display:inline-block;position:relative;top:4px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--teleport{width:203px;padding:45px 0 44px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--teleport svg{height:46px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--look{width:204px;padding:37px 0}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--look svg{height:56px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--speed{width:203px;padding:55px 0 45px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--speed svg{height:36px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__actions{text-align:center;margin-top:35px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__action{display:inline-block;width:240px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__action+.c-bimwalk-tooltip__action{margin-left:1px}',"",{version:3,sources:["webpack://./extensions/BimWalk/UI/NavigatorSimple.css"],names:[],mappings:"AAAA,qCAAqC,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,4BAA4B,CAAC,mBAAmB,CAAC,mEAAmE,CAAC,iEAAiE,CAAC,+DAA+D,CAAC,+DAA+D,CAAC,4DAA4D,CAAC,0CAA0C,eAAe,CAAC,0CAA0C,SAAS,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,4CAA4C,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,kCAAkC,CAAC,qCAAqC,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,SAAS,CAAC,mBAAmB,CAAC,yCAAyC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,8BAA8B,CAAC,ytDAAsC,CAAC,uBAAuB,CAAC,iDAAiD,UAAU,CAAC,kBAAkB,CAAC,kDAAkD,SAAS,CAAC,iDAAiD,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAuD,SAAS,CAAC,kBAAkB,CAAC,mDAAmD,gCAAgC,CAAC,0DAA0D,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,+BAA+B,CAAC,wDAAwD,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,wDAAwD,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,sDAAsD,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,sDAAsD,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,8EAA8E,eAAe,CAAC,2DAA2D,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,8DAA8D,iBAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,4DAA4D,iBAAiB,CAAC,gEAAgE,WAAW,CAAC,oBAAoB,CAAC,aAAa,CAAC,kDAAkD,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,8DAA8D,mBAAmB,CAAC,WAAW,CAAC,kEAAkE,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,2DAA2D,mBAAmB,CAAC,WAAW,CAAC,wDAAwD,WAAW,CAAC,oBAAoB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,uDAAuD,UAAU,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,4DAA4D,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,OAAO,CAAC,gEAAgE,WAAW,CAAC,mBAAmB,CAAC,oEAAoE,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,4DAA4D,WAAW,CAAC,cAAc,CAAC,gEAAgE,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,6DAA6D,WAAW,CAAC,mBAAmB,CAAC,iEAAiE,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,0DAA0D,iBAAiB,CAAC,eAAe,CAAC,yDAAyD,oBAAoB,CAAC,WAAW,CAAC,oFAAoF,eAAe",sourcesContent:['.adsk-viewing-viewer .bimwalk .speed{min-width:0;min-height:0;display:block;position:absolute;left:calc(50% - 83px);top:30px;width:160px;height:34px;opacity:0;transform:translate(0, 10px);pointer-events:none;webkit-transition:opacity .5s ease-in-out,transform .5s ease-in-out;-moz-transition:opacity .5s ease-in-out,transform .5s ease-in-out;-ms-transition:opacity .5 ease-in-out,transform .5s ease-in-out;-o-transition:opacity .5s ease-in-out,transform .5s ease-in-out;transition:opacity .5s ease-in-out,transform .5s ease-in-out}.adsk-viewing-viewer .bimwalk .speed-text{padding-top:8px}.adsk-viewing-viewer .bimwalk .speed.open{opacity:1;pointer-events:all;transform:translate(0, 0)}.adsk-viewing-viewer .bimwalk .tooltip-info{display:block;position:absolute;right:12px;cursor:pointer;top:10px;opacity:0;width:30px;height:30px;background-color:rgba(34,34,34,.4);box-shadow:0 1px 2px 0 rgba(0,0,0,.2);border-radius:50%;transition:opacity .2s ease;z-index:1;pointer-events:none}.adsk-viewing-viewer .bimwalk .info-icon{display:block;width:24px;height:24px;margin:2.5px 2.5px 2.5px 2.5px;background:url("icon-information.svg");background-size:contain}.adsk-viewing-viewer .bimwalk .tooltip-info.open{opacity:.7;pointer-events:all}.adsk-viewing-viewer .bimwalk .tooltip-info:hover{opacity:1}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip{position:absolute;top:0;bottom:0;left:0;right:0;opacity:0;pointer-events:none;overflow:auto;z-index:6}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip--open{opacity:1;pointer-events:all}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip *{box-sizing:border-box !important}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__content{position:absolute;top:50%;left:50%;width:620px;height:520px;transform:translate(-50%, -50%)}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__title{font-size:16px;font-weight:bold;display:block;text-align:center;margin-bottom:20px;line-height:19px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__close{position:absolute;top:5px;right:-30px;cursor:pointer}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__row{clear:left;height:135px;margin-bottom:5px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip{border-radius:5px;padding:28px 0;width:100%;position:relative;text-align:center;font-size:0;height:135px;display:block;float:left}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip+.c-bimwalk-tooltip__tip{margin-left:5px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__subtitle{position:absolute;left:14px;top:12px;font-size:14px;font-weight:bold}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__instruction{position:absolute;height:31px;left:14px;bottom:6px;font-size:12px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--walk{padding:26px 14px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--walk svg{height:79px;display:inline-block;margin:0 26px}.adsk-viewing-viewer .bimwalk .bimwalk-tooltip-or{font-size:12px;font-weight:bold;position:absolute;bottom:27px;left:50%;transform:translateX(-50%)}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--updown{padding:53px 0 45px;width:307px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--updown svg{height:37px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--run{padding:53px 0 45px;width:308px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__shift{height:37px;display:inline-block;margin:0;vertical-align:middle}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__plus{width:11px;display:inline-block;margin:0 16px 0 19px;vertical-align:middle}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__direction{font-size:12px;font-weight:bold;display:inline-block;position:relative;top:4px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--teleport{width:203px;padding:45px 0 44px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--teleport svg{height:46px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--look{width:204px;padding:37px 0}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--look svg{height:56px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--speed{width:203px;padding:55px 0 45px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--speed svg{height:36px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__actions{text-align:center;margin-top:35px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__action{display:inline-block;width:240px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__action+.c-bimwalk-tooltip__action{margin-left:1px}'],sourceRoot:""}]);const s=a},6314:A=>{"use strict";A.exports=function(A){var t=[];return t.toString=function(){return this.map((function(t){var i="",e=void 0!==t[5];return t[4]&&(i+="@supports (".concat(t[4],") {")),t[2]&&(i+="@media ".concat(t[2]," {")),e&&(i+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),i+=A(t),e&&(i+="}"),t[2]&&(i+="}"),t[4]&&(i+="}"),i})).join("")},t.i=function(A,i,e,o,n){"string"==typeof A&&(A=[[null,A,void 0]]);var a={};if(e)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=n),i&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=i):c[2]=i),o&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=o):c[4]="".concat(o)),t.push(c))}},t}},1354:A=>{"use strict";A.exports=function(A){var t=A[1],i=A[3];if(!i)return t;if("function"==typeof btoa){var e=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(e),n="/*# ".concat(o," */");return[t].concat([n]).join("\n")}return[t].join("\n")}},5072:A=>{"use strict";var t=[];function i(A){for(var i=-1,e=0;e{"use strict";var t={};A.exports=function(A,i){var e=function(A){if(void 0===t[A]){var i=document.querySelector(A);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(A){i=null}t[A]=i}return t[A]}(A);if(!e)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");e.appendChild(i)}},540:A=>{"use strict";A.exports=function(A){var t=document.createElement("style");return A.setAttributes(t,A.attributes),A.insert(t,A.options),t}},5056:(A,t,i)=>{"use strict";A.exports=function(A){var t=i.nc;t&&A.setAttribute("nonce",t)}},7825:A=>{"use strict";A.exports=function(A){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=A.insertStyleElement(A);return{update:function(i){!function(A,t,i){var e="";i.supports&&(e+="@supports (".concat(i.supports,") {")),i.media&&(e+="@media ".concat(i.media," {"));var o=void 0!==i.layer;o&&(e+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),e+=i.css,o&&(e+="}"),i.media&&(e+="}"),i.supports&&(e+="}");var n=i.sourceMap;n&&"undefined"!=typeof btoa&&(e+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n))))," */")),t.styleTagTransform(e,A,t.options)}(t,A,i)},remove:function(){!function(A){if(null===A.parentNode)return!1;A.parentNode.removeChild(A)}(t)}}}},1113:A=>{"use strict";A.exports=function(A,t){if(t.styleSheet)t.styleSheet.cssText=A;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(A))}}}},t={};function i(e){var o=t[e];if(void 0!==o)return o.exports;var n=t[e]={id:e,exports:{}};return A[e](n,n.exports,i),n.exports}i.n=A=>{var t=A&&A.__esModule?()=>A.default:()=>A;return i.d(t,{a:t}),t},i.d=(A,t)=>{for(var e in t)i.o(t,e)&&!i.o(A,e)&&Object.defineProperty(A,e,{enumerable:!0,get:t[e]})},i.o=(A,t)=>Object.prototype.hasOwnProperty.call(A,t),i.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},i.nc=void 0;var e={};(()=>{"use strict";i.r(e),i.d(e,{BimWalkExtension:()=>vA});var A=128,t=[],o=0,n={x:0,y:0,z:0};function a(i){for(var e=t.length;eA.worldup.z?t.y:t.z}function w(A,t,i){var e=0,o=0;return i.getNodeBox(A.dbId,r),t.worldup.y>t.worldup.z?(e=Math.abs(r[0]-r[3]),o=Math.abs(r[2]-r[5])):(e=Math.abs(r[0]-r[3]),o=Math.abs(r[1]-r[4])),Math.min(e,o)}function v(A,t){var i,e;if(null!==(i=A.face)&&void 0!==i&&i.normal)return g.copy(A.face.normal),A.model&&A.fragId?(A.model.getFragmentList().getWorldMatrix(A.fragId,c),d.getNormalMatrix(c),g.applyMatrix3(d)):null!==(e=A.object)&&void 0!==e&&e.matrixWorld&&(d.getNormalMatrix(A.object.matrixWorld),g.applyMatrix3(d)),Math.abs(1-g.lengthSq())>l&&g.normalize(),t.worldup.dot(g)}function m(A,t){return v(A,t)>=.5}function y(A,t){const i=v(A,t);return i>=0&&i<=.1}function C(A,t,i,e,o,n,s,r,l,c){var d=s.impl.camera,g=a(d.worldup),p=a(A).add(g.multiplyScalar(i)),h=a(g).multiplyScalar(-1),v=i+t;const C={skipLines:!0,skipPoints:!0};c&&(C.maxDistance=v),s.impl.rayIntersect(new THREE.Ray(p,h),!1,!1,!1,r,C);var k=r.length;if(0===k)return-1;if(1===k){if(!m(r[0],d))return-1;var M=i*i;return r[0].point.distanceToSquared(A)i&&E.distancen&&(L=f);else L=f;if(!(E.distancej&&(b=j,N=T)}}}return N}function k(A,t,i){var e=t.lengthSq();if(e>0){var o=a();o.copy(t).normalize().multiplyScalar(-1),o.multiplyScalar(A*A),i.add(o)}return e>0}function M(A,t,i,e,o,n){var s=a(n);s.add(t.multiplyScalar(A)),e&&s.lengthSq()>i*i&&(s.normalize(),s.multiplyScalar(i)),o&&(s.lengthSq()\n \n \n \n\n',T=Autodesk.Viewing,E=T.Private;function L(A){this.viewer=A.viewer,this.setGlobalManager(this.viewer),this.tool=A.tool,this.onTemplate=this.onTemplate.bind(this);const t=this.getDocument();this.div=t.createElement("div"),this.opened=!1,this.onTemplate(null,x)}var j=L.prototype;T.GlobalManagerMixin.call(j),j.showToolTipUI=function(A){this.viewer.container.appendChild(this.div),this.div.querySelector("#dontRemind").style.display=A?"none":"",this.div.querySelector("#tooltipPanel").classList.add("c-bimwalk-tooltip--open"),this.opened=!0},j.hideToolTipUI=function(){this.div.querySelector("#tooltipPanel").classList.remove("c-bimwalk-tooltip--open"),this.opened=!1},j.onTemplate=function(A,t){if(A)return void E.logger.error("Failed to show BimWalk guide.");var i=this.getDocument().createElement("div");i.innerHTML=t,this.div.appendChild(i.childNodes[0]),this.div.querySelector("#tooltipOk").addEventListener("click",this.hideToolTipUI.bind(this)),this.div.querySelector("#dontRemind").addEventListener("click",function(){this.viewer.setBimWalkToolPopup(!1),this.hideToolTipUI.bind(this)}.bind(this)),this.div.addEventListener("click",function(){this.hideToolTipUI()}.bind(this)),Autodesk.Viewing.i18n.localize(this.div)};var z=i(5072),I=i.n(z),S=i(7825),_=i.n(S),O=i(7659),B=i.n(O),U=i(5056),F=i.n(U),Q=i(540),P=i.n(Q),R=i(1113),V=i.n(R),G=i(4529),W={};W.styleTagTransform=V(),W.setAttributes=F(),W.insert=B().bind(null,"head"),W.domAPI=_(),W.insertStyleElement=P();I()(G.A,W);G.A&&G.A.locals&&G.A.locals;var Y=Autodesk.Viewing;function H(A){this.viewer=A.viewer,this.setGlobalManager(this.viewer.globalManager),this.tool=A.tool,this.opened=!1,this.hideTimeoutID,this.dontRemindAgain_Message=!1,this.tooltip=new L(this);var t='
'+(0,Autodesk.Viewing.i18n.translate)("Walk Speed")+'
';var i=this.getDocument().createElement("div");i.innerHTML=t,this.div=i.childNodes[0],this.infoIcon=this.div.childNodes[0],this.onSpeedChange=this.onSpeedChange.bind(this),this.tool.options.disableBimWalkInfoIcon&&(this.infoIcon.style.visibility="hidden")}var Z=H.prototype;Y.GlobalManagerMixin.call(Z),Z.activate=function(){if(this.viewer.container.appendChild(this.div),this.viewer.addEventListener(Y.EVENT_BIMWALK_CONFIG_CHANGED,this.onSpeedChange),this.viewer.getExtension("Autodesk.ViewCubeUi",(function(A){A.displayViewCube(!1),A.displayHomeButton(!1)})),!Y.isMobileDevice()){var A=this.div.querySelector("#tooltip-info");A.classList.add("open");var t=this;A.addEventListener("click",(function(){t.tooltip.showToolTipUI(!0)}))}this.viewer.getBimWalkToolPopup()&&this.tooltip.showToolTipUI(!1)},Z.deactivate=function(){(this.viewer.removeEventListener(Y.EVENT_BIMWALK_CONFIG_CHANGED,this.onSpeedChange),this.speedHide(),this.div.querySelector("#speed").classList.remove("open"),Y.isMobileDevice())||(this.div.querySelector("#tooltip-info").classList.remove("open"),this.tooltip.hideToolTipUI());this.viewer.getExtension("Autodesk.ViewCubeUi",(function(A){A.displayViewCube(!0),A.displayHomeButton(!0)}))},Z.isDialogOpen=function(){return this.tooltip.opened},Z.onKeyDown=function(){return!!this.tooltip.opened&&(this.tooltip.hideToolTipUI(),!0)},Z.onSpeedChange=function(A){if("topWalkSpeed"===A.data.configuration){var t=this;this.div.querySelector("#speed").classList.add("open"),this.div.querySelector(".value").textContent=A.data.value,this.hideTimeoutID=setTimeout((function(){t.speedHide()}),5e3),t.opened=!0}},Z.speedHide=function(){this.opened&&(this.div.querySelector("#speed").classList.remove("open"),this.opened=!1,clearTimeout(this.hideTimeoutID))},Z.showInfoIcon=function(A){const t=A?"":"hidden";this.infoIcon.style.visibility=t};var K={x:0,y:0},J=Autodesk.Viewing.Private;function q(A){N.call(this,A),this.configuration={minWalkSpeed:2,maxWalkSpeed:6,topWalkSpeed:4,minRunSpeed:4,maxRunSpeed:12,runMultiplier:2,mouseWalkMaxTargetDistance:2,mouseWalkStopDuration:.5,topVerticalSpeed:2,topVerticalSpeedMultiplier:1.5,allowVerticalSuspension:!1,panDistanceMultiplier:150,pinchDistanceMultiplier:250,keyboardTopTurnSpeed:1.5,keyboardTurnStopDuration:.75,mouseTurnInverted:!1,mouseTurnStopDuration:.2,mouseTurnMinPitchLimit:THREE.Math.degToRad(20),mouseTurnMaxPitchLimit:THREE.Math.degToRad(160),teleportDuration:.5,teleportWallDistance:1,cameraDistanceFromFloor:1.8,minAllowedRoofDistance:.6,smallAllowedVerticalStep:.3,bigAllowedVerticalStep:.6,minFloorSidesLengthForBigVerticalStep:5,gravityUpdatesBeforeFalling:10,gravityAcceleration:9.8,gravityTopFallSpeed:10},this.modelToMeters=1,this.metersToModel=1,this.keys=Autodesk.Viewing.KeyCode,this.mousePosition=new THREE.Vector2(0,0),this.moveForward=0,this.moveBackward=0,this.moveLeft=0,this.moveRight=0,this.moveKeyboardVelocity=new THREE.Vector3,this.moveMouseTargetDistance=0,this.moveMouseLastWheelDelta=0,this.moveMouseVelocity=new THREE.Vector3,this.moveMouseLastVelocity=new THREE.Vector3,this.mouseForwardDirection=new THREE.Ray,this.turningWithMouse=!1,this.turnMouseDelta=new THREE.Vector3,this.turnMouseLastVelocity=new THREE.Vector3,this.turnLeft=0,this.turnRight=0,this.angularKeyboardVelocity=new THREE.Vector3,this.angularMouseVelocity=new THREE.Vector3,this.moveUp=0,this.moveDown=0,this.moveUpDownKeyboardVelocity=new THREE.Vector3,this.gravityEnabled=this.viewer.prefs.get(J.Prefs3D.BIM_WALK_GRAVITY),this.movingUpOrDown=!1,this.userOverFloor=!1,this.fallingToCandidate=null,this.gravityVelocity=new THREE.Vector3,this.updatesToStartFalling=0,this.teleporting=!1,this.teleportInitial=new THREE.Vector3,this.teleportTarget=new THREE.Vector3,this.teleportTime=0,this.teleportVelocity=new THREE.Vector3,this.teleportedDistance=0,this.ui=new H(this),this.modelAddedCb=this.updateUnits.bind(this),this.lastPanPosition=new THREE.Vector2,this.lastPinchDistance=new THREE.Vector2,this.isPinching=!1,this.isDragging=!1,this.immediateDisplacement=!1,this.enableGravity=this.enableGravity.bind(this)}q.prototype=Object.create(N.prototype),q.prototype.constructor=q;var X=q.prototype;function $(A,t){var i=A.impl.getCanvasBoundingClientRect(),e=(t.pointers[1].clientX-t.pointers[0].clientX)/i.width,o=(t.pointers[1].clientY-t.pointers[0].clientY)/i.height;return Math.sqrt(e*e+o*o)}X.set=function(A,t){var i=N.prototype.set.call(this,A,t),e=this.get("minWalkSpeed"),o=this.get("maxWalkSpeed");return this.configuration.topWalkSpeed=Math.min(Math.max(this.configuration.topWalkSpeed,e),o),i},X.getTopRunSpeed=function(){var A=this.get("minRunSpeed"),t=this.get("maxRunSpeed"),i=this.get("topWalkSpeed")*this.get("runMultiplier");return Math.min(Math.max(i,A,t))},X.getMinPitchLimit=function(){return this.get("mouseTurnMinPitchLimit")},X.getMaxPitchLimit=function(){return this.get("mouseTurnMaxPitchLimit")},X.activate=function(){this.updateUnits(),this.userOverFloor=!1,this.fallingToCandidate=null,this.ui.activate(),this.viewer.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,this.modelAddedCb),this.viewer.prefs.addListeners(J.Prefs3D.BIM_WALK_GRAVITY,this.enableGravity)},X.deactivate=function(){this.viewer.removeEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,this.modelAddedCb),this.viewer.prefs.removeListeners(J.Prefs3D.BIM_WALK_GRAVITY,this.enableGravity),this.moveForward=this.moveBackward=0,this.moveLeft=this.moveRight=0,this.moveUp=this.moveDown=0,this.moveKeyboardVelocity.set(0,0,0),this.moveUpDownKeyboardVelocity.set(0,0,0),this.ui.deactivate()},X.updateUnits=function(){this.viewer.impl.model&&(this.metersToModel=p(1,this.viewer),this.modelToMeters=1/this.metersToModel)},X.enableGravity=function(A){this.gravityEnabled!==A&&(this.gravityEnabled=A,this.resetGravity())},X.resetGravity=function(){this.gravityVelocity.set(0,0,0),this.userOverFloor=!1,this.fallingToCandidate=null,this.updatesToStartFalling=Number.MAX_VALUE},X.update=function(A,t,i,e){if(this.velocity.set(0,0,0),this.angularVelocity.set(0,0,0),!this.ui.isDialogOpen||!this.ui.isDialogOpen())return this.viewer.autocam.currentlyAnimating?(this.userOverFloor=!1,this.fallingToCandidate=null,void(this.updatesToStartFalling=this.get("gravityUpdatesBeforeFalling"))):void(this.teleporting?(this.updateTeleportDisplacement(A),this.velocity.add(this.teleportVelocity)):(this.immediateDisplacement||(this.updateKeyboardUpDownDisplacement(A),this.updateGravityDisplacement(A,t,i,e),this.updateKeyboardDisplacement(A),this.updateMouseDisplacement(A)),this.velocity.add(this.gravityVelocity),this.velocity.add(this.moveUpDownKeyboardVelocity),this.velocity.add(this.moveKeyboardVelocity),this.velocity.add(this.moveMouseVelocity),this.updateKeyboardAngularVelocity(A),this.updateGyroscopeVelocity(),this.updateMouseAngularVelocity(A),this.angularVelocity.add(this.angularKeyboardVelocity),this.angularVelocity.add(this.angularMouseVelocity)))},X.updateTeleportDisplacement=function(A){var t=this.teleportInitial,i=this.teleportTarget,e=this.get("teleportDuration"),o=this.teleportVelocity;this.teleportTime=Math.min(e,this.teleportTime+A);var n,a,s,r=(n=this.teleportTime,a=0,s=1,(n/=e/2)<1?s/2*n*n+a:-s/2*(--n*(n-2)-1)+a),l=t.distanceTo(i)*r,c=this.teleportedDistance;this.teleportedDistance=l,1===r&&(this.teleporting=!1,this.fallingToCandidate=null,this.teleportTime=0,this.teleportedDistance=0),o.copy(i),o.sub(t).normalize(),o.multiplyScalar((l-c)*this.modelToMeters/A)},X.updateGravityDisplacement=function(A,t,i,e){if(this.ignoreGravity)return void this.resetGravity();var o=this.viewer,n=a(t.worldup).multiplyScalar(-1),s=this.gravityVelocity;if(this.userOverFloor=this.userOverFloor&&0===this.moveMouseVelocity.lengthSq()&&0===this.moveKeyboardVelocity.lengthSq()&&0===this.moveUpDownKeyboardVelocity.lengthSq(),!this.gravityEnabled||this.movingUpOrDown)return;if(this.userOverFloor)return void s.set(0,0,0);0!==this.moveKeyboardVelocity.lengthSq()&&(this.fallingToCandidate=null);var r=[],l=[],c=this.metersToModel,d=this.get("cameraDistanceFromFloor"),g=this.get("minAllowedRoofDistance"),p=this.get("smallAllowedVerticalStep"),h=this.get("bigAllowedVerticalStep"),u=this.get("minFloorSidesLengthForBigVerticalStep");const w=A=>C(t.position,d*c,g*c,p*c,h*c,u*c,o,r,l,A);var v=w(!0);let m;if(-1===v?null!==this.fallingToCandidate?m=this.fallingToCandidate:-1!==(v=w(!1))&&(m=r[v]):m=r[v],!m||l.length>0)s.set(0,0,0);else{var y=m.point.distanceTo(t.position)*this.modelToMeters-d;if(y<1e-4||Math.abs(y)0;if(c&&!d){var g=t.camera.worldup,p=s.length(),h=a(g),u=a(g).multiplyScalar(-1);r.add(h.multiplyScalar(e)),r.add(u.multiplyScalar(o)),r.normalize(),s.copy(r).multiplyScalar(p),r.multiplyScalar(l)}else s.set(0,0,0);this.gravityEnabled&&c!==this.movingUpOrDown&&this.resetGravity(),this.movingUpOrDown=c;var w=a();!i&&s.lengthSq()>n*n&&(w.copy(s).normalize(),w.multiplyScalar(-this.getTopRunSpeed()/1),r.copy(w));M(A,r,n,0===w.lengthSq(),!1,s)},X.updateKeyboardDisplacement=function(A){var t=this.running,i=this.moveForward,e=this.moveBackward,o=this.moveLeft,n=this.moveRight,s=t?this.getTopRunSpeed():this.get("topWalkSpeed"),r=this.moveKeyboardVelocity,l=a(),c=s/1,d=0!==i||0!==e||0!==o||0!==n;if(d){var g=this.tool.camera,p=g.worldup,h=r.length(),u=D(g),w=a(u);w.sub(a(p).multiplyScalar(p.dot(u))),w.normalize();var v=a(u).cross(p).normalize(),m=a(v);m.sub(a(p).multiplyScalar(p.dot(v))),m.normalize();var y=a(w).multiplyScalar(-1),C=a(v).multiplyScalar(-1);l.add(w.multiplyScalar(i)),l.add(y.multiplyScalar(e)),l.add(m.multiplyScalar(n)),l.add(C.multiplyScalar(o)),l.normalize(),r.copy(l).multiplyScalar(h),l.multiplyScalar(c)}var f=a();!t&&r.lengthSq()>s*s&&(f.copy(r).normalize(),f.multiplyScalar(-this.getTopRunSpeed()/1),l.copy(f));var N=!d&&k(c,r,l);M(A,l,s,0===f.lengthSq(),N,r)},X.calculateMouseDisplacementSpeed=function(A,t,i){return t.length()+i*A},X.updateMoveMouseTargetDistance=function(A,t,i){var e=t.length()*A;this.moveMouseTargetDistance+=i<0?e:-e,this.moveMouseTargetDistance*i<0&&(this.moveMouseTargetDistance=0)},X.updateMouseDisplacement=function(A){var t=this.getTopRunSpeed(),i=this.moveMouseTargetDistance,e=this.moveMouseVelocity,o=a(),n=0!==this.moveMouseTargetDistance,s=(n?t:this.moveMouseLastVelocity.length())/this.get("mouseWalkStopDuration");if(n){var r=this.tool.camera.worldup,l=this.mouseForwardDirection,c=this.viewer.impl.clientToViewport(this.mousePosition.x,this.mousePosition.y);this.viewer.impl.viewportToRay(c,l);var d=l.direction;d.sub(a(r).multiplyScalar(r.dot(d))),d.normalize(),i>0&&d.multiplyScalar(-1);var g=this.calculateMouseDisplacementSpeed(A,e,s);e.copy(d.multiplyScalar(g)),this.moveMouseLastVelocity.copy(e),this.fallingToCandidate=null}M(A,o,t,!0,!n&&k(s,e,o),e),n&&this.updateMoveMouseTargetDistance(A,e,i)},X.updateKeyboardAngularVelocity=function(A){var t=this.get("keyboardTopTurnSpeed"),i=this.get("keyboardTurnStopDuration"),e=this.angularKeyboardVelocity,o=a(),n=t/i,s=0!==this.turnLeft||0!==this.turnRight;if(s){var r=Math.min(t,e.length()+n*A);e.y=0,e.y-=this.turnLeft,e.y+=this.turnRight,e.normalize().multiplyScalar(r)}M(A,o,t,!0,!s&&k(n,e,o),e)},X.updateMouseAngularVelocity=function(A){if(!this.isGyroEnabled){var t=this.get("mouseTurnStopDuration"),i=this.angularMouseVelocity,e=a(),o=this.turnMouseLastVelocity.length()/t,n=this.turnMouseDelta,s=n.lengthSq()>0;if(s){var r=.005*-n.y,l=.005*-n.x;n.set(0,0,0),i.add(a().set(r/A,l/A,0)),i.multiplyScalar(.5),this.turnMouseLastVelocity.copy(i)}M(A,e,0,!1,!s&&k(o,i,e),i)}},X.updateGyroscopeVelocity=function(){},X.addDeviceOrientationInputListener=function(){},X.removeDeviceOrientationInputListener=function(){},X.jumpToFloor=function(A){const t=this.viewer.getExtension("Autodesk.AEC.LevelsExtension");if(!t)return void console.warn('BimWalk.jumpToFloor can be used only when "Autodesk.AEC.LevelsExtension" is loaded.');const i=t.floorSelector.floorData;if(!i.length)return void console.warn("BimWalk.jumpToFloor - No floor data available");const e=i[A];if(e){const A=this.viewer.impl.camera;let t=e.zMin+this.get("cameraDistanceFromFloor")*this.metersToModel;t>=e.zMax&&(t=(e.zMin+e.zMax)/2);const i=A.position.clone().setZ(t);this.teleportInitial.copy(A.position),this.teleportTarget.copy(i),this.teleporting=!0,this.teleportTime=0}else console.warn("BimWalk.jumpToFloor - the given floor index is not available.")},X.getCursor=function(){return this.get("mouseTurnInverted")?this.turningWithMouse?"url(data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAcAAAAHgAAABwAAAAJAAAAAQAAABQAAAAbAQEBBwEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8ACAgIfD4+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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////wB///8Af//+AH///AB///gAP//4AB//8AAf//AAH//wAB//8AAf//wAH//8AB///AA//h+A//4f///+D////gf///4D///+A////wP///////////////////////////////////////8=), auto":"url(data:image/x-icon;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////8AP///AD///wA///4AP//8AB///AAP//gAD//wAA//8AAP//AAB//wAAf/8AAH//wAB//4AAf/+AA//wwAf/8OQv//B+f//wP///8B////Af///4H//////////////////////////////////8=), auto":"url(data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////8AAAD/AAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////+P////j////4////+P////j////4////+P////j////4////+P////j////4////////AA+ABwAPgAcAD4AH///////4////+P////j////4////+P////j////4////+P////j////4////+P////j////////////8=) 16 16, auto"},X.ignoreInput=function(){return this.teleporting},X.handleButtonDown=function(A,t){return this.viewer.navigation.getIsLocked()||(h(A,this.viewer,this.mousePosition),0===t&&(this.turningWithMouse=!0,this.turnMouseDelta.set(0,0,0))),!0},X.handleButtonUp=function(A,t){return h(A,this.viewer,this.mousePosition),0===t&&(this.turningWithMouse=!1),!0},X.handleMouseClick=function(A,t){return h(A,this.viewer,this.mousePosition),!1},X.handleMouseDoubleClick=function(A,t){if(this.tool.options.disableBimWalkFlyTo)return!0;var i=function(A){this.teleporting=!0,this.teleportTime=0;var t=this.viewer.impl.camera;this.teleportInitial.copy(t.position);var i=a(t.worldup);i.multiplyScalar(this.get("cameraDistanceFromFloor")*this.metersToModel),this.teleportTarget.copy(A.intersectPoint).add(i),this.teleportVelocity.set(0,0,0)}.bind(this),e=function(A){var t=this.viewer,i=this.viewer.impl.camera,e=this.metersToModel,o=this.get("cameraDistanceFromFloor"),n=a(i.worldup).multiplyScalar(o*e),s=a(i.position),r=a(A.intersectPoint);r.sub(i.position),function(A,t,i){return A.worldup.y>A.worldup.z?t.y=i:t.z=i,t}(i,r,0).normalize();var l=a(A.intersectPoint);l.add(r.multiplyScalar(this.get("teleportWallDistance")*e)),l.add(n);var c=[],d=C(l,o*e,this.get("minAllowedRoofDistance")*e,0,this.get("bigAllowedVerticalStep")*e,this.get("minFloorSidesLengthForBigVerticalStep")*e,t,c);-1!==d&&(l.copy(c[d].point).add(n),this.teleporting=!0,this.teleportTime=0,this.teleportInitial.copy(s),this.teleportTarget.copy(l))}.bind(this);if(this.teleporting)return!0;var o=this.viewer;h(A,0,this.mousePosition);var n=this.mousePosition,s=o.impl.clientToViewport(n.x,n.y),r=o.impl.camera,l=o.impl.castRayViewport(s,!1,!1,!1);return l&&l.face&&(m(l,r)&&i(l),y(l,r)&&e(l)),!0},X.handleMouseMove=function(A){var t=this.mousePosition,i=K;return h(A,this.viewer,i),this.turningWithMouse&&(this.get("mouseTurnInverted")?(this.turnMouseDelta.x+=i.x-t.x,this.turnMouseDelta.y+=i.y-t.y):(this.turnMouseDelta.x-=i.x-t.x,this.turnMouseDelta.y-=i.y-t.y)),this.mousePosition.copy(i),this.turningWithMouse},X.shouldOrbit=function(){if(!this.getBestFloorCandidate())return!0;const A=this.viewer.impl.getVisibleBounds(),t=this.viewer.getCamera().position;return!A.containsPoint(t)},X.handleGesture=function(A){A.pointers&&A.pointers.length>0&&(A.pageX=A.pointers[0].pageX,A.pageY=A.pointers[0].pageY);var t=!1;switch(A.type){case"dragstart":if(this.ignoreGravity=!0,this.shouldOrbit())return!1;this.isDragging=!0,t=this.handleButtonDown(A,0);break;case"dragmove":if(!this.isDragging)return!1;t=this.handleMouseMove(A);break;case"dragend":if(!this.isDragging)return!1;this.isDragging=!1,t=this.handleButtonUp(A,0);break;case"panstart":case"pinchstart":return this.ignoreGravity=!0,this.shouldOrbit()?!1:(this.isPinching=!0,this.lastPinchDistance=$(this.viewer,A),h(A,this.viewer,this.mousePosition),this.lastPanPosition.copy(this.mousePosition),!0);case"panmove":case"pinchmove":{if(!this.isPinching)return!1;const t=this.viewer.impl.getCanvasBoundingClientRect(),i=this.tool.camera.worldup,e=a(D(this.tool.camera)).cross(i).normalize(),o=$(this.viewer,A),n=o-this.lastPinchDistance,s=this.viewer.impl.clientToViewport(this.mousePosition.x,this.mousePosition.y);this.viewer.impl.viewportToRay(s,this.mouseForwardDirection);const r=this.mouseForwardDirection.direction;r.sub(a(i).multiplyScalar(i.dot(r))),r.normalize(),this.moveMouseVelocity.copy(r.multiplyScalar(n*this.get("pinchDistanceMultiplier"))),h(A,this.viewer,K);let l=(K.y-this.lastPanPosition.y)/t.height;return this.moveUpDownKeyboardVelocity.copy(i).multiplyScalar(l*this.get("panDistanceMultiplier")),l=(K.x-this.lastPanPosition.x)/t.width,this.moveKeyboardVelocity.copy(e).multiplyScalar(-l*this.get("panDistanceMultiplier")),this.immediateDisplacement=!0,this.tool.update(),this.immediateDisplacement=!1,this.lastPinchDistance=o,this.lastPanPosition.copy(K),this.moveUpDownKeyboardVelocity.set(0,0,0),this.moveMouseVelocity.set(0,0,0),this.moveKeyboardVelocity.set(0,0,0),!0}case"panend":case"pinchend":return!!this.isPinching&&(this.isPinching=!1,!0);case"rotatestart":case"rotatemove":case"rotateend":return this.ignoreGravity=!0,!0}return t},X.handleKeyDown=function(A,t){var i=!0;switch(t){case this.keys.SHIFT:this.running=!0;break;case this.keys.DASH:{const A=this.get("topWalkSpeed")-1;this.tool.set("topWalkSpeed",A);break}case this.keys.EQUALS:case this.keys.PLUS:case this.keys.PLUSMOZ:{const A=this.get("topWalkSpeed")+1;this.tool.set("topWalkSpeed",A);break}case this.keys.CONTROL:case this.keys.ALT:break;case this.keys.SPACE:this.enableGravity(!this.gravityEnabled);break;case this.keys.UP:case this.keys.w:this.moveForward=1;break;case this.keys.LEFT:this.turnLeft=1;break;case this.keys.RIGHT:this.turnRight=1;break;case this.keys.DOWN:case this.keys.s:this.moveBackward=1;break;case this.keys.a:this.moveLeft=1;break;case this.keys.d:this.moveRight=1;break;case this.keys.e:this.moveUp=1;break;case this.keys.q:this.moveDown=1;break;default:i=!1}return this.running=A.shiftKey,this.ui.onKeyDown&&(i|=this.ui.onKeyDown(A,t)),i},X.getBestFloorCandidate=function(){var A=this.viewer,t=this.viewer.impl.camera,i=this.metersToModel,e=this.get("cameraDistanceFromFloor"),o=a(t.position);o.add(a(t.worldup).multiplyScalar(1.5*i));var n=[],s=this.get("minFloorSidesLengthForBigVerticalStep"),r=C(o,e*i,Number.MAX_SAFE_INTEGER,0,0,s*i,A,n);return-1===r?null:n[r]},X.handleKeyUp=function(A,t){var i=function(){var A=this.viewer.impl.camera,t=this.metersToModel,i=this.get("cameraDistanceFromFloor"),e=a(A.worldup).multiplyScalar(i*t),o=a(A.position),n=a(A.position);n.add(a(A.worldup).multiplyScalar(1.5*t));var s=this.getBestFloorCandidate();s&&(n.copy(s.point).add(e),this.teleporting=!0,this.teleportTime=0,this.teleportInitial.copy(o),this.teleportTarget.copy(n))}.bind(this),e=!0,o=this.moveUp,n=this.moveDown;switch(t){case this.keys.SHIFT:this.running=!1;break;case this.keys.CONTROL:case this.keys.ALT:case this.keys.SPACE:break;case this.keys.UP:case this.keys.w:this.moveForward=0;break;case this.keys.LEFT:this.turnLeft=0;break;case this.keys.RIGHT:this.turnRight=0;break;case this.keys.DOWN:case this.keys.s:this.moveBackward=0;break;case this.keys.a:this.moveLeft=0;break;case this.keys.d:this.moveRight=0;break;case this.keys.e:this.moveUp=0;break;case this.keys.q:this.moveDown=0;break;default:e=!1}return 0!==this.moveUp||0!==this.moveDown||this.moveUp===o&&this.moveDown===n||this.gravityEnabled&&i(),this.running=A.shiftKey,e},X.applyDeltaToMouseTargetDistance=function(A){var t=this.moveMouseTargetDistance,i=this.get("mouseWalkMaxTargetDistance"),e=Math.min(i,Math.abs(t+.5*A))*(A>0?1:-1);return this.moveMouseTargetDistance=e,!0},X.handleWheelInput=function(A){return!!this.viewer.navigation.getIsLocked()||(this.tool.navapi.getReverseZoomDirection()&&(A*=-1),this.applyDeltaToMouseTargetDistance(A))},X.handleSingleClick=function(A,t){return!1},X.handleSingleTap=function(A){return!1},X.handleDoubleTap=function(A){return!0},X.handleBlur=function(A){return this.moveForward=this.moveBackward=0,this.moveLeft=this.moveRight=0,this.moveUp=this.moveDown=0,!1};var AA=i(1759),tA={};tA.styleTagTransform=V(),tA.setAttributes=F(),tA.insert=B().bind(null,"head"),tA.domAPI=_(),tA.insertStyleElement=P();I()(AA.A,tA);AA.A&&AA.A.locals&&AA.A.locals;function iA(A,t,i){var e=A;this.setGlobalManager(A.globalManager);var o=t,n=i||{},a=null,s=null,r=null,l=null,c=null,d=null,g=null,p=n.backCircleRadius||75,h=n.frontCircleRadius||37.5,u=n.xOffsetFromCorner||100,w=n.yOffsetFromCorner||100,v=n.threshold||.1,m=null,y=!1;o.reverseDrag=-1,this.updateJoystickHandlePosition=function(A,t){var i=new THREE.Vector2(A-m.x,t-m.y),e=Math.min(i.length(),h);return i.normalize(),i.multiplyScalar(e),i.add(m),s.style.left=i.x-h+"px",s.style.top=i.y-h+"px",i},this.changeJoystickColor=function(A){A?(s.classList.toggle("focus",!0),r.classList.toggle("focus",!0),s.classList.remove("transition")):(s.classList.remove("focus"),r.classList.remove("focus"),s.classList.toggle("transition",!0))},this.updateNavigator=function(A){if(A){var t=(m.x-A.x)/p,i=(m.y-A.y)/p;o.moveForward=0,o.moveBackward=0,o.moveLeft=0,o.moveRight=0,o.turningWithKeyboard=!1,i>v?o.moveForward=i:i<-v&&(o.moveBackward=-i),t>v?(o.moveLeft=t,o.turningWithKeyboard=!0):t<-v&&(o.moveRight=-t,o.turningWithKeyboard=!0),this.updateArrowColor(l,0!==o.moveForward),this.updateArrowColor(c,0!==o.moveBackward),this.updateArrowColor(d,0!==o.moveLeft),this.updateArrowColor(g,0!==o.moveRight)}},this.handleGesture=function(A){var t=null;switch(A.type){case"dragstart":y=!0,this.changeJoystickColor(!0),t=this.updateJoystickHandlePosition(A.center.x,A.center.y),o.ignoreGravity=!1;break;case"dragmove":y&&(this.changeJoystickColor(!0),t=this.updateJoystickHandlePosition(A.center.x,A.center.y));break;case"dragend":y&&(this.changeJoystickColor(!1),t=this.updateJoystickHandlePosition(m.x,m.y),y=!1)}this.updateNavigator(t),A.preventDefault()},this.setJoystickPosition=function(A,t){s.classList.remove("transition");var i=e.impl.getCanvasBoundingClientRect();A+=i.left,t+=i.top,m=new THREE.Vector2(A,t),s.style.left=m.x-h+"px",s.style.top=m.y-h+"px",a.style.left=m.x-p+"px",a.style.top=m.y-p+"px"},this.setJoystickRelativePosition=function(){u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,w=arguments.length>1&&void 0!==arguments[1]?arguments[1]:w;var A=e.container.clientWidth-p-u,t=e.container.clientHeight-p-w;this.setJoystickPosition(A,t)},this.setJoystickPositionRelativeToCorner=function(){this.setJoystickRelativePosition()},this.setJoystickSize=function(A,t){p=A,a.style.width=2*p+"px",a.style.height=2*p+"px",h=t,s.style.width=2*h+"px",s.style.height=2*h+"px",m&&this.setJoystickPosition(m.x,m.y)},this.updateArrowColor=function(A,t){t&&!A.classList.contains("active")?A.classList.add("active"):!t&&A.classList.contains("active")&&A.classList.remove("active")},this.init=function(){if(!a){const t=this.getDocument();(a=t.createElement("div")).className="mobile-joystick",e.container.appendChild(a),a.classList.add(e.theme),(r=t.createElement("div")).className="mobile-joystick mobile-joystick-back-circle",a.appendChild(r),(s=t.createElement("div")).className="mobile-joystick mobile-joystick-handle",this.changeJoystickColor(!1),a.appendChild(s);const i=t.createElement("div");i.className="mobile-joystick mobile-joystick-inner-circle",s.appendChild(i),(l=t.createElement("div")).className="mobile-joystick-arrow arrow-up",a.appendChild(l),(g=t.createElement("div")).className="mobile-joystick-arrow arrow-right",a.appendChild(g),(c=t.createElement("div")).className="mobile-joystick-arrow arrow-down",a.appendChild(c),(d=t.createElement("div")).className="mobile-joystick-arrow arrow-left",a.appendChild(d),this.setJoystickSize(p,h),this.setJoystickPositionRelativeToCorner();var A=Autodesk.Viewing;this.hammer=new A.Hammer.Manager(s,{recognizers:[A.GestureRecognizers.drag],handlePointerEventMouse:!1,inputClass:A.Hammer.TouchInput}),this.hammer.on("dragstart dragmove dragend",this.handleGesture.bind(this)),this.onOrientationChanged=this.setJoystickPositionRelativeToCorner.bind(this)}},this.init(),this.activate=function(){this.updateJoystickHandlePosition(m.x,m.y),a.classList.toggle("visible",!0),e.addEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this.onOrientationChanged)},this.deactivate=function(){a.classList.remove("visible"),y=!1,e.removeEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this.onOrientationChanged)}}Autodesk.Viewing.GlobalManagerMixin.call(iA.prototype);const eA=125e-7;function oA(A){q.call(this,A),this.viewer.setGlobalManager(A.viewer.globalManager),this.configuration.keyboardTopTurnSpeed=.5,this.configuration.keyboardTurnStopDuration=.4,this.configuration.mouseTurnInverted=!0,this.ui=new iA(this.viewer,this,A.options.joystickOptions)}let nA;oA.prototype=Object.create(q.prototype),oA.prototype.constructor=oA;const aA=new THREE.Quaternion;let sA=new THREE.Matrix4;const rA=new THREE.Quaternion(0,0,-Math.sqrt(.5),Math.sqrt(.5));var lA=oA.prototype;lA.activate=function(){q.prototype.activate.call(this),this.ignoreGravity=!0;const A=this.viewer.getCamera().worldup;this.worldUpAxis=Object.keys(A).find((t=>1===A[t]))},lA.deactivate=function(){q.prototype.deactivate.call(this),this.deactivateGyroNavigation()},lA.updateKeyboardDisplacement=function(A){var t=this.running,i=this.moveForward,e=this.moveBackward,o=t?this.getTopRunSpeed():this.get("topWalkSpeed"),n=this.moveKeyboardVelocity,s=a(),r=15*o,l=0!==i||0!==e;if(l){var c=this.tool.camera,d=c.worldup,g=Math.max(this.moveForward,this.moveBackward),p=D(c),h=a(p);h.sub(a(d).multiplyScalar(d.dot(p))),h.normalize();var u=a(h).multiplyScalar(-1);s.add(h.multiplyScalar(i)),s.add(u.multiplyScalar(e)),s.normalize(),n.copy(s).multiplyScalar(g),s.multiplyScalar(r*Math.max(this.moveForward,this.moveBackward))}var w=a();!t&&n.lengthSq()>o*o&&(w.copy(n).normalize(),w.multiplyScalar(-this.getTopRunSpeed()/1),s.copy(w));var v=!l&&k(r,n,s);M(A,s,o,0===w.lengthSq(),v,n)},lA.updateKeyboardAngularVelocity=function(A){var t=this.get("keyboardTopTurnSpeed"),i=this.get("keyboardTurnStopDuration"),e=this.angularKeyboardVelocity,o=a(),n=t/i,s=this.turningWithKeyboard;if(s){var r=Math.min(t,Math.max(this.moveLeft,this.moveRight)+n*A);e.y=0,e.y-=this.moveLeft,e.y+=this.moveRight,e.normalize().multiplyScalar(r)}M(A,o,t,!0,!s&&k(n,e,o),e)},lA.updateGyroscopeVelocity=function(){if(!this.isGyroEnabled)return;var A;this.minimap3dExt||(this.minimap3dExt=this.viewer.getExtension("Autodesk.AEC.Minimap3DExtension"),null===(A=this.minimap3dExt)||void 0===A||A.setLockDragDirection(!0));const t=this.tool,i=new THREE.Euler,e=new THREE.Vector3(0,0,-1),o=t.camera.position;if(aA.set(this.x,this.y,this.z,this.w),nA){if(!(1-nA.dot(aA)>eA))return;nA=aA.clone(),aA.multiply(rA),i.setFromQuaternion(aA);const A=e.applyEuler(i);A.applyMatrix4(sA);const n=A.add(o);t.navapi.setView(o,n),t.navapi.orientCameraUp()}else{nA=aA.clone(),i.setFromQuaternion(aA);const A=e.applyEuler(i);A[this.worldUpAxis]=0;const n=t.camera.target.clone().sub(o);if(n[this.worldUpAxis]=0,A.lengthSq().5?A:0}updateMoveMouseTargetDistance(){this.moveMouseTargetDistance=0}handleMouseMove(A){var t=this.mousePosition,i={x:0,y:0,z:0};return h(A,this.viewer,i),this.turningWithMouse&&(this.get("mouseTurnInverted")?(this.turnMouseDelta.x+=i.x-t.x,this.turnMouseDelta.y+=i.y-t.y):(this.turnMouseDelta.x-=i.x-t.x,this.turnMouseDelta.y-=i.y-t.y),!this.lookingEnabled&&this.onClickMousePosition&&(this.walkDelta=i.y-this.onClickMousePosition.y)),this.mousePosition.copy(i),!0}handleButtonDown(A,t){return q.prototype.handleButtonDown.call(this,A,t),0===t&&h(A,this.viewer,this.onClickMousePosition),!0}handleButtonUp(A,t){return q.prototype.handleButtonUp.call(this,A,t),0===t&&(this.onClickMousePosition=new THREE.Vector2(0,0),this.walkDelta=0),!0}getCursor(){return this.lookingEnabled?"url(data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAQAAADYBBcfAAAACXBIWXMAABYlAAAWJQFJUiTwAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEtSURBVHja7JQxTkJBFEXPQ/xQEDG0ljRYSU1iLN2AtSWlC7Gw04QtGF2ApQVLIDY2hlgIDagJwWCOhf74JXxRYumbaib3ZO7c9zIhq1WBfzAfjJViDWPdYBq/w0pKITjhd7eGJwQkDu2I8rOFHYcmkqgDz4wfoeGZA01BHXtsbSla89ixZsH3an2LtpRUOQde28xFm17PgyPvVK1bl5yYEOtuq3rnyMQCXNJgiiTchuHCnhrGbYBMaXAJULGqlJz54O43bcFdH5xZUqpWJJWW7duza/tDmTWJbbv27Fs2PS2m1iZRNeGcI/aAEevOgCKnbAI7DNjjhUmk1ouf7xgHbLgF3MSzT7wCaxxSiW3hnsf4OngLotj3ILO74CoWTWzOIGcTXab4/6z+CnwbAGjXSZC++vLvAAAAAElFTkSuQmCC), auto":"url(data:image/x-icon;base64,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), auto"}_onContextMenu(A,t){const i=t.event,e=this.viewer.impl.hitTest(t.canvasX,t.canvasY);if(!e)return;const o=e.dbId;A.push({title:"Select",target:()=>{const A=i.shiftKey?this.viewer.getSelection():[];A.push(o),this.viewer.impl.disableSelection(!1),this.viewer.select(A),this.viewer.impl.disableSelection(!0)}})}}var dA=Autodesk.Viewing;const gA=Autodesk.Viewing.Private;function pA(A,t,i){this.viewer=A,this.options=t||{},this.names=["bimwalk"],this.navapi=A.navigation,this.camera=this.navapi.getCamera(),this.active=!1,this.clock=new THREE.Clock(!0),this.bimWalkExtension=i,this.setNavigator(A.prefs.get(gA.Prefs3D.BIM_WALK_NAVIGATOR_TYPE))}dA.EVENT_BIMWALK_CONFIG_CHANGED="EVENT_BIMWALK_CONFIG_CHANGED";var hA=pA.prototype;hA.setNavigator=function(A){if(dA.isMobileDevice())this.navigator=this.navigator||new oA(this);else if("aec"===A)this.navigator=new cA(this);else this.navigator=new q(this)},hA.set=function(A,t){if(!this.navigator.set(A,t))return!1;t=this.navigator.get(A);var i={type:dA.EVENT_BIMWALK_CONFIG_CHANGED,data:{configuration:A,value:t}};return this.viewer.dispatchEvent(i),!0},hA.get=function(A){return A?this.navigator.get(A):this.navigator.configuration},hA.isActive=function(){return this.active},hA.activate=function(A){this.active=!0,this.clock.start(),this.viewer.impl.pauseHighlight(!0),this.navapi.toPerspective(),this.navapi.setVerticalFov(this.camera.fov);var t=this.camera,i=(new THREE.Vector3).copy(t.target).sub(t.position).normalize().dot(t.worldup);if(Math.abs(i)>=.9999){var e=this.navigator,o=t.position,n=t.target,a=i<0?e.getMinPitchLimit():e.getMaxPitchLimit()-Math.PI,s=n.clone().sub(o),r=new THREE.Vector3(1,0,0);r.applyQuaternion(t.quaternion),s.applyAxisAngle(r,a),this.navapi.setRequestTransition(!0,o,s.add(o),t.fov)}dA.isMobileDevice()||this.viewer.canvas.focus(),this.navigator.activate()},hA.deactivate=function(A){this.active=!1,this.clock.stop(),this.viewer.impl.pauseHighlight(!1),this.navigator.deactivate(),this.bimWalkExtension.deactivate()},hA.update=function(){if(!this.active||!this.navapi.isActionEnabled("walk")||!this.viewer.model)return!1;for(var A=this.clock.getDelta(),t=1/30,i=0,e=Math.min(0|Math.ceil(A/t),15),o=this.navigator,n=p(1,this.viewer),r=this.camera.clone(),l=0,c=0,d=0;dx;N1&&void 0!==arguments[1]?arguments[1]:{};Autodesk.Viewing.Extension.call(this,A,t),this.options=t,this.name="bimwalk",this._updateButtonState=this._updateButtonState.bind(this),this._updateToolNavigator=this._updateToolNavigator.bind(this),this._createRaycastIterator=this._createRaycastIterator.bind(this),this._setAsDefault=this._setAsDefault.bind(this),this._onEscape=this._onEscape.bind(this),this._onFitToView=this._onFitToView.bind(this),this._isDefault=!1,this._enableGravityCheckBoxID=null}vA.prototype=Object.create(Autodesk.Viewing.Extension.prototype),vA.prototype.constructor=vA;var mA=vA.prototype;mA.load=function(){var A=this.viewer;this.tool=new pA(A,this.options,this),A.toolController.registerTool(this.tool,this.setActive.bind(this)),A.prefs.addListeners(uA.Prefs3D.DEFAULT_NAVIGATION_TOOL_3D,this._setAsDefault),A.addEventListener(Autodesk.Viewing.AGGREGATE_FIT_TO_VIEW_EVENT,this._onFitToView),A.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT,this._createRaycastIterator),A.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,this._createRaycastIterator);const t=this.viewer.impl.get3DModels();for(let A=0;Athis.tool.navigator.enableGravity(A)),uA.Prefs3D.BIM_WALK_GRAVITY),t.addEventListener(Autodesk.Viewing.TOOL_CHANGE_EVENT,this._updateButtonState),t.addEventListener(Autodesk.Viewing.MODEL_REMOVED_EVENT,this._updateButtonState),t.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,this._updateButtonState),t.addEventListener(Autodesk.Viewing.ESCAPE_EVENT,this._onEscape),t.prefs.addListeners(uA.Prefs3D.BIM_WALK_NAVIGATOR_TYPE,this._updateToolNavigator),this._setAsDefault(t.prefs.get(uA.Prefs3D.DEFAULT_NAVIGATION_TOOL_3D))},mA._makeBVHInWorker=function(A){const t=this,i={frags_per_leaf_node:16,frags_per_inner_node:0,frags_per_leaf_node_transparent:16,frags_per_inner_node_transparent:0,max_polys_per_node:1/0};if(!t._bvhWorker){t._rayCastComputations=new Set,t._bvhWorker=uA.createWorker("BvhWorker");const A=function(A){var e;const o=A.data.bvh,n=null===(e=t.viewer.impl)||void 0===e?void 0:e.findModel(A.data.modelId);if(n){const A=new uA.ModelIteratorBVH;A.initialize(n,new uA.NodeArray(o.nodes,o.useLeanNodes),o.primitives,i),n.setRaycastIterator(A)}t._rayCastComputations.delete(n),0===t._rayCastComputations.size&&(t._bvhWorker.terminate(),t._bvhWorker=null)};t._bvhWorker.addEventListener("message",A)}if(t._rayCastComputations.has(A))return;const e=A.getFragmentList().fragments,o={operation:"COMPUTE_BVH",raiseError:null,onFailureCallback:null,onLoaderEvent:null,onOperationComplete:null,bvhOptions:i,modelId:A.id,fragments:{boxes:e.boxes,polygonCounts:e.polygonCounts,length:e.length,wantSort:!(A.isOTG()||A.isSVF2())}};t._rayCastComputations.add(A),t._bvhWorker.doOperation(o)},mA._createRaycastIterator=function(A){if(A.model&&(A=A.model),!A.getRaycastIterator()&&!A.is2d()&&!A.isSceneBuilder()){const t=A.getFragmentList().fragments;A.isLoadDone()||t.boxesLoaded?this._makeBVHInWorker(A):A.hasEventListener(Autodesk.Viewing.MODEL_FRAGMENT_BOUNDING_BOXES_SET_EVENT,this._createRaycastIterator)||A.addEventListener(Autodesk.Viewing.MODEL_FRAGMENT_BOUNDING_BOXES_SET_EVENT,this._createRaycastIterator,{once:!0})}},mA._updateButtonState=function(){var A=!!this.viewer.model,t=this,i=Autodesk.Viewing.UI;if(t.bimWalkToolButton){var e=A&&t.tool&&t.tool.isActive()?i.Button.State.ACTIVE:A?i.Button.State.INACTIVE:i.Button.State.DISABLED;t.bimWalkToolButton.setState(e)}t.activeStatus&&!A&&t.deactivate(),t.activeStatus&&!A&&t.deactivate()},mA._updateToolNavigator=function(A){this.deactivate(),this.tool.setNavigator(A)},mA._setAsDefault=function(A){switch(A){case"extractor_defined":var t=this.viewer.model.getMetadata("navigation hint","value",null);if(!t||"walk"!==t.toLowerCase())break;case"bimwalk":this.viewer.getDefaultNavigationToolName()!==this.tool.getName()&&(this.viewer.setDefaultNavigationTool(this.tool.getName()),this.activeStatus=!0,this._isDefault=!0);break;default:this._isDefault&&this.viewer.activateDefaultNavigationTools(this.viewer.model.is2d()),this._isDefault=!1}},mA._onEscape=function(){this._setAsDefault(this.viewer.prefs.get(uA.Prefs3D.DEFAULT_NAVIGATION_TOOL_3D))},mA._onFitToView=async function(){this.disableGravityUntilNextMove()},mA.disableGravityUntilNextMove=async function(){var A;await Autodesk.Viewing.EventUtils.waitUntilTransitionEnded(this.viewer);const t=null===(A=this.tool)||void 0===A?void 0:A.navigator;t&&(t.userOverFloor=!0)},mA.getInfoButton=function(){var A=this.tool&&this.tool.navigator,t=A&&A.ui;return t&&t.infoIcon},mA.jumpToFloor=function(A){this.tool.navigator.jumpToFloor(A)},Autodesk.Viewing.theExtensionManager.registerExtension("Autodesk.BimWalk",vA)})(),Autodesk.Extensions.BimWalk=e})(); +//# sourceMappingURL=BimWalk.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/BoxSelection/BoxSelection.min.js b/public/autodesk/extensions/BoxSelection/BoxSelection.min.js new file mode 100644 index 0000000..1092bf8 --- /dev/null +++ b/public/autodesk/extensions/BoxSelection/BoxSelection.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={3600:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),s=o(6314),r=o.n(s)()(i());r.push([e.id,".icon-box-selection{fill:none;stroke:currentColor;stroke-width:1;stroke-dasharray:4 2}.box-selection-contains{border:1px solid gray;background-color:rgba(75,160,255,.3);position:fixed}.box-selection-intersects{border:1px dotted gray;background-color:rgba(75,255,160,.3);position:fixed}","",{version:3,sources:["webpack://./extensions/BoxSelection/BoxSelection.css"],names:[],mappings:"AAAA,oBAAoB,SAAS,CAAC,mBAAmB,CAAC,cAAc,CAAC,oBAAoB,CAAC,wBAAwB,qBAAqB,CAAC,oCAAoC,CAAC,cAAc,CAAC,0BAA0B,sBAAsB,CAAC,oCAAoC,CAAC,cAAc",sourcesContent:[".icon-box-selection{fill:none;stroke:currentColor;stroke-width:1;stroke-dasharray:4 2}.box-selection-contains{border:1px solid gray;background-color:rgba(75,160,255,.3);position:fixed}.box-selection-intersects{border:1px dotted gray;background-color:rgba(75,255,160,.3);position:fixed}"],sourceRoot:""}]);const a=r},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o="",n=void 0!==t[5];return t[4]&&(o+="@supports (".concat(t[4],") {")),t[2]&&(o+="@media ".concat(t[2]," {")),n&&(o+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),o+=e(t),n&&(o+="}"),t[2]&&(o+="}"),t[4]&&(o+="}"),o})).join("")},t.i=function(e,o,n,i,s){"string"==typeof e&&(e=[[null,e,void 0]]);var r={};if(n)for(var a=0;a0?" ".concat(h[5]):""," {").concat(h[1],"}")),h[5]=s),o&&(h[2]?(h[1]="@media ".concat(h[2]," {").concat(h[1],"}"),h[2]=o):h[2]=o),i&&(h[4]?(h[1]="@supports (".concat(h[4],") {").concat(h[1],"}"),h[4]=i):h[4]="".concat(i)),t.push(h))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],o=e[3];if(!o)return t;if("function"==typeof btoa){var n=btoa(unescape(encodeURIComponent(JSON.stringify(o)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(n),s="/*# ".concat(i," */");return[t].concat([s]).join("\n")}return[t].join("\n")}},5072:e=>{"use strict";var t=[];function o(e){for(var o=-1,n=0;n{"use strict";var t={};e.exports=function(e,o){var n=function(e){if(void 0===t[e]){var o=document.querySelector(e);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(e){o=null}t[e]=o}return t[e]}(e);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(o)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,o)=>{"use strict";e.exports=function(e){var t=o.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(o){!function(e,t,o){var n="";o.supports&&(n+="@supports (".concat(o.supports,") {")),o.media&&(n+="@media ".concat(o.media," {"));var i=void 0!==o.layer;i&&(n+="@layer".concat(o.layer.length>0?" ".concat(o.layer):""," {")),n+=o.css,i&&(n+="}"),o.media&&(n+="}"),o.supports&&(n+="}");var s=o.sourceMap;s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleTagTransform(n,e,t.options)}(t,e,o)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={id:n,exports:{}};return e[n](s,s.exports,o),s.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nc=void 0;var n={};(()=>{"use strict";o.r(n),o.d(n,{BoxSelectionExtension:()=>ie});const e=THREE.Vector4,t=0,i=1,s=2;function r(e,t){switch(t){case 0:return e.x;case 1:return e.y;case 2:return e.z}return 0}function a(o,n,s,a,l,c){return function(t,o,n,i,s){var a,l,c,h,u;o.length=0,l=t.length&&t[t.length-1],h=i*r(l,n)-l.w*s;for(var d=0;do.max.x*x.w&&r++,x.yo.max.y*x.w&&c++,x.zo.max.z*x.w&&u++}if(n+r+l+c+h+u===0)return s;if(n===d||r===d||l===d||c===d||h===d||u===d)return e.length=0,t;var m=[],v=[e],S=[m],y=[null];return n&&a(0,-1,o.min.x,v,S,y)===t||r&&a(0,1,o.max.x,v,S,y)===t||l&&a(1,-1,o.min.y,v,S,y)===t||c&&a(1,1,o.max.y,v,S,y)===t||h&&a(2,-1,o.min.z,v,S,y)===t||u&&a(2,1,o.max.z,v,S,y)===t?(e.length=0,t):(v[0]===m&&(e.length=0,e.push(...m)),i)}const{enumMeshLines:c,enumMeshTriangles:h}=Autodesk.Viewing.Private.VertexEnumerator,u=THREE.Frustum,d=THREE.Vector3,p=THREE.Vector4,x=THREE.Box3,m=THREE.Matrix4;var v=new u,S=new m,y=new m,g=new THREE.Box3;g.min.x=-1,g.min.y=-1,g.min.z=-1,g.max.x=1,g.max.y=1,g.max.z=1;var f=new x,w=new d,A=new d,b=new d,T=new d,C=new d,P=new d,B=new d,E=new d,N=new d,M=new d,O=new p,I=new p,k=new p;function z(e,t){for(var o=N,n=M,i=e.planes,s=0,r=0;r<6;r++){var a=i[r];o.x=a.normal.x>0?t.min.x:t.max.x,n.x=a.normal.x>0?t.max.x:t.min.x,o.y=a.normal.y>0?t.min.y:t.max.y,n.y=a.normal.y>0?t.max.y:t.min.y,o.z=a.normal.z>0?t.min.z:t.max.z,n.z=a.normal.z>0?t.max.z:t.min.z;var l=a.distanceToPoint(o),c=a.distanceToPoint(n);if(l<0&&c<0)return 0;l>0&&c>0&&s++}return 6===s?2:1}function V(e,t,o){let n=e.x,i=e.y,s=e.z,r=t.elements;o.x=r[0]*n+r[4]*i+r[8]*s+r[12],o.y=r[1]*n+r[5]*i+r[9]*s+r[13],o.z=r[2]*n+r[6]*i+r[10]*s+r[14],o.w=r[3]*n+r[7]*i+r[11]*s+r[15]}function R(e,o,n,i){let r=!0,a=!1;return e.isLine?c(e,((e,i)=>{V(e,o,O),V(i,o,I);let c=l([O,I,k],n);c!==s&&(r=!1),c!==t&&(a=!0)})):h(e,((e,i,c)=>{V(e,o,O),V(i,o,I),V(c,o,k);let h=l([O,I,k],n);h!==s&&(r=!1),h!==t&&(a=!0)})),r?2:a?1:0}function H(e,t){this.camera=e,this.scene=t,this.startPoint=new d,this.endPoint=new d,this.result=[]}H.prototype.select=function(e,t,o){return this.startPoint=e||this.startPoint,this.endPoint=t||this.endPoint,this.result=[],this.updateFrustum(this.startPoint,this.endPoint),this.searchChildInRenderScene(v,o),this.result},H.prototype.updateFrustum=function(e,t){e=e||this.startPoint,t=t||this.endPoint,e.x===t.x&&(t.x+=Number.EPSILON),e.y===t.y&&(t.y+=Number.EPSILON),this.camera.updateProjectionMatrix(),this.camera.updateMatrixWorld(),S.multiplyMatrices(this.camera.projectionMatrix,S.copy(this.camera.matrixWorld).invert());var o=Math.min(e.x,t.x),n=Math.max(e.y,t.y),i=Math.max(e.x,t.x),s=Math.min(e.y,t.y);w.set(o,n,-1),A.set(i,n,-1),b.set(i,s,-1),T.set(o,s,-1),C.set(o,n,1),P.set(i,n,1),B.set(i,s,1),E.set(o,s,1),g.min.x=o,g.min.y=s,g.min.z=-1,g.max.x=i,g.max.y=n,g.max.z=1,y.copy(S).invert(),w.applyProjection(y),A.applyProjection(y),b.applyProjection(y),T.applyProjection(y),C.applyProjection(y),P.applyProjection(y),B.applyProjection(y),E.applyProjection(y);var r=v.planes;r[0].setFromCoplanarPoints(w,C,P),r[1].setFromCoplanarPoints(A,P,B),r[2].setFromCoplanarPoints(B,E,T),r[3].setFromCoplanarPoints(E,C,w),r[4].setFromCoplanarPoints(A,b,T),r[5].setFromCoplanarPoints(B,P,C)},H.prototype.searchChildInRenderScene=function(e,t){let o=this.scene.getModels(),n={intersectsBox:function(t){return z(e,t)}};for(let i of o){let o=i.getFragmentList(),s=new Map;if(i.getIterator().intersectFrustum(n,((t,n)=>{let i;if(n?i=2:(o.getWorldBounds(t,f),i=z(e,f)),0===i)return;if(2!==i){o.getWorldMatrix(t,y),y.multiplyMatrices(S,y),i=R(o.getGeometry(t),y,g)}if(0===i)return;let r=o.getDbIds(t),a=s.get(r);(void 0===a||2===a&&2!==i)&&s.set(r,i)})),t){let e={model:i,ids:[]};s.forEach(((t,o)=>{2===t&&e.ids.push(o)})),this.result.push(e)}else this.result.push({model:i,ids:Array.from(s.keys())})}};class L{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.viewer=e,this.options=t,this.isDown=!1,this.element=document.createElement("div"),this.styleContains=this.options.styleContains||this.options.cssClassName||"box-selection-contains",this.styleIntersects=this.options.styleIntersects||this.options.cssClassName||"box-selection-intersects",this.element.classList.add(this.styleContains),this.element.style.pointerEvents="none",this.startPoint=new THREE.Vector2,this.endPoint=new THREE.Vector2,this.useGeometricIntersection=this.options.useGeometricIntersection||Autodesk.Viewing.isMobileDevice(),this.boxIntersection=new H(this.viewer.getCamera(),this.viewer.impl.modelQueue())}getName(){return"box-selection"}getNames(){return["box-selection"]}activate(){this.active=!0}deactivate(){this.onSelectOver(),this.active=!1}isActive(){return this.active}getCursor(){return"crosshair"}register(){}handleGesture(e){switch(e.type){case"dragstart":return this.handleButtonDown(e,0);case"dragmove":return this.handleMouseMove(e);case"dragend":return this.handleButtonUp(e,0)}return!1}handleButtonDown(e,t){return 0===t&&(this.viewer.impl.selector.clearSelection(),this.isDown=!0,this.onSelectStart(e),!0)}handleMouseMove(e){return!!this.isDown&&(this.onSelectMove(e),!0)}handleButtonUp(e,t){if(0!==t)return!1;this.isDown=!1,this.onSelectOver(e);const o=this.getSelection();return o.forEach((e=>{e.selectionType=this.options.selectionType})),this.viewer.impl.selector.setAggregateSelection(o),!0}getSelection(){const e=this.viewer.impl.getCanvasBoundingClientRect(),t=this.viewer.impl.clientToViewport(Math.min(this.startPoint.x,this.endPoint.x)-e.left,Math.max(this.startPoint.y,this.endPoint.y)-e.top),o=this.viewer.impl.clientToViewport(Math.max(this.startPoint.x,this.endPoint.x)-e.left,Math.min(this.startPoint.y,this.endPoint.y)-e.top);if(this.useGeometricIntersection)return this.boxIntersection.select(t,o,this.endPoint.x>this.startPoint.x);{const e=this.viewer.impl.hitBoxTestViewport(t,Math.abs(this.startPoint.x-this.endPoint.x)/this.viewer.impl.canvas.clientWidth,Math.abs(this.startPoint.y-this.endPoint.y)/this.viewer.impl.canvas.clientHeight),o=[],n={},i={};for(let t=0;t=this.startPoint.x?this.element.classList.replace(this.styleIntersects,this.styleContains):this.element.classList.replace(this.styleContains,this.styleIntersects)}onSelectOver(){this.element.parentElement&&this.element.parentElement.removeChild(this.element)}}const J={en:JSON.parse('{"@@locale":"en","@@context":"BoxSelection Extension","Select":"Select"}'),"en-GB":JSON.parse('{"@@locale":"en","@@context":"BoxSelection Extension","Select":"Select"}'),cs:JSON.parse('{"@@locale":"cs","@@context":"Rozšíření BoxSelection","Select":"Vybrat"}'),de:JSON.parse('{"@@locale":"de","@@context":"Erweiterung BoxSelection","Select":"Auswählen"}'),es:JSON.parse('{"@@locale":"es","@@context":"BoxSelection Extension","Select":"Seleccionar"}'),fr:JSON.parse('{"@@locale":"fr","@@context":"Extension BoxSelection","Select":"Sélectionner"}'),"fr-CA":JSON.parse('{"@@locale":"fr-CA","@@context":"Extension BoxSelection","Select":"Sélectionner"}'),it:JSON.parse('{"@@locale":"it","@@context":"Estensione BoxSelection","Select":"Seleziona"}'),ja:JSON.parse('{"@@locale":"ja","@@context":"BoxSelection Extension","Select":"選択"}'),ko:JSON.parse('{"@@locale":"ko","@@context":"BoxSelection 확장","Select":"선택"}'),pl:JSON.parse('{"@@locale":"pl","@@context":"Rozszerzenie BoxSelection","Select":"Wybierz"}'),"pt-BR":JSON.parse('{"@@locale":"pt","@@context":"Extensão BoxSelection","Select":"Selecionar"}'),ru:JSON.parse('{"@@locale":"ru","@@context":"Расширение BoxSelection","Select":"Выбрать"}'),tr:JSON.parse('{"@@locale":"tr","@@context":"BoxSelection Uzantısı","Select":"Seç"}'),"zh-Hans":JSON.parse('{"@@locale":"zh-Hans","@@context":"BoxSelection 扩展","Select":"选择"}'),"zh-Hant":JSON.parse('{"@@locale":"zh-Hant","@@context":"BoxSelection 延伸","Select":"選取"}'),"zh-HK":JSON.parse('{"@@locale":"zh-hk","@@context":"BoxSelection 擴充程式","Select":"選取"}'),nl:JSON.parse('{"@@locale":"nl","@@context":"BoxSelection-extensie","Select":"Selecteren"}'),sv:JSON.parse('{"@@locale":"sv","@@context":"BoxSelection-tillägg","Select":"Välj"}'),da:JSON.parse('{"@@locale":"da","@@context":"BoxSelection-udvidelse","Select":"Vælg"}'),no:JSON.parse('{"@@locale":"no","@@context":"BoxSelection-utvidelse","Select":"Velg"}')};var _=o(5072),j=o.n(_),F=o(7825),U=o.n(F),D=o(7659),G=o.n(D),W=o(5056),K=o.n(W),X=o(540),Y=o.n(X),q=o(1113),Q=o.n(q),Z=o(3600),$={};$.styleTagTransform=Q(),$.setAttributes=K(),$.insert=G().bind(null,"head"),$.domAPI=U(),$.insertStyleElement=Y();j()(Z.A,$);Z.A&&Z.A.locals&&Z.A.locals;const ee=Autodesk.Viewing,te=ee.UI.Button.State,oe="box-selection",ne=oe;class ie extends ee.Extension{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(e,t),this.name=oe,this._onToolChanged=this._onToolChanged.bind(this),this.options.selectionType=t.selectionType||(t.useGeometricIntersection?ee.SelectionType.REGULAR:ee.SelectionType.MIXED)}load(){return this.extendLocalization(J),this.boxSelectionTool=new L(this.viewer,this.options),this.viewer.toolController.registerTool(this.boxSelectionTool,((e,t)=>{this.setActive(e,t)})),this.registerHotkeys(),!0}unload(){if(this.viewer.getActiveNavigationTool()===ne&&this.viewer.setActiveNavigationTool(),this.boxSelectionToolButton){const e=this.viewer.getToolbar().getControl(Autodesk.Viewing.TOOLBAR.NAVTOOLSID);e&&(e.removeControl(this.boxSelectionToolButton.getId()),this.boxSelectionToolButton=null)}return this.viewer.toolController.deregisterTool(this.boxSelectionTool),this.viewer.removeEventListener(Autodesk.Viewing.TOOL_CHANGE_EVENT,this._onToolChanged),this.viewer.getHotkeyManager().popHotkeys("Autodesk.BoxSelection"),!0}createToolbarButton(){const e=new Autodesk.Viewing.UI.Button("toolbar-box-selection");e.setIcon("adsk-icon-selection"),e.setToolTip("Select"),e.onClick=()=>{const t=e.getState();t===Autodesk.Viewing.UI.Button.State.INACTIVE?this.activate(oe):t===Autodesk.Viewing.UI.Button.State.ACTIVE&&this.deactivate()},this.boxSelectionToolButton=e}addToolbarButton(e){var t,o;if(!this.boxSelectionToolButton)return;const n=null===(t=(o=this.viewer).getToolbar)||void 0===t?void 0:t.call(o),i=null==n?void 0:n.getControl(Autodesk.Viewing.TOOLBAR.NAVTOOLSID);if(!i)return;const s=i.getControl(this.boxSelectionToolButton.getId());e&&!s?i.addControl(this.boxSelectionToolButton,{index:0}):!e&&s&&i.removeControl(this.boxSelectionToolButton)}onToolbarCreated(e){this.viewer.addEventListener(Autodesk.Viewing.TOOL_CHANGE_EVENT,this._onToolChanged),this.createToolbarButton(),this.addToolbarButton(!1)}registerHotkeys(){this.viewer.getHotkeyManager().pushHotkeys("Autodesk.BoxSelection",[{keycodes:[Autodesk.Viewing.KeyCode.CONTROL],onPress:()=>(this.boxSelectionTool.isActive()||(this.viewer.toolController.activateTool(this.boxSelectionTool.getName()),this.boxSelectionTool.__hotKey=!0),!0),onRelease:()=>(this.boxSelectionTool.__hotKey&&(this.viewer.toolController.deactivateTool(this.boxSelectionTool.getName()),this.boxSelectionTool.__hotKey=!1),!0)}])}activate(e){return e===oe&&(this._updateActiveState(!0),this.viewer.setActiveNavigationTool(oe)),!0}deactivate(){return this.viewer.setActiveNavigationTool(),this._updateActiveState(!1),!0}setSelectionType(e){this.options.selectionType=e||ee.SelectionType.REGULAR}_updateActiveState(e){this.activeStatus=e,this.mode=e?oe:""}_onToolChanged(e){if(e.toolName===ne&&this.boxSelectionToolButton){const t=e.active?te.ACTIVE:te.INACTIVE;this.boxSelectionToolButton.setState(t),this._updateActiveState(!t)}}}ee.theExtensionManager.registerExtension("Autodesk.BoxSelection",ie)})(),Autodesk.Extensions.BoxSelection=n})(); +//# sourceMappingURL=BoxSelection.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/CompGeom/CompGeom.min.js b/public/autodesk/extensions/CompGeom/CompGeom.min.js new file mode 100644 index 0000000..4fac531 --- /dev/null +++ b/public/autodesk/extensions/CompGeom/CompGeom.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var t={6986:(t,e,i)=>{"use strict";i.r(e),i.d(e,{LmvCanvasContext:()=>x,hijackContextAPI:()=>l});var n=i(8917),s=Autodesk.Viewing,r=s.Private;const o=r.VertexBufferBuilder;function l(t,e){["fillRect","strokeRect","clearRect","beginPath","closePath","moveTo","lineTo","arc","arcTo","quadraticCurveTo","bezierCurveTo","rect","fill","stroke","clip","strokeText","fillText","drawImage","save","restore","setLineDash","createPattern","beginMarkedContent","beginMarkedContentProps","endMarkedContent","setCurrentOperatorIndex","isLMVCanvasContext","beginChildGroup","endChildGroup"].forEach((i=>{t["_original"+i]=t[i],t[i]=e[i].bind(e)}))}let h=new Array(6),a=new THREE.Vector2,p=new THREE.Box2;var u=new THREE.Vector3,d=new THREE.Quaternion,c=new THREE.Vector3,f=new THREE.Vector3,y=new THREE.Matrix4;class x{static getLayerKey(t){let e;return t&&"object"==typeof t?(e=t.ocgId,void 0===e&&(e=t.name)):e=t,e}static isRef(t){return null!=t&&"number"==typeof t.num&&"number"==typeof t.gen}static refKey(t){return`${t.num}-${t.gen}`}static applyTransform(t,e){return[t[0]*e[0]+t[1]*e[2]+e[4],t[0]*e[1]+t[1]*e[3]+e[5]]}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}constructor(t,e,i,n,r,h,a){var p=s.getGlobal().document.createElement("canvas"),u=p.getContext("2d");if(p.height=t.height,p.width=t.width,u.imageSmoothingEnabled=!1,this.canvasContext=u,this.viewport=t,this.toPageUnits=e,this.meshCallback=i,1==t.clipToViewport){let i=t.offsetX||0,n=t.offsetY||0;this.bounds=new THREE.Vector4(i*e,n*e,(t.width+i)*e,(t.height+n)*e)}this.currentMeshIndex=0,this.imageNumber=0,this.currentVbb=new o(!1),this._curPath=null,this._curClip=null,this.first=!0,this.states=[],this.glyphCache={},this.usingTextLayer=r,this.precisionTolerance=.1,this.dbId=-1,this.maxDbId=0,this.consecutiveIds=!1,s.isMobileDevice()&&Autodesk.Extensions.CompGeom.SetTesselationParams(void 0,.1),this.fontEngine=n,this.lineStyle=0,this.isScreenSpace=!1,l(u,this),this.layers={},this.defaultLayerId=0,this.currentLayerId=this.defaultLayerId,this.sequencedDbId=-1,this.taggedId=null,this.defaultVPId=0,this.viewportCounter=1,this.currentVpId=this.defaultVPId,this.viewports=[this.createViewPortData((new THREE.Matrix4).makeScale(t.scale,t.scale,t.scale).elements)],this.viewportMap={},this.ocgStack=[],this.msdfRender=!0,this.fontAtlas=h,this.pdfRefMap=a||{},this.smallImageSequenceToCheck=-1,this.inSmallImageRendering=!1,this.inChildGroup=!1,this.overrideCompositeOperation="source-over",this.overrideAlpha=1}destroy(){this.canvasContext=null,this.meshCallback=null}updateDBId(){null!=this.taggedId?this.dbId=this.taggedId:this.consecutiveIds&&(this.sequencedDbId++,this.dbId=this.sequencedDbId),this.maxDbId=Math.max(this.maxDbId,this.dbId)}snapToPixel(t,e){const i=this.canvasContext.mozCurrentTransformInverse,n=this.canvasContext.mozCurrentTransform;let s=x.applyTransform([t,e],n);return s[0]=Math.round(s[0]),s[1]=Math.round(s[1]),x.applyTransform(s,i)}save(){this.states.push({clip:this._curClip,consecutiveIds:this.consecutiveIds,lineDashedDef:this.lineDashedDef,lineStyle:this.lineStyle,overrideCompositeOperation:this.overrideCompositeOperation,overrideAlpha:this.overrideAlpha,inChildGroup:this.inChildGroup}),this.canvasContext._originalsave()}restore(){let t=this.states.pop();t&&(this._curClip=t.clip,this.consecutiveIds=t.consecutiveIds,this.lineDashedDef=t.lineDashedDef,this.lineStyle=t.lineStyle,this.overrideCompositeOperation=t.overrideCompositeOperation,this.overrideAlpha=t.overrideAlpha,this.inChildGroup=t.inChildGroup),this.canvasContext._originalrestore()}flushBuffer(t,e,i){if(!this.currentVbb.vcount&&!e)return;let n="source-over";const s="source-over"!=this.overrideCompositeOperation?this.overrideCompositeOperation:this.canvasContext.globalCompositeOperation;"multiply"!==s&&"min"!==s&&"darken"!==s&&"lighten"!==s||(n=s);const r=this.currentCompositeOperation!==n;if((e||this.currentVbb.isFull(t)||r)&&this.currentVbb.vcount){const t=this.currentVbb.toMesh();t.material={skipEllipticals:!this.currentVbb.numEllipticals,skipCircles:!this.currentVbb.numCirculars,skipTriangleGeoms:!this.currentVbb.numTriangleGeoms,skipMiterLines:!this.currentVbb.numMiterLines,useInstancing:this.currentVbb.useInstancing,isScreenSpace:!this.currentImage,hasLineStyles:this.currentVbb.hasLineStyles,msdfFontTexture:!!this.hasMSDFContent,viewportBounds:this.bounds,imageUVTexture:2===i},this.currentImage&&(t.material.image=this.currentImage,t.material.image.name=this.currentImage.cacheKey||this.imageNumber++,t.material.compositeCanvasColor="#ffffff",t.material.opacity=this.canvasContext.globalAlpha,this.currentImage=null),t.material.compositeOperation=this.currentCompositeOperation,this.inChildGroup&&t.material.opacity!==this.overrideAlpha&&(t.material.hasOpacity=!!this.overrideAlpha,t.material.opacity=this.overrideAlpha),this.meshCallback(t,this.currentMeshIndex++),this.currentVbb.reset(0),this.hasMSDFContent=!1}this.currentCompositeOperation=n}addPolyTriangle(t,e,i,n,s,r){var o=this,l=null,h=this.currentVpId;function a(t,e){if(t>e){var i=t;t=e,e=i}if(l[t]){var n=l[t],s=n.lastIndexOf(e);-1==s?n.push(e):n[s]=-1}else l[t]=[e]}function p(e,r){if(e>r){var a=e;e=r,r=a}var p=l[e];p&&(-1!=p.indexOf(r)&&(o.flushBuffer(4),o.currentVbb.addSegment(t[2*e],t[2*e+1],t[2*r],t[2*r+1],o.currentLayerId,-.5,i,n,s,h,o.lineStyle)))}if(r){l=new Array(t.length/2);for(var u=0,d=e.length;u{const e=t.startPoint.slice(),i=t.endPoint.slice(),n=this.getCurrentTransform(),s=e[0],r=i[0];e[0]=this.tx(s,e[1],n),e[1]=this.ty(s,e[1],n),i[0]=this.tx(r,i[1],n),i[1]=this.ty(r,i[1],n);const o=this.viewport.scale||1;let l=1/this.toPageUnits/o,h=(this._curPath.bbox.max.x-this._curPath.bbox.min.x)*l,a=(this._curPath.bbox.max.y-this._curPath.bbox.min.y)*l;const p=Math.max(h,a,1);p>2048&&(l*=2048/p,h=(this._curPath.bbox.max.x-this._curPath.bbox.min.x)*l,a=(this._curPath.bbox.max.y-this._curPath.bbox.min.y)*l);const u=this._curPath.bbox.min.x,d=this._curPath.bbox.min.y;e[0]-=u,e[1]-=d,i[0]-=u,i[1]-=d,e[0]*=l,e[1]*=l,i[0]*=l,i[1]*=l;const c=document.createElement("canvas");c.width=Math.max(h,1),c.height=Math.max(a,1);const f=c.getContext("2d"),y=t.generateCanvasGradient(f,e,i);f.fillStyle=y,f.fillRect(0,0,c.width,c.height);const x=this.createPattern(c,"no-repeat");return x.isGradient=!0,x},e=this.canvasContext.fillStyle;if(e&&!0===e.isPattern)return e;if(e instanceof CanvasGradient){return t(new g(e))}if("string"!=typeof e)return console.warn("Unsupported fill style."),0;var i=parseInt(e.slice(1),16);return 255*this.canvasContext.globalAlpha<<24|(255&i)<<16|65280&i|i>>16&255}getStrokeColor(){let t=this.canvasContext;if(this.lastStrokeStyle===t.strokeStyle&&t.globalAlpha===this.lastAlpha)return this.lastRgb;{let i;"string"!=typeof t.strokeStyle?(console.warn("Unsupported stroke style."),i=parseInt(0,16)):i=parseInt(t.strokeStyle.slice(1),16);var e=255*t.globalAlpha<<24|(255&i)<<16|65280&i|i>>16&255;return this.lastRgb=e,this.lastStrokeStyle=t.strokeStyle,this.lastAlpha=t.globalAlpha,e}}getCurrentTransform(){let t=this.canvasContext.mozCurrentTransform;if(this.isFontChar){let e=this.invXform,i=t[0],n=t[1],s=t[2],r=t[3],o=t[4],l=t[5];return h[0]=e[0]*i+e[2]*n,h[1]=e[1]*i+e[3]*n,h[2]=e[0]*s+e[2]*r,h[3]=e[1]*s+e[3]*r,h[4]=e[0]*o+e[2]*l+e[4],h[5]=e[1]*o+e[3]*l+e[5],h}return t}getCurrentInverseTransform(){return this.canvasContext.mozCurrentTransformInverse}tx(t,e,i){return(t*(i=i||this.getCurrentTransform())[0]+e*i[2]+i[4])*(this.isFontChar?1:this.toPageUnits)}ty(t,e,i){return(t*(i=i||this.getCurrentTransform())[1]+e*i[3]+i[5])*(this.isFontChar?1:this.toPageUnits)}scaleValue(t,e){return e=e||this.getCurrentTransform(),this.toPageUnits*Math.sqrt(Math.abs(e[0]*e[3]-e[1]*e[2]))*t}transformBox(t,e,i){return e=e||this.getCurrentTransform(),p.makeEmpty(),a.set(this.tx(t.min.x,t.min.y,e),this.ty(t.min.x,t.min.y,e)),p.expandByPoint(a),a.set(this.tx(t.max.x,t.min.y,e),this.ty(t.max.x,t.min.y,e)),p.expandByPoint(a),a.set(this.tx(t.max.x,t.max.y,e),this.ty(t.max.x,t.max.y,e)),p.expandByPoint(a),a.set(this.tx(t.min.x,t.max.y,e),this.ty(t.min.x,t.max.y,e)),p.expandByPoint(a),i?(i.copy(p),i):p.clone()}fillRect(t,e,i,n){if(this.inSmallImageRendering){const s=this.snapToPixel(t,e),r=this.snapToPixel(t+i,e+n),o=r[0]-s[0],l=r[1]-s[1];this.canvasContext._originalfillRect(s[0],s[1],o,l)}else this.updateDBId(),this.rect(t,e,i,n),this.dbId=this.first?-1:this.dbId,this.first=!1,this.fill(),this.beginPath()}strokeRect(t,e,i,n){console.log("strokeRect")}clearRect(t,e,i,n){console.log("clearRect")}_beginTextChar(t,e,i,n,s){this.isFontChar=!0,this.invXform=this.canvasContext.mozCurrentTransformInverse,this.hashKey=t.codePointAt(0)+"/"+n.loadedName+"/"+s,this.cachedGlyph=this.glyphCache[this.hashKey],this.cachedGlyph?this.skipPath=!0:this.skipPath=!1}drawMSDFText(t,e,i,s,r){var o=s.name;function l(t,e,i,n,s,r){return Math.abs((r-n)*t-(s-i)*e+s*n-r*i)/Math.sqrt((r-n)*(r-n)+(s-i)*(s-i))}if(this.fontAtlas&&this.fontAtlas.charsMap&&this.fontAtlas.charsMap[o]){var h=this.fontAtlas.charsMap[o][t.charCodeAt(0)];if(null==h)return!1;{this.currentVbb.isFull(4)&&this.flushBuffer(0,!0),this.hasMSDFContent=!0;var a=this.fontAtlas.chars[h];if(a.page>0)return!1;var p=this.fontAtlas.common[a.common],u=r/this.fontAtlas.info[a.info].size,d=a.width*(u+0);let t=a.inverseYAxis?-1:1;var c=a.height*(u+i)*t,f=a.txoffset*(u+0),y=a.tyoffset*(u+i)*-t,x=[f,y,f,y+c,f+d,y+c,f+d,y],g=[];for(let t=0;t0&&"string"==typeof(arguments.length<=0?void 0:arguments[0])?this.canvasContext._originalfill(arguments.length<=0?void 0:arguments[0]):this.canvasContext._originalfill());let t=!1;if(arguments.length){var e;let i=(e=arguments.length-1)<0||arguments.length<=e?void 0:arguments[e];"boolean"==typeof i&&(t=i)}this.isFontChar&&!this.cachedGlyph&&(this.glyphCache[this.hashKey]=this._curPath,this.cachedGlyph=this._curPath,this.cachedGlyph.isFontChar=!0),this.isFontChar=!1,this.cachedGlyph?this.cachedGlyph.fill(this,this.getFillColor(),this.dbId,this.currentLayerId,this._curClip,!0):this._curPath&&this._curPath.fill(this,this.getFillColor(),this.dbId,this.currentLayerId,this._curClip,!1,t),this.skipPath=!1}stroke(){if(this.inSmallImageRendering)return void this.canvasContext._originalstroke();this.isFontChar&&!this.cachedGlyph&&(this.glyphCache[this.hashKey]=this._curPath,this.cachedGlyph=this._curPath,this.cachedGlyph.isFontChar=!0),this.updateLineDashStyle(),this.isFontChar=!1;const t=this.isScreenSpace?-1:1;this.cachedGlyph?this.cachedGlyph.stroke(this,t*this.scaleValue(this.canvasContext.lineWidth),this.getStrokeColor(),this.dbId,this.currentLayerId,this._curClip,!0,this.lineStyle,this.canvasContext.lineCap):this._curPath&&this._curPath.stroke(this,t*this.scaleValue(this.canvasContext.lineWidth),this.getStrokeColor(),this.dbId,this.currentLayerId,this._curClip,!1,this.lineStyle,this.canvasContext.lineCap),this.skipPath=!1}clip(t,e){this.inSmallImageRendering?this.canvasContext._originalclip(t):void 0!==e&&void 0!==t?(this._curClip=t,console.log("Probably unsupported use case")):(this._curClip?this._curClip=this._curClip.clip(this._curPath,t):this._curClip=this._curPath,this._curPath=null)}strokeText(t,e,i,n,s,r){let o=this.canvasContext;o.save(),o.translate(e,i),this.fontEngine.drawText(this,t,0,0,s,r),this.stroke(),o.restore()}fillText(t,e,i,n,s,r){let o=this.canvasContext;o.save(),o.translate(e,i),this.fontEngine.drawText(this,t,0,0,s,r),this.fill(),o.restore()}getRotationAndScale(t){y.elements[0]=t[0],y.elements[1]=t[1],y.elements[4]=t[2],y.elements[5]=t[3],y.elements[12]=t[4],y.elements[13]=t[5],y.decompose(u,d,c);let e=Math.sqrt(1-d.w*d.w);f.set(d.x/e,d.y/e,d.z/e);let i=2*Math.acos(Math.max(Math.min(1,d.w),-1));return d.z<0&&(i=-i),i<0&&(i+=2*Math.PI),{angle:i,scale:c}}drawImage(t,e,i,s,r,o,l,h,a){if(this.inSmallImageRendering){let n=!1;void 0===o&&(o=e,l=i,h=s,a=r,n=!0),void 0===h&&(o=e,l=i,h=t.width,a=t.height,n=!0);const p=this.snapToPixel(o,l),u=this.snapToPixel(o+h,l+a),d=u[0]-p[0],c=u[1]-p[1];return void(n?this.canvasContext._originaldrawImage(t,p[0],p[1],d,c):this.canvasContext._originaldrawImage(t,e,i,s,r,p[0],p[1],d,c))}let p=this._curClip;if(0===t.width||0===t.height)return void console.warn("Zero size image, skipping");const u=this.getCurrentTransform(),{angle:d,scale:c}=this.getRotationAndScale(u);if(void 0===o&&(o=e,l=i,h=s,a=r),void 0===h&&(h=t.width,a=t.height),h)if(p){const e=this.tx(o,l),i=this.ty(o,l),s=this.tx(o+h,l),r=this.ty(o+h,l),u=this.tx(o+h,l+a),d=this.ty(o+h,l+a),c=this.tx(o,l+a),f=this.ty(o,l+a),y=[u-c,d-f,e-c,i-f,c,f];let g={image:t,imageTransform:x.inverseTransform(y)},P=new n.Path2D(this.precisionTolerance);P.moveTo(e,i),P.lineTo(s,r),P.lineTo(u,d),P.lineTo(c,f),P.closePath(),p.fill(this,g,this.dbId,this.currentLayerId,P,!1,!1)}else{let e=this.tx(o+h/2,l+a/2),i=this.ty(o+h/2,l+a/2),n=h*c.x*this.toPageUnits,s=-a*c.y*this.toPageUnits;this.flushBuffer(0,!0),this.currentVbb.addTexturedQuad(e,i,n,s,d,4294902015,0,this.currentLayerId,0),this.currentImage=t,this.flushBuffer(0,!0,1)}else console.warn("Zero size image, skipping")}_processProperties(t){x.isRef(t)&&(t=this.pdfRefMap[x.refKey(t)]);for(let e in t)x.isRef(t[e])&&(t[e]=this.pdfRefMap[x.refKey(t[e])]);return t}beginMarkedContent(t){t&&(t=this._processProperties(t));let e=t.name||t.DBID;isNaN(e)?this.taggedId=null:this.taggedId=parseInt(e),null!==this.taggedId&&this.dbId!==this.taggedId&&this.updateDBId(),t.VP&&(this.currentVpId=this.viewportCounter++),this.ocgStack.push({taggedId:this.taggedId,viewPortId:this.currentVpId})}beginMarkedContentProps(t,e){if(e&&(e=this._processProperties(e)),"OC"===t){var i=this.layers[x.getLayerKey(e)];void 0===i&&(i=this.currentLayerId),this.currentLayerId=i,this.ocgStack.push({layerId:this.currentLayerId})}else isNaN(t)||(this.taggedId=parseInt(t),this.dbId!==this.taggedId&&this.updateDBId()),e?(e.VP&&(this.currentVpId=this.viewportCounter++),this.ocgStack.push({viewPortId:this.currentVpId,taggedId:this.taggedId})):this.ocgStack.push({})}endMarkedContent(){this.ocgStack.length>0&&this.ocgStack.pop();const t=t=>{for(let e=this.ocgStack.length-1;e>=0;--e)if(t in this.ocgStack[e])return this.ocgStack[e][t];return null};let e=t("layerId"),i=t("viewPortId"),n=t("taggedId");this.currentLayerId=null!==e?e:this.defaultLayerId,this.currentVpId=null!==i?i:this.defaultVPId;let s=n!==this.taggedId;this.taggedId=n,s&&this.updateDBId()}setLineStyleParam(t){if(!this.lineStyleInitialized){let i=r.LineStyleDefs.length,n=1;for(var e=0;e0){let i=this.getCurrentTransform(),n=[];for(var e=0;e=0){const e=this.smallImageSequences[this.smallImageSequenceToCheck];if(e.start==t){this.inSmallImageRendering=!0;const t=i(e.bbox,this.viewport.transform),n=Math.floor(t[0])-1,s=Math.floor(t[1])-1,r=Math.ceil(t[2]-t[0])+2,o=Math.ceil(t[3]-t[1])+2;this.canvasContext.save(),this.canvasContext.setTransform(1,0,0,1,0,0),this.canvasContext._originalclearRect(n,s,r,o),this.canvasContext.fillStyle="rgba(255, 255, 255, 0.005)",this.canvasContext._originalfillRect(n,s,r,o),this.canvasContext.restore()}else if(e.end==t){this.inSmallImageRendering=!1;const t=i(e.bbox,this.viewport.transform),n=Math.floor(t[0])-1,s=Math.floor(t[1])-1,r=Math.ceil(t[2]-t[0])+2,o=Math.ceil(t[3]-t[1])+2;let l=document.createElement("canvas");l.width=r,l.height=o;l.getContext("2d").drawImage(this.canvasContext.canvas,n,s,r,o,0,0,r,o),this.canvasContext.save(),this.canvasContext.setTransform(1,0,0,1,0,0),this.canvasContext.drawImage(l,n,s,r,o),this.canvasContext.restore(),this.smallImageSequenceToCheck++,this.smallImageSequenceToCheck>=this.smallImageSequences.length&&(this.smallImageSequenceToCheck=-1)}}}setSmallImageSequences(t){t&&t.length>0&&(this.smallImageSequences=t,this.smallImageSequenceToCheck=0)}setTessParams(t){this.tessParams=t}finish(){this.flushBuffer(0,!0),this.fontAtlas=null}createViewPortData(t,e,i){return{units:e||"feet and inches",transform:t,geom_metrics:this.initGeomMetrics(),precision:i}}isLMVCanvasContext(){return!0}initGeomMetrics(){return{arcs:0,circles:0,circ_arcs:0,viewports:0,clips:0,colors:0,db_ids:0,dots:0,fills:0,layers:0,line_caps:0,line_joins:0,line_patterns:0,line_pat_refs:0,plines:0,pline_points:0,line_weights:0,links:0,miters:0,ptris:0,ptri_indices:0,ptri_points:0,rasters:0,texts:0,strings:[]}}addContextCurrentTransform(){const t=this.canvasContext;t.mozCurrentTransform||(t._originalSave=t.save,t._originalRestore=t.restore,t._originalRotate=t.rotate,t._originalScale=t.scale,t._originalTranslate=t.translate,t._originalTransform=t.transform,t._originalSetTransform=t.setTransform,t._transformMatrix=t._transformMatrix||[1,0,0,1,0,0],t._transformStack=[],Object.defineProperty(t,"mozCurrentTransform",{get:function(){return this._transformMatrix}}),Object.defineProperty(t,"mozCurrentTransformInverse",{get:function(){var t=this._transformMatrix,e=t[0],i=t[1],n=t[2],s=t[3],r=t[4],o=t[5],l=e*s-i*n,h=i*n-e*s;return[s/l,i/h,n/h,e/l,(s*r-n*o)/h,(i*r-e*o)/l]}}),t.save=function(){var t=this._transformMatrix;this._transformStack.push(t),this._transformMatrix=t.slice(0,6),this._originalSave()},t.restore=function(){var t=this._transformStack.pop();t&&(this._transformMatrix=t,this._originalRestore())},t.translate=function(t,e){var i=this._transformMatrix;i[4]=i[0]*t+i[2]*e+i[4],i[5]=i[1]*t+i[3]*e+i[5],this._originalTranslate(t,e)},t.scale=function(t,e){var i=this._transformMatrix;i[0]=i[0]*t,i[1]=i[1]*t,i[2]=i[2]*e,i[3]=i[3]*e,this._originalScale(t,e)},t.transform=function(e,i,n,s,r,o){var l=this._transformMatrix;this._transformMatrix=[l[0]*e+l[2]*i,l[1]*e+l[3]*i,l[0]*n+l[2]*s,l[1]*n+l[3]*s,l[0]*r+l[2]*o+l[4],l[1]*r+l[3]*o+l[5]],t._originalTransform(e,i,n,s,r,o)},t.setTransform=function(e,i,n,s,r,o){this._transformMatrix=[e,i,n,s,r,o],t._originalSetTransform(e,i,n,s,r,o)},t.rotate=function(t){var e=Math.cos(t),i=Math.sin(t),n=this._transformMatrix;this._transformMatrix=[n[0]*e+n[2]*i,n[1]*e+n[3]*i,n[0]*-i+n[2]*e,n[1]*-i+n[3]*e,n[4],n[5]],this._originalRotate(t)})}beginChildGroup(t){return t.smask?(this.inChildGroup=!1,!1):(this.flushBuffer(0,!0),this.overrideCompositeOperation=this.canvasContext.globalCompositeOperation,this.overrideAlpha*=this.canvasContext.globalAlpha,this.inChildGroup=!0,!0)}endChildGroup(t){return!!this.inChildGroup&&(this.flushBuffer(0,!0),!0)}_getModelToViewportMatrix(t,e){let i="string"==typeof t?JSON.parse(t):t;if(e){const t=new Autodesk.Viewing.Private.LmvMatrix4(!0).fromArray(i),e=new Autodesk.Viewing.Private.LmvMatrix4(!0).makeScale(this.viewport.scale,this.viewport.scale,1);e.multiply(t),i=e.elements}return i}}class g{constructor(t){if(Object.prototype.hasOwnProperty.call(t,"rawData")){const e=t.rawData;this.type=e[1],this.colorStops=e[3],this.startPoint=e[4],this.endPoint=e[5],this.startRadius=e[6],this.endRadius=e[7]}else Object.assign(this,t)}isValid(){return!!(this.type&&this.startPoint&&this.endPoint&&this.colorStops)&&("radial"!==this.type||void 0!==this.startRadius&&void 0!==this.endRadius)}getFillStyle(t){if(!this.isValid())return;const e=t.createLinearGradient(0,0,1,1);return Object.assign(e,this),e}generateCanvasGradient(t,e,i){if(!this.isValid())return;const n=this.type,s=this.colorStops,r=e||this.startPoint,o=i||this.endPoint,l=this.startRadius,h=this.endRadius;let a=null;"axial"===n||"linear"===n?a=t.createLinearGradient(r[0],r[1],o[0],o[1]):"radial"===n&&(a=t.createRadialGradient(r[0],r[1],l,o[0],o[1],h));for(let t=0,e=s.length;t{var n=i(4813),s=function(t,e){if(this.p=t,this.q=e,t.y>e.y)this.q=t,this.p=e;else if(t.y===e.y)if(t.x>e.x)this.q=t,this.p=e;else if(t.x===e.x)throw new Error("poly2tri Invalid Edge constructor: repeated points!",[t]);this.q._p2t_edge_list||(this.q._p2t_edge_list=[]),this.q._p2t_edge_list.push(this)};n.SweepContext.prototype.initEdges=function(t,e){var i,n=t.length,r=e?t.length-1:t.length;for(i=0;i{"use strict";i.r(e),i.d(e,{DefaultTessParams:()=>n,SetTesselationParams:()=>s,TesselateCubic:()=>l,TesselateQuad:()=>h,getCubeBezierPoint:()=>a});const n={numIterations:100,minSegLenFraction:.05};function s(t,e){t&&(n.numIterations=t),e&&(n.minSegLenFraction=e)}function r(t,e,i,n){return Math.sqrt((t-i)*(t-i)+(e-n)*(e-n))}function o(t,e){if(t>4*e&&e>0){var i=Math.sqrt(t/e);t=e*(i=Math.min(4,i))}return t}function l(t,e,i,s,l,h,a,p,u,d,c,f){c=c||n;var y=r(e,i,s,l)+r(s,l,h,a)+r(h,a,p,u);f||(d=o(d,y));for(var x=(d=d||1/c.minSegLenFraction)*c.minSegLenFraction,g=1/c.numIterations,P=g*g*g,m=3*g,v=m*g,C=v+v,_=6*P,I=e-2*s+h,E=i-2*l+a,T=3*(s-h)-e+p,b=3*(l-a)-i+u,L=e,S=i,A=(s-e)*m+I*v+T*P,N=(l-i)*m+E*v+b*P,O=I*C+T*_,w=E*C+b*_,X=T*_,M=b*_,F=0,Y=0|1/g-.5,B=0;B=x&&(t.lineTo(L,S),F=0);t.lineTo(p,u)}function h(t,e,i,s,l,h,a,p,u,d){u=u||n;var c=r(e,i,s,l)+r(s,l,h,a);d||(p=o(p,c));for(var f=(p=p||1/u.minSegLenFraction)*u.minSegLenFraction,y=1/u.numIterations,x=y*y,g=e-2*s+h,P=i-2*l+a,m=e,v=i,C=2*(s-e)*y+g*x,_=2*(l-i)*y+P*x,I=2*g*x,E=2*P*x,T=0,b=0|1/y-.5,L=0;L=f&&(t.lineTo(m,v),T=0);t.lineTo(h,a)}function a(t,e,i,n,s,r,o,l,h,a){var p=a||{x:void 0,y:void 0};let u=1-t,d=u*u*u,c=3*u*u*t,f=3*u*t*t,y=t*t*t;return p.x=d*e+c*n+f*r+y*l,p.y=d*i+c*s+f*o+y*h,p}},8597:(t,e,i)=>{"use strict";i.r(e),i.d(e,{ComplexPolygon:()=>h});var n=i(6435),s=i.n(n),r=i(9318),o=i(1272),l=i(299);class h{constructor(t,e,i){this.pts=t,this.contours=[],this.customInsideChecker=e,this.bbox=i,this._tmpVec=i instanceof THREE.Box3?new THREE.Vector3:new THREE.Vector2}addContour(t){this.contours.push(t)}pointInContour(t,e,i){var n,s,r,o,l,h,a=!1,p=this.pts;r=p[i[i.length-1]].x,n=(o=p[i[i.length-1]].y)>=e;for(var u=0,d=i.length;u=e)&&(h-e)*(r-l)>=(l-t)*(o-h)==s&&(a=!a),n=s,r=l,o=h;return a}pointInPolygon(t,e){for(var i=!1,n=0;n1&&void 0!==arguments[1]?arguments[1]:{}};if(!this.contours.length)return this.triangulationFailed=!0,void(this.indices=null);this.indices=[];var i=function(t,e){let i=e.getSize(e instanceof THREE.Box3?new THREE.Vector3:new THREE.Vector2),n=e.min.x+.5*i.x,s=e.min.y+.5*i.y,r=2/i.length(),o=[];for(let e=0,i=t.length;e10&&!this.customInsideChecker&&this.createPointInPolygonChecker();let e=t.map_;for(var i=0;i0?this.indices.push(t,e,i):this.indices.push(t,i,e)}}findSegmentIntersections(t,e,i,n){if(!this.cachedEdges){this.cachedEdges=[];for(let t=0;tt.d-e.d)),l[0].d{"use strict";i.r(e),i.d(e,{ContourSet:()=>o,polygonArea:()=>s});var n=i(8597);function s(t){if(t.length<3)return 0;let e=!1;t[0]!==t[t.length-1]&&(e=!0);let i=0;for(let e=0,n=t.length-1;e{let i=t.id;void 0===i&&(i=this.contours.length+":"+e);let s=this.allPointsMap[i];void 0===s&&(s=this.allPoints.length,this.allPoints.push(t),this.allPointsMap[i]=s,r.set(t.x,t.y),this.bbox.expandByPoint(r)),n.push(s)})),0===i&&e||(this.contours.push(n),this.areas.push(i))}addContourSet(t){let e=t.contours[0],i=t.allPoints,n=e.map((t=>i[t]));this.addContour(n)}triangulate(t){if(this.polygon)return;let e=this.allPoints,i=new n.ComplexPolygon(e,t,this.bbox);i.contours=this.contours,i.triangulate(),this.polygon=i,this.triangulationFailed=this.polygon.triangulationFailed}area(){return this.areas[0]}areaNet(){let t=this.areas[0];for(let e=1;e{let i=e.map((t=>this.allPoints[t].id));i[0]===i[i.length-1]&&i.pop(),i.sort(),t.push(i)})),JSON.stringify(t)}stitchContours(){this.areas=[];let t=[];for(var e=0;e0){let i=-s[0]-1,n=s[1];e[n].pop(),Array.prototype.push.apply(e[n],e[i]),t=i}if(s[0]>0&&s[1]<0){let i=s[0],n=-s[1]-1;e[i].pop(),Array.prototype.push.apply(e[i],e[n]),t=n}if(s[0]>0&&s[1]>0){let i=s[0],n=s[1];e[i].pop(),Array.prototype.push.apply(e[i],e[n].reverse()),t=n}void 0!==t&&(e.splice(t,1),i=!0);break}}}}containsPointFrom(t){if(!t.polygon.indices||t.polygon.indices.length<3)return!1;let e=t.allPoints[t.polygon.indices[0]],i=t.allPoints[t.polygon.indices[1]],n=t.allPoints[t.polygon.indices[2]],s=(e.x+i.x+n.x)/3,r=(e.y+i.y+n.y)/3;return this.polygon&&this.polygon.pointInPolygon(s,r)}toPolygonMesh(t){return this.polygon.toPolygonMesh(t)}toExtrudedMesh(t){return this.polygon.toExtrudedMesh(t)}}},4136:(t,e,i)=>{"use strict";i.r(e),i.d(e,{DCEL:()=>u});var n=i(1272),s=i(5229),r=i(7201),o=i(5420),l=i(299);const h=Autodesk.Viewing.Private.logger;class a{constructor(t,e){this.x=t,this.y=e,this.edges=[],this.dbIds=[],this.dbIdsChanged=!1}isDegenerate(){return this.edges.length<2}addEdge(t){for(let e=0;e=0?this.edges.splice(e,1):h.warn("Failed to find edge in vertex list")}findEdgeTo(t){for(let e=0;e{let i=t.angle;t.v1!==this&&(i-=Math.PI);let n=e.angle;return e.v1!==this&&(n-=Math.PI),i-n}))}_canTraverse(t){return t.v1!==this||t.flagFwd?t.v2===this&&!t.flagRev&&(t.flagRev=1,!0):(t.flagFwd=1,!0)}findUntraversedEdge(){for(let t=0;tt.u-e.u)),this.removeDirectedEdge(t);for(let t=1;t{let e=(0,n.segmentsIntersect)(t,a,this.precisionTolerance);e&&(e.e1&&e.e1.length&&(c[t.id]=e.e1),e.e2&&e.e2.length&&d.push.apply(d,e.e2))}));for(let t in c)this.splitEdge(this.edges[parseInt(t)],c[t]);return d.length&&this.splitEdge(a,d),this.dirty=!0,u}removeDirectedEdge(t){t.v1.removeEdge(t),t.v2.removeEdge(t),this.edges[t.id]=void 0,this.quadTreeEdges.deleteItem(t)}removeDanglingPolyline(t){for(;1===t.edges.length;){let e=t.edges[0],i=e.getOppositeVertex(t);this.removeDirectedEdge(e),t=i}}cleanupFlatEdges(){let t=[];this.verts.forEach((e=>{if(!e)return;if(2!==e.edges.length)return;let i=e.edges[0],n=e.edges[1],s=Math.abs(i.angle-n.angle);(s<.002||Math.abs(s-Math.PI)<.002)&&t.push(e);let r=i.getOppositeVertex(e),o=n.getOppositeVertex(e);if(r.findEdgeTo(o)){.5*Math.abs(i.dx*n.dy-n.dx*i.dy)<.001&&t.push(e)}}));for(let e=0;e=0;t--){let e=this.closedAreas[t];if(i.containsPointFrom(e)){if(!e.isHole){i.isHole=!0,this.holes.push(i);break}i.addContourSet(e)}}i.isHole||i.triangulate(t)}for(let e=0,i=this.holes.length;e=0;t--){let e=this.holes[t];e.holeProcessFlag||i.containsPointFrom(e)&&(i.addContourSet(e),i.isHole=!1,e.holeProcessFlag=!0)}i.isHole||i.triangulate(t)}let e=[];for(let t=0;tt.sortEdges()));let i=[],n=[];this.verts.forEach((t=>{let e=t.findUntraversedEdge();if(!e)return;let s=[t],r=e.getOppositeVertex(t);do{if(s.push(r),e=r.findNextCCWEdge(e),!e)break;r=e.getOppositeVertex(r)}while(r&&r!==t);r===t?(s.push(t),i.push(s)):n.push(s)})),this.closedAreas=[];for(let t=0,e=i.length;tt.area()-e.area())),t?this._detectHolesEvenOdd(e):this._detectHolesNonZero(e),this.openAreas=[],n.length){let t=[],e=new r.ContourSet;for(let t=0,i=n.length;t{let e=(0,n.segmentsIntersect)(t,l,this.precisionTolerance);e&&e.e1&&e.e1.length&&(h[t.id]=e.e1)}));for(let t in h){let e=parseInt(t),i=this.edges[e];this.removeDirectedEdge(i),this.removeDanglingPolyline(i.v1),this.removeDanglingPolyline(i.v2)}this.dirty=!0}deleteEdgesInRectangle(t,e,i,n){let s=Math.min(t,i),r=Math.min(e,n),o=Math.max(t,i),l=Math.max(e,n),h={};this.quadTreeEdges.enumInBox(s,r,o,l,(t=>{h[t.id]=t}));for(let t in h){let e=parseInt(t),i=this.edges[e];i&&(this.removeDirectedEdge(i),this.removeDanglingPolyline(i.v1),this.removeDanglingPolyline(i.v2))}this.dirty=!0}findNearestVertex(t,e,i){"number"!=typeof i&&(i=this.precisionTolerance);let n=1/0,s=null;return this.verts.enumInBox(t-i,e-i,t+i,e+i,(i=>{let r=(i.x-t)*(i.x-t)+(i.y-e)*(i.y-e);r{(0,n.pointOnLine)(t,e,o,!0,i,s)&&s.d{"use strict";i.r(e),i.d(e,{EdgeSet:()=>d});var n,s=i(9318),r=i(299),o=i(8597);function l(t){return t[t.LMV_APP_NAMESPACE]=t[t.LMV_APP_NAMESPACE]||{}}function h(){const t="undefined"!=typeof window&&null!==window?window:"undefined"!=typeof self&&null!==self?self:i.g;return t.USE_LMV_APP_NAMESPACES?(t.globalProxy||(t.globalProxy=new Proxy({},{get(e,i){let n=t[i];return"function"==typeof n?function(t,e){return new Proxy(e,{get:(t,e)=>t[e],apply:(e,i,n)=>e.call(t||i,...n)})}(t,n):n},set:(e,i,n)=>(Object.prototype.hasOwnProperty.call(t,i)?t[i]!==n&&(t[i]=n):(l(t)[i]=n,Object.defineProperty(t,i,{get:()=>l(t)[i],set:e=>{l(t)[i]=e}})),!0)})),t.globalProxy):t}const a=h(),p=(a&&a.document,"undefined"!=typeof navigator);p&&navigator.userAgent.match(/Edge|Trident\/7\./),p&&navigator.userAgent.match(/Trident\/7\./);p&&(/ip(ad|hone|od)/.test(navigator.userAgent.toLowerCase())||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1||/^ip(ad|hone|od)$/.test(null===(n=navigator.platform)||void 0===n?void 0:n.toLowerCase()));p&&navigator.userAgent.toLowerCase().indexOf("android");const u=h();class d{constructor(t,e,i){this.edges=t,this.bbox=e,this.verts=new r.UniquePointList(e,i),this.polygon=null}getPointIndex(t,e){return this.verts.findOrAddPoint(t,e).id}snapEdges(){for(var t=0;t1){o=e;break}if(!o)for(let e in t)if(t[e].length>0){o=e;break}if(!o)break;var l=-1,h=parseInt(o),a=t[o];for(n.push(h);a&&a.length;){var p=a.shift();if(p===l&&(p=a.shift()),void 0===p){delete t[h];break}n.push(p),(0==a.length||a[0]===l)&&delete t[h],l=h,h=p,a=t[p]}n.length&&(this.contours.push(n),n=[])}var d=[];for(let t=0;t0){const t=-m[0]-1,e=m[1];x[e].pop(),Array.prototype.push.apply(x[e],x[t]),v=t}if(m[0]>0&&m[1]<0){const t=m[0],e=-m[1]-1;x[t].pop(),Array.prototype.push.apply(x[t],x[e]),v=e}if(m[0]>0&&m[1]>0){const t=m[0],e=m[1];x[t].pop(),Array.prototype.push.apply(x[t],x[e].reverse()),v=e}void 0!==v&&(x.splice(v,1),f=!0);break}}}}cleanupFlatEdges(){let t=this.verts.pts,e=this.verts.precisionTolerance;for(let i=0;i0&&void 0!==arguments[0]?arguments[0]:{},e=new s.IntervalTree(this.verts.pts,this.edges,this.bbox);e.build();let i=new o.ComplexPolygon(this.verts.pts,e,this.bbox);return i.contours=this.contours,i.triangulate(t),i}}},2324:(t,e,i)=>{"use strict";i.r(e),i.d(e,{EllipseArc:()=>u,angleInsideArc:()=>h,angleInsideArcCCW:()=>l,getAngleDelta:()=>o,getEllipseArcPoint:()=>s,getEllipsePoint:()=>n,normalizeAngle:()=>r});const n=function(t,e,i,n,s){let r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;const o=(arguments.length>6&&void 0!==arguments[6]?arguments[6]:null)||new THREE.Vector2;let l=e+n*Math.cos(t),h=i+s*Math.sin(t);if(0!==r){const t=Math.cos(r),n=Math.sin(r),s=l-e,o=h-i;l=s*t-o*n+e,h=s*n+o*t+i}return o.set(l,h)},s=function(t,e,i,s,o,l,h){let a=arguments.length>7&&void 0!==arguments[7]?arguments[7]:0,p=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,u=h-l;if(Math.abs(u)(t/=2*Math.PI,(t-=Math.trunc(t))<0&&(t+=1),2*t*Math.PI),o=(t,e,i)=>{let n=e-t;return n=r(n),i?n:2*Math.PI-n},l=(t,e,i)=>(t=r(t),(e=r(e))<(i=r(i))?t>=e&&t<=i:t>=e||t<=i),h=function(t,e,i){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const s=l(t,e,i);return n?s:!s},a=(t,e,i,n)=>{var s=t*i+e*n,r=Math.sqrt(t*t+e*e)*Math.sqrt(i*i+n*n),o=Math.acos(Math.max(-1,Math.min(1,s/r)));return t*n-e*i<0&&(o=-o),o},p=new THREE.Vector2;class u{constructor(t,e,i,n,s,r,o,l){this.set(t,e,i,n,s,r,o,l)}set(t,e,i,n,s,r,o,l){return this.cx=t,this.cy=e,this.rx=i,this.ry=n,this.startAngle=r,this.endAngle=o,this.ccw=l,this.rotation=s,this}setFromSvgArc(t,e,i,n,s,r,o){const l=i*Math.PI/180;if(t=Math.abs(t),e=Math.abs(e),0==t||0==e){const i=.01,n=360*p.copy(r).distanceTo(o)/i/(2*Math.PI);t=n,e=n}const h=(r.x-o.x)/2,u=(r.y-o.y)/2,d=Math.cos(l)*h+Math.sin(l)*u,c=-Math.sin(l)*h+Math.cos(l)*u;let f=t*t,y=e*e;const x=d*d,g=c*c,P=x/f+g/y;if(P>1){const i=Math.sqrt(P);f=(t*=i)*t,y=(e*=i)*e}const m=f*g+y*x,v=(f*y-m)/m;let C=Math.sqrt(Math.max(0,v));n===s&&(C=-C);const _=C*t*c/e,I=-C*e*d/t,E=Math.cos(l)*_-Math.sin(l)*I+(r.x+o.x)/2,T=Math.sin(l)*_+Math.cos(l)*I+(r.y+o.y)/2,b=a(1,0,(d-_)/t,(c-I)/e),L=a((d-_)/t,(c-I)/e,(-d-_)/t,(-c-I)/e)%(2*Math.PI);return this.cx=E,this.cy=T,this.rx=t,this.ry=e,this.rotation=l,this.startAngle=b,this.endAngle=b+L,this.ccw=s,this}getPoint(t,e){let i=this.startAngle,n=this.endAngle;return this.ccw||(i=this.endAngle,n=this.startAngle,t=1-t),s(t,this.cx,this.cy,this.rx,this.ry,i,n,this.rotation,e)}isValid(){return isFinite(this.cx)&&isFinite(this.cy)&&isFinite(this.rx)&&isFinite(this.ry)&&isFinite(this.rotation)&&isFinite(this.startAngle)&&isFinite(this.endAngle)}computeBBox(t){const e=Math.tan(this.rotation),i=-Math.atan(this.ry*e/this.rx),s=Math.PI-Math.atan(this.ry*e/this.rx),r=Math.atan(this.ry/(e*this.rx)),o=Math.PI+Math.atan(this.ry/(e*this.rx)),l=t?t.makeEmpty():new THREE.Box2,a=t=>{const e=n(t,this.cx,this.cy,this.rx,this.ry,this.rotation);l.expandByPoint(e)};return a(this.startAngle),a(this.endAngle),h(i,this.startAngle,this.endAngle,this.ccw)&&a(i),h(s,this.startAngle,this.endAngle,this.ccw)&&a(s),h(r,this.startAngle,this.endAngle,this.ccw)&&a(r),h(o,this.startAngle,this.endAngle,this.ccw)&&a(o),l}tesselate(t,e,i){const n=this.getPoint(0);for(var s=1;s{"use strict";i.r(e),i.d(e,{TOL:()=>n,isEqual:()=>r,isZero:()=>s});const n=1e-6;function s(t){return Math.abs(t){var n=Autodesk.Viewing,s=AutodeskNamespace("Autodesk.Viewing.Extensions.CompGeom");function r(e,i){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t.exports[n]=e[n],i[n]=e[n])}r(i(7201),s),r(i(2302),s),r(i(4136),s),r(i(5229),s),r(i(5420),s),r(i(2554),s),r(i(3965),s),r(i(2601),s),r(i(1272),s),r(i(6353),s),r(i(8189),s),r(i(908),s),r(i(9318),s),r(i(8597),s),r(i(299),s),r(i(6435),s),r(i(2324),s),r(i(8831),s),r(i(6986),s),r(i(8917),s);class o extends n.Extension{constructor(t,e){super(t,e)}load(){return!0}unload(){return!0}activate(){return!0}deactivate(){return!1}}n.theExtensionManager.registerExtension("Autodesk.CompGeom",o)},9318:(t,e,i)=>{"use strict";function n(){this.bbox=new THREE.Box2,this.left=null,this.right=null,this.node_edges=[]}function s(t,e,i){this.pts=t,this.edges=e,this.bbox=i,this.pipResult=!1}i.r(e),i.d(e,{IntervalTree:()=>s}),s.prototype.splitNode=function(t){if(!(t.bbox.min.y>=t.bbox.max.y||t.node_edges.length<3)){var e=.5*(t.bbox.min.y+t.bbox.max.y);t.left=new n,t.right=new n;for(var i=this.pts,s=t.node_edges,r=[],o=new THREE.Vector2,l=0;lp){var u=a;a=p,p=u}var d=null;pe?(t.right.node_edges.push(s[l]),d=t.right.bbox):r.push(s[l]),d&&(o.set(i[h.p1].x,i[h.p1].y),d.expandByPoint(o),o.set(i[h.p2].x,i[h.p2].y),d.expandByPoint(o))}t.node_edges=r,t.left.node_edges.length&&this.splitNode(t.left),t.right.node_edges.length&&this.splitNode(t.right)}},s.prototype.build=function(){this.root=new n;for(var t=this.root.node_edges,e=0;e=i)for(var n=this.pts,s=t.node_edges,r=0,o=s.length;r=i,d=n[l.p2],c=d.x,f=d.y,y=f>=i;u!=y&&(f-i)*(a-c)>=(c-e)*(p-f)==y&&(this.pipResult=!this.pipResult)}var x=t.left;x&&x.bbox.min.y<=i&&x.bbox.max.y>=i&&this.pointInPolygonRec(x,e,i);var g=t.right;g&&g.bbox.min.y<=i&&g.bbox.max.y>=i&&this.pointInPolygonRec(g,e,i)},s.prototype.pointInPolygon=function(t,e){return this.pipResult=!1,this.pointInPolygonRec(this.root,t,e),this.pipResult}},2641:t=>{!function(){"use strict";var e={version:"6.4.2.2",use_lines:!0,use_xyz:!1},i=!1;if(t.exports?(t.exports=e,i=!0):"undefined"!=typeof document?window.ClipperLib=e:self.ClipperLib=e,i){n="chrome";"Netscape"}else{var n=navigator.userAgent.toString().toLowerCase();navigator.appName}var s={};-1!=n.indexOf("chrome")&&-1==n.indexOf("chromium")?s.chrome=1:s.chrome=0,-1!=n.indexOf("chromium")?s.chromium=1:s.chromium=0,-1!=n.indexOf("safari")&&-1==n.indexOf("chrome")&&-1==n.indexOf("chromium")?s.safari=1:s.safari=0,-1!=n.indexOf("firefox")?s.firefox=1:s.firefox=0,-1!=n.indexOf("firefox/17")?s.firefox17=1:s.firefox17=0,-1!=n.indexOf("firefox/15")?s.firefox15=1:s.firefox15=0,-1!=n.indexOf("firefox/3")?s.firefox3=1:s.firefox3=0,-1!=n.indexOf("opera")?s.opera=1:s.opera=0,-1!=n.indexOf("msie 10")?s.msie10=1:s.msie10=0,-1!=n.indexOf("msie 9")?s.msie9=1:s.msie9=0,-1!=n.indexOf("msie 8")?s.msie8=1:s.msie8=0,-1!=n.indexOf("msie 7")?s.msie7=1:s.msie7=0,-1!=n.indexOf("msie ")?s.msie=1:s.msie=0;var r=function(t,e){var i;if(void 0===Object.getOwnPropertyNames){for(i in e.prototype)void 0!==t.prototype[i]&&t.prototype[i]!==Object.prototype[i]||(t.prototype[i]=e.prototype[i]);for(i in e)void 0===t[i]&&(t[i]=e[i]);t.$baseCtor=e}else{for(var n=Object.getOwnPropertyNames(e.prototype),s=0;s0?this.m_Childs[0]:this.GetNextSiblingUp()},e.PolyNode.prototype.GetNextSiblingUp=function(){return null===this.m_Parent?null:this.m_Index===this.m_Parent.m_Childs.length-1?this.m_Parent.GetNextSiblingUp():this.m_Parent.m_Childs[this.m_Index+1]},e.PolyNode.prototype.Childs=function(){return this.m_Childs},e.PolyNode.prototype.Parent=function(){return this.m_Parent},e.PolyNode.prototype.IsHole=function(){return this.IsHoleNode()},e.PolyTree=function(){this.m_AllPolys=[],e.PolyNode.call(this)},e.PolyTree.prototype.Clear=function(){for(var t=0,e=this.m_AllPolys.length;t0?this.m_Childs[0]:null},e.PolyTree.prototype.Total=function(){var t=this.m_AllPolys.length;return t>0&&this.m_Childs[0]!==this.m_AllPolys[0]&&t--,t},r(e.PolyTree,e.PolyNode),e.Clear=function(t){t.length=0},e.PI=3.141592653589793,e.PI2=6.283185307179586,e.FPoint=function(){var t=arguments,i=t.length;if(this.X=0,this.Y=0,e.use_xyz)if(this.Z=0,3===i)this.X=t[0],this.Y=t[1],this.Z=t[2];else if(2===i)this.X=t[0],this.Y=t[1],this.Z=0;else if(1===i)if(t[0]instanceof e.FPoint){var n=t[0];this.X=n.X,this.Y=n.Y,this.Z=0}else{void 0===(s=t[0]).Z&&(s.Z=0),this.X=s.X,this.Y=s.Y,this.Z=s.Z}else this.X=0,this.Y=0,this.Z=0;else if(2===i)this.X=t[0],this.Y=t[1];else if(1===i)if(t[0]instanceof e.FPoint){n=t[0];this.X=n.X,this.Y=n.Y}else{var s=t[0];this.X=s.X,this.Y=s.Y}else this.X=0,this.Y=0},e.FPoint.op_Equality=function(t,e){return t.X===e.X&&t.Y===e.Y},e.FPoint.op_Inequality=function(t,e){return t.X!==e.X||t.Y!==e.Y},e.FPoint0=function(){this.X=0,this.Y=0,e.use_xyz&&(this.Z=0)},e.FPoint0.prototype=e.FPoint.prototype,e.FPoint1=function(t){this.X=t.X,this.Y=t.Y,e.use_xyz&&(void 0===t.Z?this.Z=0:this.Z=t.Z)},e.FPoint1.prototype=e.FPoint.prototype,e.FPoint1dp=function(t){this.X=t.X,this.Y=t.Y,e.use_xyz&&(this.Z=0)},e.FPoint1dp.prototype=e.FPoint.prototype,e.FPoint2=function(t,i,n){this.X=t,this.Y=i,e.use_xyz&&(this.Z=void 0===n?0:n)},e.FPoint2.prototype=e.FPoint.prototype,e.FRect=function(){var t=arguments,e=t.length;if(4===e)this.left=t[0],this.top=t[1],this.right=t[2],this.bottom=t[3];else if(1===e){var i=t[0];this.left=i.left,this.top=i.top,this.right=i.right,this.bottom=i.bottom}else this.left=0,this.top=0,this.right=0,this.bottom=0},e.FRect0=function(){this.left=0,this.top=0,this.right=0,this.bottom=0},e.FRect0.prototype=e.FRect.prototype,e.FRect1=function(t){this.left=t.left,this.top=t.top,this.right=t.right,this.bottom=t.bottom},e.FRect1.prototype=e.FRect.prototype,e.FRect4=function(t,e,i,n){this.left=t,this.top=e,this.right=i,this.bottom=n},e.FRect4.prototype=e.FRect.prototype,e.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3},e.PolyType={ptSubject:0,ptClip:1},e.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3},e.JoinType={jtSquare:0,jtRound:1,jtMiter:2},e.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4},e.EdgeSide={esLeft:0,esRight:1},e.Direction={dRightToLeft:0,dLeftToRight:1},e.TEdge=function(){this.Bot=new e.FPoint0,this.Curr=new e.FPoint0,this.Top=new e.FPoint0,this.Delta=new e.FPoint0,this.Dx=0,this.PolyTyp=e.PolyType.ptSubject,this.Side=e.EdgeSide.esLeft,this.WindDelta=0,this.WindCnt=0,this.WindCnt2=0,this.OutIdx=0,this.Next=null,this.Prev=null,this.NextInLML=null,this.NextInAEL=null,this.PrevInAEL=null,this.NextInSEL=null,this.PrevInSEL=null},e.IntersectNode=function(){this.Edge1=null,this.Edge2=null,this.Pt=new e.FPoint0},e.MyIntersectNodeSort=function(){},e.MyIntersectNodeSort.Compare=function(t,e){var i=e.Pt.Y-t.Pt.Y;return i>0?1:i<0?-1:0},e.LocalMinima=function(){this.Y=0,this.LeftBound=null,this.RightBound=null,this.Next=null},e.Scanbeam=function(){this.Y=0,this.Next=null},e.Maxima=function(){this.X=0,this.Next=null,this.Prev=null},e.OutRec=function(){this.Idx=0,this.IsHole=!1,this.IsOpen=!1,this.FirstLeft=null,this.Pts=null,this.BottomPt=null,this.PolyNode=null},e.OutPt=function(){this.Idx=0,this.Pt=new e.FPoint0,this.Next=null,this.Prev=null},e.Join=function(){this.OutPt1=null,this.OutPt2=null,this.OffPt=new e.FPoint0},e.ClipperBase=function(){this.m_MinimaList=null,this.m_CurrentLM=null,this.m_edges=new Array,this.m_HasOpenPaths=!1,this.PreserveCollinear=!1,this.m_Scanbeam=null,this.m_PolyOuts=null,this.m_ActiveEdges=null},e.ClipperBase.horizontal=-34e37,e.ClipperBase.Skip=-2,e.ClipperBase.Unassigned=-1,e.ClipperBase.tolerance=1e-20,e.ClipperBase.maxValue=Math.sqrt(Number.MAX_VALUE),e.ClipperBase.minValue=Math.sqrt(Number.MIN_VALUE),e.ClipperBase.near_zero=function(t){return t>-e.ClipperBase.tolerance&&te.X==t.Xe.Y==t.Ye.ClipperBase.maxValue||t.X<-e.ClipperBase.maxValue||t.Y>e.ClipperBase.maxValue||t.Y<-e.ClipperBase.maxValue||t.X>0&&t.X0&&t.Y-e.ClipperBase.minValue||t.Y<0&&t.Y>-e.ClipperBase.minValue)&&e.Error("Coordinate outside allowed range in RangeTest().")},e.ClipperBase.prototype.InitEdge=function(t,i,n,s){t.Next=i,t.Prev=n,t.Curr.X=s.X,t.Curr.Y=s.Y,e.use_xyz&&(t.Curr.Z=s.Z),t.OutIdx=-1},e.ClipperBase.prototype.InitEdge2=function(t,i){t.Curr.Y>=t.Next.Curr.Y?(t.Bot.X=t.Curr.X,t.Bot.Y=t.Curr.Y,e.use_xyz&&(t.Bot.Z=t.Curr.Z),t.Top.X=t.Next.Curr.X,t.Top.Y=t.Next.Curr.Y,e.use_xyz&&(t.Top.Z=t.Next.Curr.Z)):(t.Top.X=t.Curr.X,t.Top.Y=t.Curr.Y,e.use_xyz&&(t.Top.Z=t.Curr.Z),t.Bot.X=t.Next.Curr.X,t.Bot.Y=t.Next.Curr.Y,e.use_xyz&&(t.Bot.Z=t.Next.Curr.Z)),this.SetDx(t),t.PolyTyp=i},e.ClipperBase.prototype.FindNextLocMin=function(t){for(var i;;){for(;e.FPoint.op_Inequality(t.Bot,t.Prev.Bot)||e.FPoint.op_Equality(t.Curr,t.Top);)t=t.Next;if(t.Dx!==e.ClipperBase.horizontal&&t.Prev.Dx!==e.ClipperBase.horizontal)break;for(;t.Prev.Dx===e.ClipperBase.horizontal;)t=t.Prev;for(i=t;t.Dx===e.ClipperBase.horizontal;)t=t.Next;if(t.Top.Y!==t.Prev.Bot.Y){i.Prev.Bot.Xr.Next.Top.X&&(r=s.Prev)}for(;t!==r;)t.NextInLML=t.Next,t.Dx===e.ClipperBase.horizontal&&t!==n&&t.Bot.X!==t.Prev.Top.X&&this.ReverseHorizontal(t),t=t.Next;t.Dx===e.ClipperBase.horizontal&&t!==n&&t.Bot.X!==t.Prev.Top.X&&this.ReverseHorizontal(t),r=r.Next}else{for(;r.Top.Y===r.Prev.Bot.Y&&r.Prev.OutIdx!==e.ClipperBase.Skip;)r=r.Prev;if(r.Dx===e.ClipperBase.horizontal&&r.Prev.OutIdx!==e.ClipperBase.Skip){for(s=r;s.Next.Dx===e.ClipperBase.horizontal;)s=s.Next;(s.Next.Top.X===r.Prev.Top.X||s.Next.Top.X>r.Prev.Top.X)&&(r=s.Next)}for(;t!==r;)t.NextInLML=t.Prev,t.Dx===e.ClipperBase.horizontal&&t!==n&&t.Bot.X!==t.Next.Top.X&&this.ReverseHorizontal(t),t=t.Prev;t.Dx===e.ClipperBase.horizontal&&t!==n&&t.Bot.X!==t.Next.Top.X&&this.ReverseHorizontal(t),r=r.Prev}return r},e.ClipperBase.prototype.AddPath=function(t,i,n){e.use_lines?n||i!==e.PolyType.ptClip||e.Error("AddPath: Open paths must be subject."):n||e.Error("AddPath: Open paths have been disabled.");var s=t.length-1;if(n)for(;s>0&&e.FPoint.op_Equality(t[s],t[0]);)--s;for(;s>0&&e.FPoint.op_Equality(t[s],t[s-1]);)--s;if(n&&s<2||!n&&s<1)return!1;for(var r=new Array,o=0;o<=s;o++)r.push(new e.TEdge);var l=!0;r[1].Curr.X=t[1].X,r[1].Curr.Y=t[1].Y,e.use_xyz&&(r[1].Curr.Z=t[1].Z),this.RangeTest(t[0]),this.RangeTest(t[s]),this.InitEdge(r[0],r[1],r[s],t[0]),this.InitEdge(r[s],r[0],r[s-1],t[s]);for(o=s-1;o>=1;--o)this.RangeTest(t[o]),this.InitEdge(r[o],r[o+1],r[o-1],t[o]);for(var h,a=r[0],p=a,u=a;;)if(p.Curr!==p.Next.Curr||!n&&p.Next===a){if(p.Prev===p.Next)break;if(!n||!e.ClipperBase.SlopesEqual4(p.Prev.Curr,p.Curr,p.Next.Curr)||this.PreserveCollinear&&this.Pt2IsBetweenPt1AndPt3(p.Prev.Curr,p.Curr,p.Next.Curr)){if((p=p.Next)===u||!n&&p.Next===a)break}else p===a&&(a=p.Next),u=p=(p=this.RemoveEdge(p)).Prev}else{if(p===p.Next)break;p===a&&(a=p.Next),u=p=this.RemoveEdge(p)}if(!n&&p===p.Next||n&&p.Prev===p.Next)return!1;n||(this.m_HasOpenPaths=!0,a.Prev.OutIdx=e.ClipperBase.Skip),p=a;do{this.InitEdge2(p,i),p=p.Next,l&&p.Curr.Y!==a.Curr.Y&&(l=!1)}while(p!==a);if(l){if(n)return!1;for(p.Prev.OutIdx=e.ClipperBase.Skip,(c=new e.LocalMinima).Next=null,c.Y=p.Bot.Y,c.LeftBound=null,c.RightBound=p,c.RightBound.Side=e.EdgeSide.esRight,c.RightBound.WindDelta=0;p.Bot.X!==p.Prev.Top.X&&this.ReverseHorizontal(p),p.Next.OutIdx!==e.ClipperBase.Skip;)p.NextInLML=p.Next,p=p.Next;return this.InsertLocalMinima(c),this.m_edges.push(r),!0}this.m_edges.push(r);var d=null;for(e.FPoint.op_Equality(p.Prev.Bot,p.Prev.Top)&&(p=p.Next);(p=this.FindNextLocMin(p))!==d;){var c;null===d&&(d=p),(c=new e.LocalMinima).Next=null,c.Y=p.Bot.Y,p.Dxt.X==i.Xt.Y==i.Y=this.m_MinimaList.Y)t.Next=this.m_MinimaList,this.m_MinimaList=t;else{for(var e=this.m_MinimaList;null!==e.Next&&t.Ythis.m_Scanbeam.Y){var i=new e.Scanbeam;i.Y=t,i.Next=this.m_Scanbeam,this.m_Scanbeam=i}else{for(var n=this.m_Scanbeam;null!==n.Next&&t<=n.Next.Y;)n=n.Next;if(t===n.Y)return;var s=new e.Scanbeam;s.Y=t,s.Next=n.Next,n.Next=s}},e.ClipperBase.prototype.PopScanbeam=function(t){return null===this.m_Scanbeam?(t.v=0,!1):(t.v=this.m_Scanbeam.Y,this.m_Scanbeam=this.m_Scanbeam.Next,!0)},e.ClipperBase.prototype.LocalMinimaPending=function(){return null!==this.m_CurrentLM},e.ClipperBase.prototype.CreateOutRec=function(){var t=new e.OutRec;return t.Idx=e.ClipperBase.Unassigned,t.IsHole=!1,t.IsOpen=!1,t.FirstLeft=null,t.Pts=null,t.BottomPt=null,t.PolyNode=null,this.m_PolyOuts.push(t),t.Idx=this.m_PolyOuts.length-1,t},e.ClipperBase.prototype.DisposeOutRec=function(t){var e=this.m_PolyOuts[t];e.Pts=null,e=null,this.m_PolyOuts[t]=null},e.ClipperBase.prototype.UpdateEdgeIntoAEL=function(t){null===t.NextInLML&&e.Error("UpdateEdgeIntoAEL: invalid call");var i=t.PrevInAEL,n=t.NextInAEL;return t.NextInLML.OutIdx=t.OutIdx,null!==i?i.NextInAEL=t.NextInLML:this.m_ActiveEdges=t.NextInLML,null!==n&&(n.PrevInAEL=t.NextInLML),t.NextInLML.Side=t.Side,t.NextInLML.WindDelta=t.WindDelta,t.NextInLML.WindCnt=t.WindCnt,t.NextInLML.WindCnt2=t.WindCnt2,(t=t.NextInLML).Curr.X=t.Bot.X,t.Curr.Y=t.Bot.Y,t.PrevInAEL=i,t.NextInAEL=n,e.ClipperBase.IsHorizontal(t)||this.InsertScanbeam(t.Top.Y),t},e.ClipperBase.prototype.SwapPositionsInAEL=function(t,e){if(t.NextInAEL!==t.PrevInAEL&&e.NextInAEL!==e.PrevInAEL){if(t.NextInAEL===e){var i=e.NextInAEL;null!==i&&(i.PrevInAEL=t);var n=t.PrevInAEL;null!==n&&(n.NextInAEL=e),e.PrevInAEL=n,e.NextInAEL=t,t.PrevInAEL=e,t.NextInAEL=i}else if(e.NextInAEL===t){var s=t.NextInAEL;null!==s&&(s.PrevInAEL=e);var r=e.PrevInAEL;null!==r&&(r.NextInAEL=t),t.PrevInAEL=r,t.NextInAEL=e,e.PrevInAEL=t,e.NextInAEL=s}else{var o=t.NextInAEL,l=t.PrevInAEL;t.NextInAEL=e.NextInAEL,null!==t.NextInAEL&&(t.NextInAEL.PrevInAEL=t),t.PrevInAEL=e.PrevInAEL,null!==t.PrevInAEL&&(t.PrevInAEL.NextInAEL=t),e.NextInAEL=o,null!==e.NextInAEL&&(e.NextInAEL.PrevInAEL=e),e.PrevInAEL=l,null!==e.PrevInAEL&&(e.PrevInAEL.NextInAEL=e)}null===t.PrevInAEL?this.m_ActiveEdges=t:null===e.PrevInAEL&&(this.m_ActiveEdges=e)}},e.ClipperBase.prototype.DeleteFromAEL=function(t){var e=t.PrevInAEL,i=t.NextInAEL;null===e&&null===i&&t!==this.m_ActiveEdges||(null!==e?e.NextInAEL=i:this.m_ActiveEdges=i,null!==i&&(i.PrevInAEL=e),t.NextInAEL=null,t.PrevInAEL=null)},e.Clipper=function(t){void 0===t&&(t=0),this.m_PolyOuts=null,this.m_ClipType=e.ClipType.ctIntersection,this.m_Scanbeam=null,this.m_Maxima=null,this.m_ActiveEdges=null,this.m_SortedEdges=null,this.m_IntersectList=null,this.m_IntersectNodeComparer=null,this.m_ExecuteLocked=!1,this.m_ClipFillType=e.PolyFillType.pftEvenOdd,this.m_SubjFillType=e.PolyFillType.pftEvenOdd,this.m_Joins=null,this.m_GhostJoins=null,this.m_UsingPolyTree=!1,this.ReverseSolution=!1,this.StrictlySimple=!1,e.ClipperBase.call(this),this.m_Scanbeam=null,this.m_Maxima=null,this.m_ActiveEdges=null,this.m_SortedEdges=null,this.m_IntersectList=new Array,this.m_IntersectNodeComparer=e.MyIntersectNodeSort.Compare,this.m_ExecuteLocked=!1,this.m_UsingPolyTree=!1,this.m_PolyOuts=new Array,this.m_Joins=new Array,this.m_GhostJoins=new Array,this.ReverseSolution=!!(1&t),this.StrictlySimple=!!(2&t),this.PreserveCollinear=!!(4&t),e.use_xyz&&(this.ZFillFunction=null)},e.Clipper.ioReverseSolution=1,e.Clipper.ioStrictlySimple=2,e.Clipper.ioPreserveCollinear=4,e.Clipper.prototype.Clear=function(){0!==this.m_edges.length&&(this.DisposeAllPolyPts(),e.ClipperBase.prototype.Clear.call(this))},e.Clipper.prototype.InsertMaxima=function(t){var i=new e.Maxima;if(i.X=t,null===this.m_Maxima)this.m_Maxima=i,this.m_Maxima.Next=null,this.m_Maxima.Prev=null;else if(t=n.Next.X;)n=n.Next;if(t===n.X)return;i.Next=n.Next,i.Prev=n,null!==n.Next&&(n.Next.Prev=i),n.Next=i}},e.Clipper.prototype.Execute=function(){var t=arguments,i=t.length,n=t[1]instanceof e.PolyTree;if(4===i&&!n){var s=t[0],r=t[1],o=t[2],l=t[3];if(this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&e.Error("Error: PolyTree struct is needed for open path clipping."),this.m_ExecuteLocked=!0,e.Clear(r),this.m_SubjFillType=o,this.m_ClipFillType=l,this.m_ClipType=s,this.m_UsingPolyTree=!1;try{(a=this.ExecuteInternal())&&this.BuildResult(r)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return a}if(4===i&&n){s=t[0];var h=t[1];o=t[2],l=t[3];if(this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0,this.m_SubjFillType=o,this.m_ClipFillType=l,this.m_ClipType=s,this.m_UsingPolyTree=!0;try{var a;(a=this.ExecuteInternal())&&this.BuildResult2(h)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return a}if(2===i&&!n){s=t[0],r=t[1];return this.Execute(s,r,e.PolyFillType.pftEvenOdd,e.PolyFillType.pftEvenOdd)}if(2===i&&n){s=t[0],h=t[1];return this.Execute(s,h,e.PolyFillType.pftEvenOdd,e.PolyFillType.pftEvenOdd)}},e.Clipper.prototype.FixHoleLinkage=function(t){if(null!==t.FirstLeft&&(t.IsHole===t.FirstLeft.IsHole||null===t.FirstLeft.Pts)){for(var e=t.FirstLeft;null!==e&&(e.IsHole===t.IsHole||null===e.Pts);)e=e.FirstLeft;t.FirstLeft=e}},e.Clipper.prototype.ExecuteInternal=function(){try{this.Reset(),this.m_SortedEdges=null,this.m_Maxima=null;var t,e,i,n={},s={};if(!this.PopScanbeam(n))return!1;for(this.InsertLocalMinimaIntoAEL(n.v);this.PopScanbeam(s)||this.LocalMinimaPending();){if(this.ProcessHorizontals(),this.m_GhostJoins.length=0,!this.ProcessIntersections(s.v))return!1;this.ProcessEdgesAtTopOfScanbeam(s.v),n.v=s.v,this.InsertLocalMinimaIntoAEL(n.v)}for(e=0,i=this.m_PolyOuts.length;e0&&this.ReversePolyPtLinks(t.Pts);for(this.JoinCommonEdges(),e=0,i=this.m_PolyOuts.length;e0&&0!==n.WindDelta)for(var o=0,l=this.m_GhostJoins.length;o=0&&null!==i.PrevInAEL&&i.PrevInAEL.Curr.X===i.Bot.X&&i.PrevInAEL.OutIdx>=0&&e.ClipperBase.SlopesEqual5(i.PrevInAEL.Curr,i.PrevInAEL.Top,i.Curr,i.Top)&&0!==i.WindDelta&&0!==i.PrevInAEL.WindDelta){var a=this.AddOutPt(i.PrevInAEL,i.Bot);this.AddJoin(r,a,i.Top)}if(i.NextInAEL!==n){if(n.OutIdx>=0&&n.PrevInAEL.OutIdx>=0&&e.ClipperBase.SlopesEqual5(n.PrevInAEL.Curr,n.PrevInAEL.Top,n.Curr,n.Top)&&0!==n.WindDelta&&0!==n.PrevInAEL.WindDelta){a=this.AddOutPt(n.PrevInAEL,n.Bot);this.AddJoin(r,a,n.Top)}var p=i.NextInAEL;if(null!==p)for(;p!==n;)this.IntersectEdges(n,p,i.Curr),p=p.NextInAEL}}}},e.Clipper.prototype.InsertEdgeIntoAEL=function(t,e){if(null===this.m_ActiveEdges)t.PrevInAEL=null,t.NextInAEL=null,this.m_ActiveEdges=t;else if(null===e&&this.E2InsertsBeforeE1(this.m_ActiveEdges,t))t.PrevInAEL=null,t.NextInAEL=this.m_ActiveEdges,this.m_ActiveEdges.PrevInAEL=t,this.m_ActiveEdges=t;else{for(null===e&&(e=this.m_ActiveEdges);null!==e.NextInAEL&&!this.E2InsertsBeforeE1(e.NextInAEL,t);)e=e.NextInAEL;t.NextInAEL=e.NextInAEL,null!==e.NextInAEL&&(e.NextInAEL.PrevInAEL=t),t.PrevInAEL=e,e.NextInAEL=t}},e.Clipper.prototype.E2InsertsBeforeE1=function(t,i){return i.Curr.X===t.Curr.X?i.Top.Y>t.Top.Y?i.Top.Xe.Clipper.TopX(i,t.Top.Y):i.Curr.X0;default:return t.WindCnt2<0}case e.ClipType.ctUnion:switch(n){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0===t.WindCnt2;case e.PolyFillType.pftPositive:return t.WindCnt2<=0;default:return t.WindCnt2>=0}case e.ClipType.ctDifference:if(t.PolyTyp===e.PolyType.ptSubject)switch(n){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0===t.WindCnt2;case e.PolyFillType.pftPositive:return t.WindCnt2<=0;default:return t.WindCnt2>=0}else switch(n){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0!==t.WindCnt2;case e.PolyFillType.pftPositive:return t.WindCnt2>0;default:return t.WindCnt2<0}case e.ClipType.ctXor:if(0!==t.WindDelta)return!0;switch(n){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0===t.WindCnt2;case e.PolyFillType.pftPositive:return t.WindCnt2<=0;default:return t.WindCnt2>=0}}return!0},e.Clipper.prototype.SetWindingCount=function(t){for(var i=t.PrevInAEL;null!==i&&(i.PolyTyp!==t.PolyTyp||0===i.WindDelta);)i=i.PrevInAEL;if(null===i){var n=t.PolyTyp===e.PolyType.ptSubject?this.m_SubjFillType:this.m_ClipFillType;0===t.WindDelta?t.WindCnt=n===e.PolyFillType.pftNegative?-1:1:t.WindCnt=t.WindDelta,t.WindCnt2=0,i=this.m_ActiveEdges}else if(0===t.WindDelta&&this.m_ClipType!==e.ClipType.ctUnion)t.WindCnt=1,t.WindCnt2=i.WindCnt2,i=i.NextInAEL;else if(this.IsEvenOddFillType(t)){if(0===t.WindDelta){for(var s=!0,r=i.PrevInAEL;null!==r;)r.PolyTyp===i.PolyTyp&&0!==r.WindDelta&&(s=!s),r=r.PrevInAEL;t.WindCnt=s?0:1}else t.WindCnt=t.WindDelta;t.WindCnt2=i.WindCnt2,i=i.NextInAEL}else i.WindCnt*i.WindDelta<0?Math.abs(i.WindCnt)>1?i.WindDelta*t.WindDelta<0?t.WindCnt=i.WindCnt:t.WindCnt=i.WindCnt+t.WindDelta:t.WindCnt=0===t.WindDelta?1:t.WindDelta:0===t.WindDelta?t.WindCnt=i.WindCnt<0?i.WindCnt-1:i.WindCnt+1:i.WindDelta*t.WindDelta<0?t.WindCnt=i.WindCnt:t.WindCnt=i.WindCnt+t.WindDelta,t.WindCnt2=i.WindCnt2,i=i.NextInAEL;if(this.IsEvenOddAltFillType(t))for(;i!==t;)0!==i.WindDelta&&(t.WindCnt2=0===t.WindCnt2?1:0),i=i.NextInAEL;else for(;i!==t;)t.WindCnt2+=i.WindDelta,i=i.NextInAEL},e.Clipper.prototype.AddEdgeToSEL=function(t){null===this.m_SortedEdges?(this.m_SortedEdges=t,t.PrevInSEL=null,t.NextInSEL=null):(t.NextInSEL=this.m_SortedEdges,t.PrevInSEL=null,this.m_SortedEdges.PrevInSEL=t,this.m_SortedEdges=t)},e.Clipper.prototype.PopEdgeFromSEL=function(t){if(t.v=this.m_SortedEdges,null===t.v)return!1;var e=t.v;return this.m_SortedEdges=t.v.NextInSEL,null!==this.m_SortedEdges&&(this.m_SortedEdges.PrevInSEL=null),e.NextInSEL=null,e.PrevInSEL=null,!0},e.Clipper.prototype.CopyAELToSEL=function(){var t=this.m_ActiveEdges;for(this.m_SortedEdges=t;null!==t;)t.PrevInSEL=t.PrevInAEL,t.NextInSEL=t.NextInAEL,t=t.NextInAEL},e.Clipper.prototype.SwapPositionsInSEL=function(t,e){if(!(null===t.NextInSEL&&null===t.PrevInSEL||null===e.NextInSEL&&null===e.PrevInSEL)){if(t.NextInSEL===e)null!==(i=e.NextInSEL)&&(i.PrevInSEL=t),null!==(n=t.PrevInSEL)&&(n.NextInSEL=e),e.PrevInSEL=n,e.NextInSEL=t,t.PrevInSEL=e,t.NextInSEL=i;else if(e.NextInSEL===t){null!==(i=t.NextInSEL)&&(i.PrevInSEL=e),null!==(n=e.PrevInSEL)&&(n.NextInSEL=t),t.PrevInSEL=n,t.NextInSEL=e,e.PrevInSEL=t,e.NextInSEL=i}else{var i=t.NextInSEL,n=t.PrevInSEL;t.NextInSEL=e.NextInSEL,null!==t.NextInSEL&&(t.NextInSEL.PrevInSEL=t),t.PrevInSEL=e.PrevInSEL,null!==t.PrevInSEL&&(t.PrevInSEL.NextInSEL=t),e.NextInSEL=i,null!==e.NextInSEL&&(e.NextInSEL.PrevInSEL=e),e.PrevInSEL=n,null!==e.PrevInSEL&&(e.PrevInSEL.NextInSEL=e)}null===t.PrevInSEL?this.m_SortedEdges=t:null===e.PrevInSEL&&(this.m_SortedEdges=e)}},e.Clipper.prototype.AddLocalMaxPoly=function(t,e,i){this.AddOutPt(t,i),0===e.WindDelta&&this.AddOutPt(e,i),t.OutIdx===e.OutIdx?(t.OutIdx=-1,e.OutIdx=-1):t.OutIdxi.Dx?(s=this.AddOutPt(t,n),i.OutIdx=t.OutIdx,t.Side=e.EdgeSide.esLeft,i.Side=e.EdgeSide.esRight,o=(r=t).PrevInAEL===i?i.PrevInAEL:r.PrevInAEL):(s=this.AddOutPt(i,n),t.OutIdx=i.OutIdx,t.Side=e.EdgeSide.esRight,i.Side=e.EdgeSide.esLeft,o=(r=i).PrevInAEL===t?t.PrevInAEL:r.PrevInAEL),null!==o&&o.OutIdx>=0&&o.Top.Ye&&(s=t,t=e,e=s),i>n&&(s=i,i=n,n=s),t=0&&0!==i.WindDelta&&(null===n?n=i:n.OutIdx===i.OutIdx&&(n=null)),i=i.PrevInAEL;null===n?(e.FirstLeft=null,e.IsHole=!1):(e.FirstLeft=this.m_PolyOuts[n.OutIdx],e.IsHole=!e.FirstLeft.IsHole)},e.Clipper.prototype.GetDx=function(t,i){return t.Y===i.Y?e.ClipperBase.horizontal:(i.X-t.X)/(i.Y-t.Y)},e.Clipper.prototype.FirstIsBottomPt=function(t,i){for(var n=t.Prev;e.FPoint.op_Equality(n.Pt,t.Pt)&&n!==t;)n=n.Prev;var s=Math.abs(this.GetDx(t.Pt,n.Pt));for(n=t.Next;e.FPoint.op_Equality(n.Pt,t.Pt)&&n!==t;)n=n.Next;var r=Math.abs(this.GetDx(t.Pt,n.Pt));for(n=i.Prev;e.FPoint.op_Equality(n.Pt,i.Pt)&&n!==i;)n=n.Prev;var o=Math.abs(this.GetDx(i.Pt,n.Pt));for(n=i.Next;e.FPoint.op_Equality(n.Pt,i.Pt)&&n!==i;)n=n.Next;var l=Math.abs(this.GetDx(i.Pt,n.Pt));return Math.max(s,r)===Math.max(o,l)&&Math.min(s,r)===Math.min(o,l)?this.Area(t)>0:s>=o&&s>=l||r>=o&&r>=l},e.Clipper.prototype.GetBottomPt=function(t){for(var i=null,n=t.Next;n!==t;)n.Pt.Y>t.Pt.Y?(t=n,i=null):n.Pt.Y===t.Pt.Y&&n.Pt.X<=t.Pt.X&&(n.Pt.Xn.Pt.Y?t:i.Pt.Yn.Pt.X||i.Next===i?e:n.Next===n||this.FirstIsBottomPt(i,n)?t:e},e.Clipper.prototype.OutRec1RightOfOutRec2=function(t,e){do{if((t=t.FirstLeft)===e)return!0}while(null!==t);return!1},e.Clipper.prototype.GetOutRec=function(t){for(var e=this.m_PolyOuts[t];e!==this.m_PolyOuts[e.Idx];)e=this.m_PolyOuts[e.Idx];return e},e.Clipper.prototype.AppendPolygon=function(t,i){var n,s=this.m_PolyOuts[t.OutIdx],r=this.m_PolyOuts[i.OutIdx];n=this.OutRec1RightOfOutRec2(s,r)?r:this.OutRec1RightOfOutRec2(r,s)?s:this.GetLowermostRec(s,r);var o=s.Pts,l=o.Prev,h=r.Pts,a=h.Prev;t.Side===e.EdgeSide.esLeft?i.Side===e.EdgeSide.esLeft?(this.ReversePolyPtLinks(h),h.Next=o,o.Prev=h,l.Next=a,a.Prev=l,s.Pts=a):(a.Next=o,o.Prev=a,h.Prev=l,l.Next=h,s.Pts=h):i.Side===e.EdgeSide.esRight?(this.ReversePolyPtLinks(h),l.Next=a,a.Prev=l,h.Next=o,o.Prev=h):(l.Next=h,h.Prev=l,o.Prev=a,a.Next=o),s.BottomPt=null,n===r&&(r.FirstLeft!==s&&(s.FirstLeft=r.FirstLeft),s.IsHole=r.IsHole),r.Pts=null,r.BottomPt=null,r.FirstLeft=s;var p=t.OutIdx,u=i.OutIdx;t.OutIdx=-1,i.OutIdx=-1;for(var d=this.m_ActiveEdges;null!==d;){if(d.OutIdx===u){d.OutIdx=p,d.Side=t.Side;break}d=d.NextInAEL}r.Idx=s.Idx},e.Clipper.prototype.ReversePolyPtLinks=function(t){if(null!==t){var e,i;e=t;do{i=e.Next,e.Next=e.Prev,e.Prev=i,e=i}while(e!==t)}},e.Clipper.SwapSides=function(t,e){var i=t.Side;t.Side=e.Side,e.Side=i},e.Clipper.SwapPolyIndexes=function(t,e){var i=t.OutIdx;t.OutIdx=e.OutIdx,e.OutIdx=i},e.Clipper.prototype.IntersectEdges=function(t,i,n){var s=t.OutIdx>=0,r=i.OutIdx>=0;if(e.use_xyz&&this.SetZ(n,t,i),!e.use_lines||0!==t.WindDelta&&0!==i.WindDelta){if(t.PolyTyp===i.PolyTyp)if(this.IsEvenOddFillType(t)){var o=t.WindCnt;t.WindCnt=i.WindCnt,i.WindCnt=o}else t.WindCnt+i.WindDelta===0?t.WindCnt=-t.WindCnt:t.WindCnt+=i.WindDelta,i.WindCnt-t.WindDelta==0?i.WindCnt=-i.WindCnt:i.WindCnt-=t.WindDelta;else this.IsEvenOddFillType(i)?t.WindCnt2=0===t.WindCnt2?1:0:t.WindCnt2+=i.WindDelta,this.IsEvenOddFillType(t)?i.WindCnt2=0===i.WindCnt2?1:0:i.WindCnt2-=t.WindDelta;var l,h,a,p,u,d;switch(t.PolyTyp===e.PolyType.ptSubject?(l=this.m_SubjFillType,a=this.m_ClipFillType):(l=this.m_ClipFillType,a=this.m_SubjFillType),i.PolyTyp===e.PolyType.ptSubject?(h=this.m_SubjFillType,p=this.m_ClipFillType):(h=this.m_ClipFillType,p=this.m_SubjFillType),l){case e.PolyFillType.pftPositive:u=t.WindCnt;break;case e.PolyFillType.pftNegative:u=-t.WindCnt;break;default:u=Math.abs(t.WindCnt)}switch(h){case e.PolyFillType.pftPositive:d=i.WindCnt;break;case e.PolyFillType.pftNegative:d=-i.WindCnt;break;default:d=Math.abs(i.WindCnt)}if(s&&r)0!==u&&1!==u||0!==d&&1!==d||t.PolyTyp!==i.PolyTyp&&this.m_ClipType!==e.ClipType.ctXor?this.AddLocalMaxPoly(t,i,n):(this.AddOutPt(t,n),this.AddOutPt(i,n),e.Clipper.SwapSides(t,i),e.Clipper.SwapPolyIndexes(t,i));else if(s)0!==d&&1!==d||(this.AddOutPt(t,n),e.Clipper.SwapSides(t,i),e.Clipper.SwapPolyIndexes(t,i));else if(r)0!==u&&1!==u||(this.AddOutPt(i,n),e.Clipper.SwapSides(t,i),e.Clipper.SwapPolyIndexes(t,i));else if(!(0!==u&&1!==u||0!==d&&1!==d)){var c,f;switch(a){case e.PolyFillType.pftPositive:c=t.WindCnt2;break;case e.PolyFillType.pftNegative:c=-t.WindCnt2;break;default:c=Math.abs(t.WindCnt2)}switch(p){case e.PolyFillType.pftPositive:f=i.WindCnt2;break;case e.PolyFillType.pftNegative:f=-i.WindCnt2;break;default:f=Math.abs(i.WindCnt2)}if(t.PolyTyp!==i.PolyTyp)this.AddLocalMinPoly(t,i,n);else if(1===u&&1===d)switch(this.m_ClipType){case e.ClipType.ctIntersection:c>0&&f>0&&this.AddLocalMinPoly(t,i,n);break;case e.ClipType.ctUnion:c<=0&&f<=0&&this.AddLocalMinPoly(t,i,n);break;case e.ClipType.ctDifference:(t.PolyTyp===e.PolyType.ptClip&&c>0&&f>0||t.PolyTyp===e.PolyType.ptSubject&&c<=0&&f<=0)&&this.AddLocalMinPoly(t,i,n);break;case e.ClipType.ctXor:this.AddLocalMinPoly(t,i,n)}else e.Clipper.SwapSides(t,i)}}else{if(0===t.WindDelta&&0===i.WindDelta)return;t.PolyTyp===i.PolyTyp&&t.WindDelta!==i.WindDelta&&this.m_ClipType===e.ClipType.ctUnion?0===t.WindDelta?r&&(this.AddOutPt(t,n),s&&(t.OutIdx=-1)):s&&(this.AddOutPt(i,n),r&&(i.OutIdx=-1)):t.PolyTyp!==i.PolyTyp&&(0!==t.WindDelta||1!==Math.abs(i.WindCnt)||this.m_ClipType===e.ClipType.ctUnion&&0!==i.WindCnt2?0!==i.WindDelta||1!==Math.abs(t.WindCnt)||this.m_ClipType===e.ClipType.ctUnion&&0!==t.WindCnt2||(this.AddOutPt(i,n),r&&(i.OutIdx=-1)):(this.AddOutPt(t,n),s&&(t.OutIdx=-1)))}},e.Clipper.prototype.DeleteFromSEL=function(t){var e=t.PrevInSEL,i=t.NextInSEL;null===e&&null===i&&t!==this.m_SortedEdges||(null!==e?e.NextInSEL=i:this.m_SortedEdges=i,null!==i&&(i.PrevInSEL=e),t.NextInSEL=null,t.PrevInSEL=null)},e.Clipper.prototype.ProcessHorizontals=function(){for(var t={};this.PopEdgeFromSEL(t);)this.ProcessHorizontal(t.v)},e.Clipper.prototype.GetHorzDirection=function(t,i){t.Bot.X=l.Top.X&&(a=null)}else{for(;null!==a.Next&&a.Next.X=0&&!o&&this.AddOutPt(t,new e.FPoint2(a.X,t.Bot.Y)),a=a.Next;else for(;null!==a&&a.X>d.Curr.X;)t.OutIdx>=0&&!o&&this.AddOutPt(t,new e.FPoint2(a.X,t.Bot.Y)),a=a.Prev;if(n===e.Direction.dLeftToRight&&d.Curr.X>r||n===e.Direction.dRightToLeft&&d.Curr.X=0&&!o){e.use_xyz&&(n===e.Direction.dLeftToRight?this.SetZ(d.Curr,t,d):this.SetZ(d.Curr,d,t)),p=this.AddOutPt(t,d.Curr);for(var c=this.m_SortedEdges;null!==c;){if(c.OutIdx>=0&&this.HorzSegmentsOverlap(t.Bot.X,t.Top.X,c.Bot.X,c.Top.X)){var f=this.GetLastOutPt(c);this.AddJoin(f,p,c.Top)}c=c.NextInSEL}this.AddGhostJoin(p,t.Bot)}if(d===h&&u)return t.OutIdx>=0&&this.AddLocalMaxPoly(t,h,t.Top),this.DeleteFromAEL(t),void this.DeleteFromAEL(h);if(n===e.Direction.dLeftToRight){var y=new e.FPoint2(d.Curr.X,t.Curr.Y);this.IntersectEdges(t,d,y)}else{y=new e.FPoint2(d.Curr.X,t.Curr.Y);this.IntersectEdges(d,t,y)}var x=this.GetNextInAEL(d,n);this.SwapPositionsInAEL(t,d),d=x}if(null===t.NextInLML||!e.ClipperBase.IsHorizontal(t.NextInLML))break;(t=this.UpdateEdgeIntoAEL(t)).OutIdx>=0&&this.AddOutPt(t,t.Bot),i={Dir:n,Left:s,Right:r},this.GetHorzDirection(t,i),n=i.Dir,s=i.Left,r=i.Right}if(t.OutIdx>=0&&null===p){p=this.GetLastOutPt(t);for(c=this.m_SortedEdges;null!==c;){if(c.OutIdx>=0&&this.HorzSegmentsOverlap(t.Bot.X,t.Top.X,c.Bot.X,c.Top.X)){f=this.GetLastOutPt(c);this.AddJoin(f,p,c.Top)}c=c.NextInSEL}this.AddGhostJoin(p,t.Top)}if(null!==t.NextInLML)if(t.OutIdx>=0){if(p=this.AddOutPt(t,t.Top),0===(t=this.UpdateEdgeIntoAEL(t)).WindDelta)return;var g=t.PrevInAEL;x=t.NextInAEL;if(null!==g&&g.Curr.X===t.Bot.X&&g.Curr.Y===t.Bot.Y&&0===g.WindDelta&&g.OutIdx>=0&&g.Curr.Y>g.Top.Y&&e.ClipperBase.SlopesEqual3(t,g)){f=this.AddOutPt(g,t.Bot);this.AddJoin(p,f,t.Top)}else if(null!==x&&x.Curr.X===t.Bot.X&&x.Curr.Y===t.Bot.Y&&0!==x.WindDelta&&x.OutIdx>=0&&x.Curr.Y>x.Top.Y&&e.ClipperBase.SlopesEqual3(t,x)){f=this.AddOutPt(x,t.Bot);this.AddJoin(p,f,t.Top)}}else t=this.UpdateEdgeIntoAEL(t);else t.OutIdx>=0&&this.AddOutPt(t,t.Top),this.DeleteFromAEL(t)},e.Clipper.prototype.GetNextInAEL=function(t,i){return i===e.Direction.dLeftToRight?t.NextInAEL:t.PrevInAEL},e.Clipper.prototype.IsMinima=function(t){return null!==t&&t.Prev.NextInLML!==t&&t.Next.NextInLML!==t},e.Clipper.prototype.IsMaxima=function(t,e){return null!==t&&t.Top.Y===e&&null===t.NextInLML},e.Clipper.prototype.IsIntermediate=function(t,e){return t.Top.Y===e&&null!==t.NextInLML},e.Clipper.prototype.GetMaximaPair=function(t){return e.FPoint.op_Equality(t.Next.Top,t.Top)&&null===t.Next.NextInLML?t.Next:e.FPoint.op_Equality(t.Prev.Top,t.Top)&&null===t.Prev.NextInLML?t.Prev:null},e.Clipper.prototype.GetMaximaPairEx=function(t){var i=this.GetMaximaPair(t);return null===i||i.OutIdx===e.ClipperBase.Skip||i.NextInAEL===i.PrevInAEL&&!e.ClipperBase.IsHorizontal(i)?null:i},e.Clipper.prototype.ProcessIntersections=function(t){if(null===this.m_ActiveEdges)return!0;try{if(this.BuildIntersectList(t),0===this.m_IntersectList.length)return!0;if(1!==this.m_IntersectList.length&&!this.FixupIntersectionOrder())return!1;this.ProcessIntersectList()}catch(t){this.m_SortedEdges=null,this.m_IntersectList.length=0,e.Error("ProcessIntersections error")}return this.m_SortedEdges=null,!0},e.Clipper.prototype.BuildIntersectList=function(t){if(null!==this.m_ActiveEdges){var i=this.m_ActiveEdges;for(this.m_SortedEdges=i;null!==i;)i.PrevInSEL=i.PrevInAEL,i.NextInSEL=i.NextInAEL,i.Curr.X=e.Clipper.TopX(i,t),i=i.NextInAEL;for(var n=!0;n&&null!==this.m_SortedEdges;){for(n=!1,i=this.m_SortedEdges;null!==i.NextInSEL;){var s=i.NextInSEL,r=new e.FPoint0;if(i.Curr.X>s.Curr.X){this.IntersectPoint(i,s,r),r.Yi.Top.Y)return n.Y=t.Top.Y,n.X=e.Clipper.TopX(i,t.Top.Y),n.Xt.Curr.Y&&(n.Y=t.Curr.Y,Math.abs(t.Dx)>Math.abs(i.Dx)?n.X=e.Clipper.TopX(i,n.Y):n.X=e.Clipper.TopX(t,n.Y))},e.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=function(t){for(var i=this.m_ActiveEdges;null!==i;){var n=this.IsMaxima(i,t);if(n){var s=this.GetMaximaPairEx(i);n=null===s||!e.ClipperBase.IsHorizontal(s)}if(n){this.StrictlySimple&&this.InsertMaxima(i.Top.X);var r=i.PrevInAEL;this.DoMaxima(i),i=null===r?this.m_ActiveEdges:r.NextInAEL}else{if(this.IsIntermediate(i,t)&&e.ClipperBase.IsHorizontal(i.NextInLML)?((i=this.UpdateEdgeIntoAEL(i)).OutIdx>=0&&this.AddOutPt(i,i.Bot),this.AddEdgeToSEL(i)):(i.Curr.X=e.Clipper.TopX(i,t),i.Curr.Y=t),e.use_xyz&&(i.Top.Y===t?i.Curr.Z=i.Top.Z:i.Bot.Y===t?i.Curr.Z=i.Bot.Z:i.Curr.Z=0),this.StrictlySimple){r=i.PrevInAEL;if(i.OutIdx>=0&&0!==i.WindDelta&&null!==r&&r.OutIdx>=0&&r.Curr.X===i.Curr.X&&0!==r.WindDelta){var o=new e.FPoint1(i.Curr);e.use_xyz&&this.SetZ(o,r,i);var l=this.AddOutPt(r,o),h=this.AddOutPt(i,o);this.AddJoin(l,h,o)}}i=i.NextInAEL}}for(this.ProcessHorizontals(),this.m_Maxima=null,i=this.m_ActiveEdges;null!==i;){if(this.IsIntermediate(i,t)){l=null;i.OutIdx>=0&&(l=this.AddOutPt(i,i.Top));r=(i=this.UpdateEdgeIntoAEL(i)).PrevInAEL;var a=i.NextInAEL;if(null!==r&&r.Curr.X===i.Bot.X&&r.Curr.Y===i.Bot.Y&&null!==l&&r.OutIdx>=0&&r.Curr.Y===r.Top.Y&&e.ClipperBase.SlopesEqual5(i.Curr,i.Top,r.Curr,r.Top)&&0!==i.WindDelta&&0!==r.WindDelta){h=this.AddOutPt(ePrev2,i.Bot);this.AddJoin(l,h,i.Top)}else if(null!==a&&a.Curr.X===i.Bot.X&&a.Curr.Y===i.Bot.Y&&null!==l&&a.OutIdx>=0&&a.Curr.Y===a.Top.Y&&e.ClipperBase.SlopesEqual5(i.Curr,i.Top,a.Curr,a.Top)&&0!==i.WindDelta&&0!==a.WindDelta){h=this.AddOutPt(a,i.Bot);this.AddJoin(l,h,i.Top)}}i=i.NextInAEL}},e.Clipper.prototype.DoMaxima=function(t){var i=this.GetMaximaPairEx(t);if(null===i)return t.OutIdx>=0&&this.AddOutPt(t,t.Top),void this.DeleteFromAEL(t);for(var n=t.NextInAEL;null!==n&&n!==i;)this.IntersectEdges(t,n,t.Top),this.SwapPositionsInAEL(t,n),n=t.NextInAEL;-1===t.OutIdx&&-1===i.OutIdx?(this.DeleteFromAEL(t),this.DeleteFromAEL(i)):t.OutIdx>=0&&i.OutIdx>=0?(t.OutIdx>=0&&this.AddLocalMaxPoly(t,i,t.Top),this.DeleteFromAEL(t),this.DeleteFromAEL(i)):e.use_lines&&0===t.WindDelta?(t.OutIdx>=0&&(this.AddOutPt(t,t.Top),t.OutIdx=e.ClipperBase.Unassigned),this.DeleteFromAEL(t),i.OutIdx>=0&&(this.AddOutPt(i,t.Top),i.OutIdx=e.ClipperBase.Unassigned),this.DeleteFromAEL(i)):e.Error("DoMaxima error")},e.Clipper.ReversePaths=function(t){for(var e=0,i=t.length;e=0},e.Clipper.prototype.PointCount=function(t){if(null===t)return 0;var e=0,i=t;do{e++,i=i.Next}while(i!==t);return e},e.Clipper.prototype.BuildResult=function(t){e.Clear(t);for(var i=0,n=this.m_PolyOuts.length;ii.Pt.X?e.Direction.dRightToLeft:e.Direction.dLeftToRight,h=n.Pt.X>s.Pt.X?e.Direction.dRightToLeft:e.Direction.dLeftToRight;if(l===h)return!1;if(l===e.Direction.dLeftToRight){for(;t.Next.Pt.X<=r.X&&t.Next.Pt.X>=t.Pt.X&&t.Next.Pt.Y===r.Y;)t=t.Next;o&&t.Pt.X!==r.X&&(t=t.Next),i=this.DupOutPt(t,!o),e.FPoint.op_Inequality(i.Pt,r)&&((t=i).Pt.X=r.X,t.Pt.Y=r.Y,e.use_xyz&&(t.Pt.Z=r.Z),i=this.DupOutPt(t,!o))}else{for(;t.Next.Pt.X>=r.X&&t.Next.Pt.X<=t.Pt.X&&t.Next.Pt.Y===r.Y;)t=t.Next;o||t.Pt.X===r.X||(t=t.Next),i=this.DupOutPt(t,o),e.FPoint.op_Inequality(i.Pt,r)&&((t=i).Pt.X=r.X,t.Pt.Y=r.Y,e.use_xyz&&(t.Pt.Z=r.Z),i=this.DupOutPt(t,o))}if(h===e.Direction.dLeftToRight){for(;n.Next.Pt.X<=r.X&&n.Next.Pt.X>=n.Pt.X&&n.Next.Pt.Y===r.Y;)n=n.Next;o&&n.Pt.X!==r.X&&(n=n.Next),s=this.DupOutPt(n,!o),e.FPoint.op_Inequality(s.Pt,r)&&((n=s).Pt.X=r.X,n.Pt.Y=r.Y,e.use_xyz&&(n.Pt.Z=r.Z),s=this.DupOutPt(n,!o))}else{for(;n.Next.Pt.X>=r.X&&n.Next.Pt.X<=n.Pt.X&&n.Next.Pt.Y===r.Y;)n=n.Next;o||n.Pt.X===r.X||(n=n.Next),s=this.DupOutPt(n,o),e.FPoint.op_Inequality(s.Pt,r)&&((n=s).Pt.X=r.X,n.Pt.Y=r.Y,e.use_xyz&&(n.Pt.Z=r.Z),s=this.DupOutPt(n,o))}return l===e.Direction.dLeftToRight===o?(t.Prev=n,n.Next=t,i.Next=s,s.Prev=i):(t.Next=n,n.Prev=t,i.Prev=s,s.Next=i),!0},e.Clipper.prototype.JoinPoints=function(t,i,n){var s=t.OutPt1,r=new e.OutPt,o=t.OutPt2,l=new e.OutPt,h=t.OutPt1.Pt.Y===t.OffPt.Y;if(h&&e.FPoint.op_Equality(t.OffPt,t.OutPt1.Pt)&&e.FPoint.op_Equality(t.OffPt,t.OutPt2.Pt)){if(i!==n)return!1;for(r=t.OutPt1.Next;r!==s&&e.FPoint.op_Equality(r.Pt,t.OffPt);)r=r.Next;var a=r.Pt.Y>t.OffPt.Y;for(l=t.OutPt2.Next;l!==o&&e.FPoint.op_Equality(l.Pt,t.OffPt);)l=l.Next;return a!==l.Pt.Y>t.OffPt.Y&&(a?(r=this.DupOutPt(s,!1),l=this.DupOutPt(o,!0),s.Prev=o,o.Next=s,r.Next=l,l.Prev=r,t.OutPt1=s,t.OutPt2=r,!0):(r=this.DupOutPt(s,!0),l=this.DupOutPt(o,!1),s.Next=o,o.Prev=s,r.Prev=l,l.Next=r,t.OutPt1=s,t.OutPt2=r,!0))}if(h){for(r=s;s.Prev.Pt.Y===s.Pt.Y&&s.Prev!==r&&s.Prev!==o;)s=s.Prev;for(;r.Next.Pt.Y===r.Pt.Y&&r.Next!==s&&r.Next!==o;)r=r.Next;if(r.Next===s||r.Next===o)return!1;for(l=o;o.Prev.Pt.Y===o.Pt.Y&&o.Prev!==l&&o.Prev!==r;)o=o.Prev;for(;l.Next.Pt.Y===l.Pt.Y&&l.Next!==o&&l.Next!==s;)l=l.Next;if(l.Next===o||l.Next===s)return!1;var p={Left:null,Right:null};if(!this.GetOverlap(s.Pt.X,r.Pt.X,o.Pt.X,l.Pt.X,p))return!1;var u,d=p.Left,c=p.Right,f=new e.FPoint0;return s.Pt.X>=d&&s.Pt.X<=c?(f.X=s.Pt.X,f.Y=s.Pt.Y,e.use_xyz&&(f.Z=s.Pt.Z),u=s.Pt.X>r.Pt.X):o.Pt.X>=d&&o.Pt.X<=c?(f.X=o.Pt.X,f.Y=o.Pt.Y,e.use_xyz&&(f.Z=o.Pt.Z),u=o.Pt.X>l.Pt.X):r.Pt.X>=d&&r.Pt.X<=c?(f.X=r.Pt.X,f.Y=r.Pt.Y,e.use_xyz&&(f.Z=r.Pt.Z),u=r.Pt.X>s.Pt.X):(f.X=l.Pt.X,f.Y=l.Pt.Y,e.use_xyz&&(f.Z=l.Pt.Z),u=l.Pt.X>o.Pt.X),t.OutPt1=s,t.OutPt2=o,this.JoinHorz(s,r,o,l,f,u)}for(r=s.Next;e.FPoint.op_Equality(r.Pt,s.Pt)&&r!==s;)r=r.Next;var y=r.Pt.Y>s.Pt.Y||!e.ClipperBase.SlopesEqual4(s.Pt,r.Pt,t.OffPt);if(y){for(r=s.Prev;e.FPoint.op_Equality(r.Pt,s.Pt)&&r!==s;)r=r.Prev;if(r.Pt.Y>s.Pt.Y||!e.ClipperBase.SlopesEqual4(s.Pt,r.Pt,t.OffPt))return!1}for(l=o.Next;e.FPoint.op_Equality(l.Pt,o.Pt)&&l!==o;)l=l.Next;var x=l.Pt.Y>o.Pt.Y||!e.ClipperBase.SlopesEqual4(o.Pt,l.Pt,t.OffPt);if(x){for(l=o.Prev;e.FPoint.op_Equality(l.Pt,o.Pt)&&l!==o;)l=l.Prev;if(l.Pt.Y>o.Pt.Y||!e.ClipperBase.SlopesEqual4(o.Pt,l.Pt,t.OffPt))return!1}return r!==s&&l!==o&&r!==l&&(i!==n||y!==x)&&(y?(r=this.DupOutPt(s,!1),l=this.DupOutPt(o,!0),s.Prev=o,o.Next=s,r.Next=l,l.Prev=r,t.OutPt1=s,t.OutPt2=r,!0):(r=this.DupOutPt(s,!0),l=this.DupOutPt(o,!1),s.Next=o,o.Prev=s,r.Prev=l,l.Next=r,t.OutPt1=s,t.OutPt2=r,!0))},e.Clipper.GetBounds=function(t){for(var i=0,n=t.length;is.right&&(s.right=t[i][r].X),t[i][r].Ys.bottom&&(s.bottom=t[i][r].Y);return s},e.Clipper.prototype.GetBounds2=function(t){var i=t,n=new e.FRect;for(n.left=t.Pt.X,n.right=t.Pt.X,n.top=t.Pt.Y,n.bottom=t.Pt.Y,t=t.Next;t!==i;)t.Pt.Xn.right&&(n.right=t.Pt.X),t.Pt.Yn.bottom&&(n.bottom=t.Pt.Y),t=t.Next;return n},e.Clipper.PointInPolygon=function(t,e){var i=0,n=e.length;if(n<3)return 0;for(var s=e[0],r=1;r<=n;++r){var o=r===n?e[0]:e[r];if(o.Y===t.Y&&(o.X===t.X||s.Y===t.Y&&o.X>t.X==s.X=t.X)if(o.X>t.X)i=1-i;else{if(0===(l=(s.X-t.X)*(o.Y-t.Y)-(o.X-t.X)*(s.Y-t.Y)))return-1;l>0==o.Y>s.Y&&(i=1-i)}else if(o.X>t.X){var l;if(0===(l=(s.X-t.X)*(o.Y-t.Y)-(o.X-t.X)*(s.Y-t.Y)))return-1;l>0==o.Y>s.Y&&(i=1-i)}s=o}return i},e.Clipper.prototype.PointInPolygon=function(t,e){var i=0,n=e,s=t.X,r=t.Y,o=e.Pt.X,l=e.Pt.Y;do{var h=(e=e.Next).Pt.X,a=e.Pt.Y;if(a===r&&(h===s||l===r&&h>s==o=s)if(h>s)i=1-i;else{if(0===(p=(o-s)*(a-r)-(h-s)*(l-r)))return-1;p>0==a>l&&(i=1-i)}else if(h>s){var p;if(0===(p=(o-s)*(a-r)-(h-s)*(l-r)))return-1;p>0==a>l&&(i=1-i)}o=h,l=a}while(n!==e);return i},e.Clipper.prototype.Poly2ContainsPoly1=function(t,e){var i=t;do{var n=this.PointInPolygon(i.Pt,e);if(n>=0)return n>0;i=i.Next}while(i!==t);return!0},e.Clipper.prototype.FixupFirstLefts1=function(t,i){for(var n,s,r=0,o=this.m_PolyOuts.length;r0&&this.ReversePolyPtLinks(r.Pts)):this.Poly2ContainsPoly1(s.Pts,r.Pts)?(r.IsHole=s.IsHole,s.IsHole=!r.IsHole,r.FirstLeft=s.FirstLeft,s.FirstLeft=r,this.m_UsingPolyTree&&this.FixupFirstLefts2(s,r),(s.IsHole^this.ReverseSolution)==this.Area$1(s)>0&&this.ReversePolyPtLinks(s.Pts)):(r.IsHole=s.IsHole,r.FirstLeft=s.FirstLeft,this.m_UsingPolyTree&&this.FixupFirstLefts1(s,r))):(r.Pts=null,r.BottomPt=null,r.Idx=s.Idx,s.IsHole=i.IsHole,i===r&&(s.FirstLeft=r.FirstLeft),r.FirstLeft=s,this.m_UsingPolyTree&&this.FixupFirstLefts3(r,s)))}},e.Clipper.prototype.UpdateOutPtIdxs=function(t){var e=t.Pts;do{e.Idx=t.Idx,e=e.Prev}while(e!==t.Pts)},e.Clipper.prototype.DoSimplePolygons=function(){for(var t=0;tMath.abs(t.Y-i.Y)?t.X>i.X==t.Xt.X==i.Xi.Y==t.Yt.Y==i.Y0&&s&&n.push(t.m_polygon);for(var r=0,o=t.Childs(),l=o.length,h=o[r];r0&&e.FPoint.op_Equality(t[0],t[s]);)s--;r.m_polygon.push(t[0]);for(var o=0,l=0,h=1;h<=s;h++)e.FPoint.op_Inequality(r.m_polygon[o],t[h])&&(o++,r.m_polygon.push(t[h]),(t[h].Y>r.m_polygon[l].Y||t[h].Y===r.m_polygon[l].Y&&t[h].Xa.Y||r.m_polygon[l].Y===a.Y&&r.m_polygon[l].X=0&&!e.Clipper.Orientation(this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon))for(var t=0;t2?this.m_miterLim=2/(this.MiterLimit*this.MiterLimit):this.m_miterLim=.5,n=this.ArcTolerance<=0?e.ClipperOffset.def_arc_tolerance:this.ArcTolerance>Math.abs(t)*e.ClipperOffset.def_arc_tolerance?Math.abs(t)*e.ClipperOffset.def_arc_tolerance:this.ArcTolerance;var s=3.14159265358979/Math.acos(1-n/Math.abs(t));this.m_sin=Math.sin(e.ClipperOffset.two_pi/s),this.m_cos=Math.cos(e.ClipperOffset.two_pi/s),this.m_StepsPerRad=s/e.ClipperOffset.two_pi,t<0&&(this.m_sin=-this.m_sin);for(i=0;i0;d--)this.m_normals[d]=new e.FPoint2(-this.m_normals[d-1].X,-this.m_normals[d-1].Y);this.m_normals[0]=new e.FPoint2(-h.X,-h.Y),l=0;for(d=o-1;d>=0;d--)l=this.OffsetPoint(d,l,r.m_jointype);this.m_destPolys.push(this.m_destPoly)}else{var a;for(l=0,d=1;d0;d--)this.m_normals[d]=new e.FPoint2(-this.m_normals[d-1].X,-this.m_normals[d-1].Y);this.m_normals[0]=new e.FPoint2(-this.m_normals[1].X,-this.m_normals[1].Y);for(d=(l=o-1)-1;d>0;--d)l=this.OffsetPoint(d,l,r.m_jointype);r.m_endtype===e.EndType.etOpenButt?(a=new e.FPoint2(this.m_srcPoly[0].X-this.m_normals[0].X*t,this.m_srcPoly[0].Y-this.m_normals[0].Y*t),this.m_destPoly.push(a),a=new e.FPoint2(this.m_srcPoly[0].X+this.m_normals[0].X*t,this.m_srcPoly[0].Y+this.m_normals[0].Y*t),this.m_destPoly.push(a)):(l=1,this.m_sinA=0,r.m_endtype===e.EndType.etOpenSquare?this.DoSquare(0,1):this.DoRound(0,1)),this.m_destPolys.push(this.m_destPoly)}}else{if(r.m_jointype===e.JoinType.jtRound)for(var p=1,u=0,d=1;d<=s;d++){this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[0].X+p*t,this.m_srcPoly[0].Y+u*t));var c=p;p=p*this.m_cos-this.m_sin*u,u=c*this.m_sin+u*this.m_cos}else{p=-1,u=-1;for(var d=0;d<4;++d)this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[0].X+p*t,this.m_srcPoly[0].Y+u*t)),p<0?p=1:u<0?u=1:p=-1}this.m_destPolys.push(this.m_destPoly)}}}},e.ClipperOffset.prototype.Execute=function(){var t=arguments;if(t[0]instanceof e.PolyTree){o=t[1];if((r=t[0]).Clear(),this.FixOrientations(),this.DoOffset(o),(s=new e.Clipper(0)).AddPaths(this.m_destPolys,e.PolyType.ptSubject,!0),o>0)s.Execute(e.ClipType.ctUnion,r,e.PolyFillType.pftPositive,e.PolyFillType.pftPositive);else{h=e.Clipper.GetBounds(this.m_destPolys);if((l=new e.Path).push(new e.FPoint2(h.left-10,h.bottom+10)),l.push(new e.FPoint2(h.right+10,h.bottom+10)),l.push(new e.FPoint2(h.right+10,h.top-10)),l.push(new e.FPoint2(h.left-10,h.top-10)),s.AddPath(l,e.PolyType.ptSubject,!0),s.ReverseSolution=!0,s.Execute(e.ClipType.ctUnion,r,e.PolyFillType.pftNegative,e.PolyFillType.pftNegative),1===r.ChildCount()&&r.Childs()[0].ChildCount()>0){var i=r.Childs()[0];r.Childs()[0]=i.Childs()[0],r.Childs()[0].m_Parent=r;for(var n=1;n0)s.Execute(e.ClipType.ctUnion,r,e.PolyFillType.pftPositive,e.PolyFillType.pftPositive);else{var l,h=e.Clipper.GetBounds(this.m_destPolys);(l=new e.Path).push(new e.FPoint2(h.left-10,h.bottom+10)),l.push(new e.FPoint2(h.right+10,h.bottom+10)),l.push(new e.FPoint2(h.right+10,h.top-10)),l.push(new e.FPoint2(h.left-10,h.top-10)),s.AddPath(l,e.PolyType.ptSubject,!0),s.ReverseSolution=!0,s.Execute(e.ClipType.ctUnion,r,e.PolyFillType.pftNegative,e.PolyFillType.pftNegative),r.length>0&&r.splice(0,1)}}},e.ClipperOffset.prototype.OffsetPoint=function(t,i,n){if(this.m_sinA=this.m_normals[i].X*this.m_normals[t].Y-this.m_normals[t].X*this.m_normals[i].Y,0===this.m_sinA)return i;if(this.m_sinA>1?this.m_sinA=1:this.m_sinA<-1&&(this.m_sinA=-1),this.m_sinA*this.m_delta<0)this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[t].X+this.m_normals[i].X*this.m_delta,this.m_srcPoly[t].Y+this.m_normals[i].Y*this.m_delta)),this.m_destPoly.push(new e.FPoint1(this.m_srcPoly[t])),this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[t].X+this.m_normals[t].X*this.m_delta,this.m_srcPoly[t].Y+this.m_normals[t].Y*this.m_delta));else switch(n){case e.JoinType.jtMiter:var s=this.m_normals[t].X*this.m_normals[i].X+this.m_normals[t].Y*this.m_normals[i].Y+1;s>=this.m_miterLim?this.DoMiter(t,i,s):this.DoSquare(t,i);break;case e.JoinType.jtSquare:this.DoSquare(t,i);break;case e.JoinType.jtRound:this.DoRound(t,i)}return i=t},e.ClipperOffset.prototype.DoSquare=function(t,i){var n=Math.tan(Math.atan2(this.m_sinA,this.m_normals[i].X*this.m_normals[t].X+this.m_normals[i].Y*this.m_normals[t].Y)/4);this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[t].X+this.m_delta*(this.m_normals[i].X-this.m_normals[i].Y*n),this.m_srcPoly[t].Y+this.m_delta*(this.m_normals[i].Y+this.m_normals[i].X*n))),this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[t].X+this.m_delta*(this.m_normals[t].X+this.m_normals[t].Y*n),this.m_srcPoly[t].Y+this.m_delta*(this.m_normals[t].Y-this.m_normals[t].X*n)))},e.ClipperOffset.prototype.DoMiter=function(t,i,n){var s=this.m_delta/n;this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[t].X+(this.m_normals[i].X+this.m_normals[t].X)*s,this.m_srcPoly[t].Y+(this.m_normals[i].Y+this.m_normals[t].Y)*s))},e.ClipperOffset.prototype.DoRound=function(t,i){for(var n,s=Math.atan2(this.m_sinA,this.m_normals[i].X*this.m_normals[t].X+this.m_normals[i].Y*this.m_normals[t].Y),r=Math.max(Math.round(this.m_StepsPerRad*Math.abs(s)),1),o=this.m_normals[i].X,l=this.m_normals[i].Y,h=0;h1?(g=p.X,P=p.Y):x>0&&(g+=f*x,P+=y*x)),(f=u.X-g)*f+(y=u.Y-P)*y<=C&&(d[s+1]=1,s++);for(l.push({X:r[0].X,Y:r[0].Y}),s=1;s2&&_.push(l)}return m||(_=_[0]),void 0===_&&(_=[]),_},e.JS.PerimeterOfPath=function(t,e){if(void 0===t)return 0;var i,n,s=Math.sqrt,r=0,o=0,l=0,h=0,a=0,p=t.length;if(p<2)return 0;for(e&&(t[p]=t[0],p++);--p;)o=(i=t[p]).X,l=i.Y,r+=s((o-(h=(n=t[p-1]).X))*(o-h)+(l-(a=n.Y))*(l-a));return e&&t.pop(),r},e.JS.PerimeterOfPaths=function(t,i){for(var n=0,s=0;s{"use strict";function e(t,e,r){r=r||2;var o,l,h,u,d,f,y,x=e&&e.length,g=x?e[0]*r:t.length,P=i(t,0,g,r,!0),m=[];if(!P||P.next===P.prev)return m;if(x&&(P=function(t,e,s,r){var o,l,h,u=[];for(o=0,l=e.length;o80*r){o=h=t[0],l=u=t[1];for(var v=r;vh&&(h=d),f>u&&(u=f);y=0!==(y=Math.max(h-o,u-l))?1/y:0}return s(P,m,r,o,l,y),m}function i(t,e,i,n,s){var r,o;if(s===b(t,e,i,n)>0)for(r=e;r=e;r-=n)o=I(r,t[r],t[r+1],o);return o&&g(o,o.next)&&(E(o),o=o.next),o}function n(t,e){if(!t)return t;e||(e=t);var i,n=t;do{if(i=!1,n.steiner||!g(n,n.next)&&0!==x(n.prev,n,n.next))n=n.next;else{if(E(n),(n=e=n.prev)===n.next)break;i=!0}}while(i||n!==e);return e}function s(t,e,i,a,p,u,c){if(t){!c&&u&&function(t,e,i,n){var s=t;do{null===s.z&&(s.z=d(s.x,s.y,e,i,n)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next}while(s!==t);s.prevZ.nextZ=null,s.prevZ=null,function(t){var e,i,n,s,r,o,l,h,a=1;do{for(i=t,t=null,r=null,o=0;i;){for(o++,n=i,l=0,e=0;e0||h>0&&n;)0!==l&&(0===h||!n||i.z<=n.z)?(s=i,i=i.nextZ,l--):(s=n,n=n.nextZ,h--),r?r.nextZ=s:t=s,s.prevZ=r,r=s;i=n}r.nextZ=null,a*=2}while(o>1)}(s)}(t,a,p,u);for(var f,y,x=t;t.prev!==t.next;)if(f=t.prev,y=t.next,u?o(t,a,p,u):r(t))e.push(f.i/i),e.push(t.i/i),e.push(y.i/i),E(t),t=y.next,x=y.next;else if((t=y)===x){c?1===c?s(t=l(n(t),e,i),e,i,a,p,u,2):2===c&&h(t,e,i,a,p,u):s(n(t),e,i,a,p,u,1);break}}}function r(t){var e=t.prev,i=t,n=t.next;if(x(e,i,n)>=0)return!1;for(var s=t.next.next;s!==t.prev;){if(f(e.x,e.y,i.x,i.y,n.x,n.y,s.x,s.y)&&x(s.prev,s,s.next)>=0)return!1;s=s.next}return!0}function o(t,e,i,n){var s=t.prev,r=t,o=t.next;if(x(s,r,o)>=0)return!1;for(var l=s.xr.x?s.x>o.x?s.x:o.x:r.x>o.x?r.x:o.x,p=s.y>r.y?s.y>o.y?s.y:o.y:r.y>o.y?r.y:o.y,u=d(l,h,e,i,n),c=d(a,p,e,i,n),y=t.prevZ,g=t.nextZ;y&&y.z>=u&&g&&g.z<=c;){if(y!==t.prev&&y!==t.next&&f(s.x,s.y,r.x,r.y,o.x,o.y,y.x,y.y)&&x(y.prev,y,y.next)>=0)return!1;if(y=y.prevZ,g!==t.prev&&g!==t.next&&f(s.x,s.y,r.x,r.y,o.x,o.y,g.x,g.y)&&x(g.prev,g,g.next)>=0)return!1;g=g.nextZ}for(;y&&y.z>=u;){if(y!==t.prev&&y!==t.next&&f(s.x,s.y,r.x,r.y,o.x,o.y,y.x,y.y)&&x(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;g&&g.z<=c;){if(g!==t.prev&&g!==t.next&&f(s.x,s.y,r.x,r.y,o.x,o.y,g.x,g.y)&&x(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function l(t,e,i){var s=t;do{var r=s.prev,o=s.next.next;!g(r,o)&&P(r,s,s.next,o)&&C(r,o)&&C(o,r)&&(e.push(r.i/i),e.push(s.i/i),e.push(o.i/i),E(s),E(s.next),s=t=o),s=s.next}while(s!==t);return n(s)}function h(t,e,i,r,o,l){var h=t;do{for(var a=h.next.next;a!==h.prev;){if(h.i!==a.i&&y(h,a)){var p=_(h,a);return h=n(h,h.next),p=n(p,p.next),s(h,e,i,r,o,l),void s(p,e,i,r,o,l)}a=a.next}h=h.next}while(h!==t)}function a(t,e){return t.x-e.x}function p(t,e){var i=function(t,e){var i,n=e,s=t.x,r=t.y,o=-1/0;do{if(r<=n.y&&r>=n.next.y&&n.next.y!==n.y){var l=n.x+(r-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(l<=s&&l>o){if(o=l,l===s){if(r===n.y)return n;if(r===n.next.y)return n.next}i=n.x=n.x&&n.x>=p&&s!==n.x&&f(ri.x||n.x===i.x&&u(i,n)))&&(i=n,c=h)),n=n.next}while(n!==a);return i}(t,e);if(!i)return e;var s=_(i,t),r=n(i,i.next);return n(s,s.next),e===i?r:e}function u(t,e){return x(t.prev,t,e.prev)<0&&x(e.next,t,t.next)<0}function d(t,e,i,n,s){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*s)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*s)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function c(t){var e=t,i=t;do{(e.x=0&&(t-o)*(n-l)-(i-o)*(e-l)>=0&&(i-o)*(r-l)-(s-o)*(n-l)>=0}function y(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var i=t;do{if(i.i!==t.i&&i.next.i!==t.i&&i.i!==e.i&&i.next.i!==e.i&&P(i,i.next,t,e))return!0;i=i.next}while(i!==t);return!1}(t,e)&&(C(t,e)&&C(e,t)&&function(t,e){var i=t,n=!1,s=(t.x+e.x)/2,r=(t.y+e.y)/2;do{i.y>r!=i.next.y>r&&i.next.y!==i.y&&s<(i.next.x-i.x)*(r-i.y)/(i.next.y-i.y)+i.x&&(n=!n),i=i.next}while(i!==t);return n}(t,e)&&(x(t.prev,t,e.prev)||x(t,e.prev,e))||g(t,e)&&x(t.prev,t,t.next)>0&&x(e.prev,e,e.next)>0)}function x(t,e,i){return(e.y-t.y)*(i.x-e.x)-(e.x-t.x)*(i.y-e.y)}function g(t,e){return t.x===e.x&&t.y===e.y}function P(t,e,i,n){var s=v(x(t,e,i)),r=v(x(t,e,n)),o=v(x(i,n,t)),l=v(x(i,n,e));return s!==r&&o!==l||(!(0!==s||!m(t,i,e))||(!(0!==r||!m(t,n,e))||(!(0!==o||!m(i,t,n))||!(0!==l||!m(i,e,n)))))}function m(t,e,i){return e.x<=Math.max(t.x,i.x)&&e.x>=Math.min(t.x,i.x)&&e.y<=Math.max(t.y,i.y)&&e.y>=Math.min(t.y,i.y)}function v(t){return t>0?1:t<0?-1:0}function C(t,e){return x(t.prev,t,t.next)<0?x(t,e,t.next)>=0&&x(t,t.prev,e)>=0:x(t,e,t.prev)<0||x(t,t.next,e)<0}function _(t,e){var i=new T(t.i,t.x,t.y),n=new T(e.i,e.x,e.y),s=t.next,r=e.prev;return t.next=e,e.prev=t,i.next=s,s.prev=i,n.next=i,i.prev=n,r.next=n,n.prev=r,n}function I(t,e,i,n){var s=new T(t,e,i);return n?(s.next=n.next,s.prev=n,n.next.prev=s,n.next=s):(s.prev=s,s.next=s),s}function E(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 T(t,e,i){this.i=t,this.x=e,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function b(t,e,i,n){for(var s=0,r=e,o=i-n;r0&&(n+=t[s-1].length,i.holes.push(n))}return i}},2752:t=>{"use strict";var e=function(t,e){this.head_=t,this.tail_=e,this.search_node_=t};e.prototype.head=function(){return this.head_},e.prototype.setHead=function(t){this.head_=t},e.prototype.tail=function(){return this.tail_},e.prototype.setTail=function(t){this.tail_=t},e.prototype.search=function(){return this.search_node_},e.prototype.setSearch=function(t){this.search_node_=t},e.prototype.findSearchNode=function(){return this.search_node_},e.prototype.locateNode=function(t){var e=this.search_node_;if(t=e.value)return this.search_node_=e,e}else for(;e=e.next;)if(t{"use strict";t.exports=function(t,e){if(!t)throw new Error(e||"Assert Failed")}},1688:(t,e,i)=>{"use strict";var n=i(9071),s=function(t,e){this.x=+t||0,this.y=+e||0,this._p2t_edge_list=null};s.prototype.toString=function(){return n.toStringBase(this)},s.prototype.toJSON=function(){return{x:this.x,y:this.y}},s.prototype.clone=function(){return new s(this.x,this.y)},s.prototype.set_zero=function(){return this.x=0,this.y=0,this},s.prototype.set=function(t,e){return this.x=+t||0,this.y=+e||0,this},s.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},s.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},s.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},s.prototype.mul=function(t){return this.x*=t,this.y*=t,this},s.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},s.prototype.normalize=function(){var t=this.length();return this.x/=t,this.y/=t,t},s.prototype.equals=function(t){return this.x===t.x&&this.y===t.y},s.negate=function(t){return new s(-t.x,-t.y)},s.add=function(t,e){return new s(t.x+e.x,t.y+e.y)},s.sub=function(t,e){return new s(t.x-e.x,t.y-e.y)},s.mul=function(t,e){return new s(t*e.x,t*e.y)},s.cross=function(t,e){return"number"==typeof t?"number"==typeof e?t*e:new s(-t*e.y,t*e.x):"number"==typeof e?new s(e*t.y,-e*t.x):t.x*e.y-t.y*e.x},s.toString=n.toString,s.compare=n.compare,s.cmp=n.compare,s.equals=n.equals,s.dot=function(t,e){return t.x*e.x+t.y*e.y},t.exports=s},3704:(t,e,i)=>{"use strict";var n=i(9071),s=function(t,e){this.name="PointError",this.points=e=e||[],this.message=t||"Invalid Points!";for(var i=0;i{"use strict";var n=i.g.poly2tri;e.noConflict=function(){return i.g.poly2tri=n,e},e.VERSION=i(3095).version,e.PointError=i(3704),e.Point=i(1688),e.Triangle=i(1580),e.SweepContext=i(2115);var s=i(1110);e.triangulate=s.triangulate,e.sweep={Triangulate:s.triangulate}},1110:(t,e,i)=>{"use strict";var n=i(2014),s=i(3704),r=i(1580),o=i(2752).Node,l=i(4555),h=l.EPSILON,a=l.Orientation,p=l.orient2d,u=l.inScanArea,d=l.isAngleObtuse;function c(t,e){var i=t.locateNode(e),s=function(t,e,i){var n=new r(e,i.point,i.next.point);n.markNeighbor(i.triangle),t.addToMap(n);var s=new o(e);s.next=i.next,s.prev=i,i.next.prev=s,i.next=s,P(t,n)||t.mapTriangleToNodes(n);return s}(t,e,i);return e.x<=i.point.x+h&&g(t,i),function(t,e){var i=e.next;for(;i.next&&!d(i.point,i.next.point,i.prev.point);)g(t,i),i=i.next;i=e.prev;for(;i.prev&&!d(i.point,i.next.point,i.prev.point);)g(t,i),i=i.prev;e.next&&e.next.next&&function(t){var e=t.point.x-t.next.next.point.x,i=t.point.y-t.next.next.point.y;return n(i>=0,"unordered y"),e>=0||Math.abs(e)=t.basin.bottom_node.next.point.y;)t.basin.bottom_node=t.basin.bottom_node.next;if(t.basin.bottom_node===t.basin.left_node)return;t.basin.right_node=t.basin.bottom_node;for(;t.basin.right_node.next&&t.basin.right_node.point.yt.basin.right_node.point.y,C(t,t.basin.bottom_node)}(t,e)}(t,s),s}function f(t,e,i){t.edge_event.constrained_edge=e,t.edge_event.right=e.p.x>e.q.x,x(i.triangle,e.p,e.q)||(!function(t,e,i){t.edge_event.right?function(t,e,i){for(;i.next.point.xe.p.x;)p(e.q,i.prev.point,e.p)===a.CW?T(t,e,i):i=i.prev}(t,e,i)}(t,e,i),y(t,e.p,e.q,i.triangle,e.q))}function y(t,e,i,n,r){if(!x(n,e,i)){var o=n.pointCCW(r),l=p(i,o,e);if(l===a.COLLINEAR)throw new s("poly2tri EdgeEvent: Collinear not supported!",[i,o,e]);var h=n.pointCW(r),u=p(i,h,e);if(u===a.COLLINEAR)throw new s("poly2tri EdgeEvent: Collinear not supported!",[i,h,e]);l===u?y(t,e,i,n=l===a.CW?n.neighborCCW(r):n.neighborCW(r),r):S(t,e,i,n,r)}}function x(t,e,i){var n=t.edgeIndex(e,i);if(-1!==n){t.markConstrainedEdgeByIndex(n);var s=t.getNeighbor(n);return s&&s.markConstrainedEdgeByPoints(e,i),!0}return!1}function g(t,e){var i=new r(e.prev.point,e.point,e.next.point);i.markNeighbor(e.prev.triangle),i.markNeighbor(e.triangle),t.addToMap(i),e.prev.next=e.next,e.next.prev=e.prev,P(t,i)||t.mapTriangleToNodes(i)}function P(t,e){for(var i=0;i<3;++i)if(!e.delaunay_edge[i]){var n=e.getNeighbor(i);if(n){var s=e.getPoint(i),r=n.oppositePoint(e,s),o=n.index(r);if(n.constrained_edge[o]||n.delaunay_edge[o]){e.constrained_edge[i]=n.constrained_edge[o];continue}if(m(s,e.pointCCW(s),e.pointCW(s),r)){e.delaunay_edge[i]=!0,n.delaunay_edge[o]=!0,v(e,s,n,r);var l=!P(t,e);return l&&t.mapTriangleToNodes(e),(l=!P(t,n))&&t.mapTriangleToNodes(n),e.delaunay_edge[i]=!1,n.delaunay_edge[o]=!1,!0}}}return!1}function m(t,e,i,n){var s=t.x-n.x,r=t.y-n.y,o=e.x-n.x,l=e.y-n.y,h=s*l-o*r;if(h<=0)return!1;var a=i.x-n.x,p=i.y-n.y,u=a*r-s*p;return!(u<=0)&&(s*s+r*r)*(o*p-a*l)+(o*o+l*l)*u+(a*a+p*p)*h>0}function v(t,e,i,n){var s,r,o,l,h,a,p,u,d,c,f,y;s=t.neighborCCW(e),r=t.neighborCW(e),o=i.neighborCCW(n),l=i.neighborCW(n),h=t.getConstrainedEdgeCCW(e),a=t.getConstrainedEdgeCW(e),p=i.getConstrainedEdgeCCW(n),u=i.getConstrainedEdgeCW(n),d=t.getDelaunayEdgeCCW(e),c=t.getDelaunayEdgeCW(e),f=i.getDelaunayEdgeCCW(n),y=i.getDelaunayEdgeCW(n),t.legalize(e,n),i.legalize(n,e),i.setDelaunayEdgeCCW(e,d),t.setDelaunayEdgeCW(e,c),t.setDelaunayEdgeCCW(n,f),i.setDelaunayEdgeCW(n,y),i.setConstrainedEdgeCCW(e,h),t.setConstrainedEdgeCW(e,a),t.setConstrainedEdgeCCW(n,p),i.setConstrainedEdgeCW(n,u),t.clearNeighbors(),i.clearNeighbors(),s&&i.markNeighbor(s),r&&t.markNeighbor(r),o&&t.markNeighbor(o),l&&i.markNeighbor(l),t.markNeighbor(i)}function C(t,e){if(!function(t,e){var i;i=t.basin.left_highest?t.basin.left_node.point.y-e.point.y:t.basin.right_node.point.y-e.point.y;if(t.basin.width>i)return!0;return!1}(t,e)&&(g(t,e),e.prev!==t.basin.left_node||e.next!==t.basin.right_node)){if(e.prev===t.basin.left_node){if(p(e.point,e.next.point,e.next.next.point)===a.CW)return;e=e.next}else if(e.next===t.basin.right_node){if(p(e.point,e.prev.point,e.prev.prev.point)===a.CCW)return;e=e.prev}else e=e.prev.point.ye.p.x&&(p(i.point,i.prev.point,i.prev.prev.point)===a.CW?L(t,e,i):(b(t,e,i),T(t,e,i)))}function b(t,e,i){p(i.prev.point,i.prev.prev.point,i.prev.prev.prev.point)===a.CW?L(t,e,i.prev):p(e.q,i.prev.prev.point,e.p)===a.CW&&b(t,e,i.prev)}function L(t,e,i){g(t,i.prev),i.prev.point!==e.p&&p(e.q,i.prev.point,e.p)===a.CW&&p(i.point,i.prev.point,i.prev.prev.point)===a.CW&&L(t,e,i)}function S(t,e,i,r,o){var l=r.neighborAcross(o);n(l,"FLIP failed due to missing triangle!");var h=l.oppositePoint(r,o);if(r.getConstrainedEdgeAcross(o)){var d=r.index(o);throw new s("poly2tri Intersecting Constraints",[o,h,r.getPoint((d+1)%3),r.getPoint((d+2)%3)])}u(o,r.pointCCW(o),r.pointCW(o),h)?(v(r,o,l,h),t.mapTriangleToNodes(r),t.mapTriangleToNodes(l),o===i&&h===e?i===t.edge_event.constrained_edge.q&&e===t.edge_event.constrained_edge.p&&(r.markConstrainedEdgeByPoints(e,i),l.markConstrainedEdgeByPoints(e,i),P(t,r),P(t,l)):(r=function(t,e,i,n,s,r){var o;if(e===a.CCW)return o=n.edgeIndex(s,r),n.delaunay_edge[o]=!0,P(t,n),n.clearDelaunayEdges(),i;return o=i.edgeIndex(s,r),i.delaunay_edge[o]=!0,P(t,i),i.clearDelaunayEdges(),n}(t,p(i,h,e),r,l,o,h),S(t,e,i,r,o))):(N(t,e,i,r,l,A(e,i,l,h)),y(t,e,i,r,o))}function A(t,e,i,n){var r=p(e,n,t);if(r===a.CW)return i.pointCCW(n);if(r===a.CCW)return i.pointCW(n);throw new s("poly2tri [Unsupported] nextFlipPoint: opposing point on constrained edge!",[e,n,t])}function N(t,e,i,s,r,o){var l=r.neighborAcross(o);n(l,"FLIP failed due to missing triangle");var h=l.oppositePoint(r,o);u(i,s.pointCCW(i),s.pointCW(i),h)?S(t,i,h,l,h):N(t,e,i,s,l,A(e,i,l,h))}e.triangulate=function(t){t.initTriangulation(),t.createAdvancingFront(),function(t){var e,i=t.pointCount();for(e=1;e{"use strict";var n=i(3704),s=i(1688),r=i(1580),o=i(1110),l=i(2752),h=l.Node,a=function(t,e){if(this.p=t,this.q=e,t.y>e.y)this.q=t,this.p=e;else if(t.y===e.y)if(t.x>e.x)this.q=t,this.p=e;else if(t.x===e.x)throw new n("poly2tri Invalid Edge constructor: repeated points!",[t]);this.q._p2t_edge_list||(this.q._p2t_edge_list=[]),this.q._p2t_edge_list.push(this)},p=function(){this.left_node=null,this.bottom_node=null,this.right_node=null,this.width=0,this.left_highest=!1};p.prototype.clear=function(){this.left_node=null,this.bottom_node=null,this.right_node=null,this.width=0,this.left_highest=!1};var u=function(){this.constrained_edge=null,this.right=!1},d=function(t,e){e=e||{},this.triangles_=[],this.map_=[],this.points_=e.cloneArrays?t.slice(0):t,this.edge_list=[],this.pmin_=this.pmax_=null,this.front_=null,this.head_=null,this.tail_=null,this.af_head_=null,this.af_middle_=null,this.af_tail_=null,this.basin=new p,this.edge_event=new u,this.initEdges(this.points_)};d.prototype.addHole=function(t){this.initEdges(t);var e,i=t.length;for(e=0;ee&&(e=l.x),l.xn&&(n=l.y),l.y{"use strict";var n=function(t,e,i){this.points_=[t,e,i],this.neighbors_=[null,null,null],this.interior_=!1,this.constrained_edge=[!1,!1,!1],this.delaunay_edge=[!1,!1,!1]},s=i(9071).toString;n.prototype.toString=function(){return"["+s(this.points_[0])+s(this.points_[1])+s(this.points_[2])+"]"},n.prototype.getPoint=function(t){return this.points_[t]},n.prototype.GetPoint=n.prototype.getPoint,n.prototype.getPoints=function(){return this.points_},n.prototype.getNeighbor=function(t){return this.neighbors_[t]},n.prototype.containsPoint=function(t){var e=this.points_;return t===e[0]||t===e[1]||t===e[2]},n.prototype.containsEdge=function(t){return this.containsPoint(t.p)&&this.containsPoint(t.q)},n.prototype.containsPoints=function(t,e){return this.containsPoint(t)&&this.containsPoint(e)},n.prototype.isInterior=function(){return this.interior_},n.prototype.setInterior=function(t){return this.interior_=t,this},n.prototype.markNeighborPointers=function(t,e,i){var n=this.points_;if(t===n[2]&&e===n[1]||t===n[1]&&e===n[2])this.neighbors_[0]=i;else if(t===n[0]&&e===n[2]||t===n[2]&&e===n[0])this.neighbors_[1]=i;else{if(!(t===n[0]&&e===n[1]||t===n[1]&&e===n[0]))throw new Error("poly2tri Invalid Triangle.markNeighborPointers() call");this.neighbors_[2]=i}},n.prototype.markNeighbor=function(t){var e=this.points_;t.containsPoints(e[1],e[2])?(this.neighbors_[0]=t,t.markNeighborPointers(e[1],e[2],this)):t.containsPoints(e[0],e[2])?(this.neighbors_[1]=t,t.markNeighborPointers(e[0],e[2],this)):t.containsPoints(e[0],e[1])&&(this.neighbors_[2]=t,t.markNeighborPointers(e[0],e[1],this))},n.prototype.clearNeighbors=function(){this.neighbors_[0]=null,this.neighbors_[1]=null,this.neighbors_[2]=null},n.prototype.clearDelaunayEdges=function(){this.delaunay_edge[0]=!1,this.delaunay_edge[1]=!1,this.delaunay_edge[2]=!1},n.prototype.pointCW=function(t){var e=this.points_;return t===e[0]?e[2]:t===e[1]?e[0]:t===e[2]?e[1]:null},n.prototype.pointCCW=function(t){var e=this.points_;return t===e[0]?e[1]:t===e[1]?e[2]:t===e[2]?e[0]:null},n.prototype.neighborCW=function(t){return t===this.points_[0]?this.neighbors_[1]:t===this.points_[1]?this.neighbors_[2]:this.neighbors_[0]},n.prototype.neighborCCW=function(t){return t===this.points_[0]?this.neighbors_[2]:t===this.points_[1]?this.neighbors_[0]:this.neighbors_[1]},n.prototype.getConstrainedEdgeCW=function(t){return t===this.points_[0]?this.constrained_edge[1]:t===this.points_[1]?this.constrained_edge[2]:this.constrained_edge[0]},n.prototype.getConstrainedEdgeCCW=function(t){return t===this.points_[0]?this.constrained_edge[2]:t===this.points_[1]?this.constrained_edge[0]:this.constrained_edge[1]},n.prototype.getConstrainedEdgeAcross=function(t){return t===this.points_[0]?this.constrained_edge[0]:t===this.points_[1]?this.constrained_edge[1]:this.constrained_edge[2]},n.prototype.setConstrainedEdgeCW=function(t,e){t===this.points_[0]?this.constrained_edge[1]=e:t===this.points_[1]?this.constrained_edge[2]=e:this.constrained_edge[0]=e},n.prototype.setConstrainedEdgeCCW=function(t,e){t===this.points_[0]?this.constrained_edge[2]=e:t===this.points_[1]?this.constrained_edge[0]=e:this.constrained_edge[1]=e},n.prototype.getDelaunayEdgeCW=function(t){return t===this.points_[0]?this.delaunay_edge[1]:t===this.points_[1]?this.delaunay_edge[2]:this.delaunay_edge[0]},n.prototype.getDelaunayEdgeCCW=function(t){return t===this.points_[0]?this.delaunay_edge[2]:t===this.points_[1]?this.delaunay_edge[0]:this.delaunay_edge[1]},n.prototype.setDelaunayEdgeCW=function(t,e){t===this.points_[0]?this.delaunay_edge[1]=e:t===this.points_[1]?this.delaunay_edge[2]=e:this.delaunay_edge[0]=e},n.prototype.setDelaunayEdgeCCW=function(t,e){t===this.points_[0]?this.delaunay_edge[2]=e:t===this.points_[1]?this.delaunay_edge[0]=e:this.delaunay_edge[1]=e},n.prototype.neighborAcross=function(t){return t===this.points_[0]?this.neighbors_[0]:t===this.points_[1]?this.neighbors_[1]:this.neighbors_[2]},n.prototype.oppositePoint=function(t,e){var i=t.pointCW(e);return this.pointCW(i)},n.prototype.legalize=function(t,e){var i=this.points_;if(t===i[0])i[1]=i[0],i[0]=i[2],i[2]=e;else if(t===i[1])i[2]=i[1],i[1]=i[0],i[0]=e;else{if(t!==i[2])throw new Error("poly2tri Invalid Triangle.legalize() call");i[0]=i[2],i[2]=i[1],i[1]=e}},n.prototype.index=function(t){var e=this.points_;if(t===e[0])return 0;if(t===e[1])return 1;if(t===e[2])return 2;throw new Error("poly2tri Invalid Triangle.index() call")},n.prototype.edgeIndex=function(t,e){var i=this.points_;if(t===i[0]){if(e===i[1])return 2;if(e===i[2])return 1}else if(t===i[1]){if(e===i[2])return 0;if(e===i[0])return 2}else if(t===i[2]){if(e===i[0])return 1;if(e===i[1])return 0}return-1},n.prototype.markConstrainedEdgeByIndex=function(t){this.constrained_edge[t]=!0},n.prototype.markConstrainedEdgeByEdge=function(t){this.markConstrainedEdgeByPoints(t.p,t.q)},n.prototype.markConstrainedEdgeByPoints=function(t,e){var i=this.points_;e===i[0]&&t===i[1]||e===i[1]&&t===i[0]?this.constrained_edge[2]=!0:e===i[0]&&t===i[2]||e===i[2]&&t===i[0]?this.constrained_edge[1]=!0:(e===i[1]&&t===i[2]||e===i[2]&&t===i[1])&&(this.constrained_edge[0]=!0)},t.exports=n},4555:(t,e)=>{"use strict";var i=1e-12;e.EPSILON=i;var n={CW:1,CCW:-1,COLLINEAR:0};e.Orientation=n,e.orient2d=function(t,e,s){var r=(t.x-s.x)*(e.y-s.y)-(t.y-s.y)*(e.x-s.x);return r>-1e-12&&r0?n.CCW:n.CW},e.inScanArea=function(t,e,n,s){return!((t.x-e.x)*(s.y-e.y)-(s.x-e.x)*(t.y-e.y)>=-1e-12)&&!((t.x-n.x)*(s.y-n.y)-(s.x-n.x)*(t.y-n.y)<=i)},e.isAngleObtuse=function(t,e,i){var n=e.x-t.x,s=e.y-t.y;return n*(i.x-t.x)+s*(i.y-t.y)<0}},9071:t=>{"use strict";function e(t){return"("+t.x+";"+t.y+")"}t.exports={toString:function(t){var i=t.toString();return"[object Object]"===i?e(t):i},toStringBase:e,compare:function(t,e){return t.y===e.y?t.x-e.x:t.y-e.y},equals:function(t,e){return t.x===e.x&&t.y===e.y}}},8917:(t,e,i)=>{"use strict";i.r(e),i.d(e,{Path2D:()=>c});var n=i(2641),s=i.n(n),r=i(1791),o=i.n(r),l=i(8831);let h=new THREE.Vector2,a=new THREE.Vector2,p=new THREE.Box2,u=null,d=()=>(u=u||new Autodesk.Extensions.CompGeom.EllipseArc,u);function c(t){this.segTypes=[],this.segData=[],this.hasCurves=!1,this.bbox=new THREE.Box2,this.precisionTolerance=t}c.FORCE_MITER_LINES_FOR_TESTING=!1,c.prototype.setTessParams=function(t){this.tessParams=t},c.prototype.isClosedPath=function(){return this.segTypes.length&&7===this.segTypes[this.segTypes.length-1]},c.prototype.isPoint=function(){return 2==this.segTypes.length&&0===this.segTypes[0]&&1===this.segTypes[1]&&this.segData[0]==this.segData[2]&&this.segData[1]==this.segData[3]},c.prototype.closePath=function(){this.isClosedPath()||this.segTypes.push(7)},c.prototype.moveTo=function(t,e){this.segTypes.push(0),this.segData.push(t,e),this.bbox.expandByPoint(h.set(t,e))},c.prototype.lineTo=function(t,e){this.segTypes.push(1),this.segData.push(t,e),this.bbox.expandByPoint(h.set(t,e))},c.prototype.arc=function(t,e,i,n,s,r){this.hasCurves=!0,this.segTypes.push(2),this.segData.push(t,e,i,n,s,r),this.bbox.expandByPoint(h.set(t,e))},c.prototype.arcTo=function(t,e,i,n,s){this.hasCurves=!0,this.segTypes.push(3),this.segData.push(t,e,i,n,s),this.bbox.expandByPoint(h.set(t,e)),this.bbox.expandByPoint(h.set(i,n))},c.prototype.quadraticCurveTo=function(t,e,i,n){this.hasCurves=!0,this.segTypes.push(4),this.segData.push(t,e,i,n),this.bbox.expandByPoint(h.set(t,e)),this.bbox.expandByPoint(h.set(i,n))},c.prototype.bezierCurveTo=function(t,e,i,n,s,r){this.hasCurves=!0,this.segTypes.push(5),this.segData.push(t,e,i,n,s,r),this.bbox.expandByPoint(h.set(t,e)),this.bbox.expandByPoint(h.set(i,n)),this.bbox.expandByPoint(h.set(s,r))},c.prototype.ellipse=function(t,e,i,n,s,r,o,l){this.hasCurves=!0,this.segTypes.push(6),this.segData.push(t,e,i,n,s,r,o,l);const h=d().set(t,e,i,n,s,r,o,l).computeBBox(p);this.bbox.union(h)},c.prototype.flatten=function(t){var e=new c(this.precisionTolerance),i=0,n=0,s=0,r=n,o=s,h=this.segTypes,p=this.segData;let u=this.bbox.getSize(a).length();for(var f=0;fMath.abs(s)?n>0?t[i].X-=i*e:t[i].X+=i*e:s>0?t[i].Y-=i*e:t[i].Y+=i*e}};var v=o.flattened||o.flatten(!0),C=v.toClipperPath(t,!1);y.map((o=>{var u=d.preCheckForClipping(t,v,o,l,!0);if(!u.needCancel)if(u.needClipping&&!o.isPoint()){var c=o.toClipperPath(t,l)[0];if(!c)return;s().Clipper.Orientation(c)&&c.reverse();var f=new(s().PolyTree),y=new(s().Clipper);p(c),y.AddPath(c,s().PolyType.ptSubject,!1),y.AddPaths(C,s().PolyType.ptClip,!0),y.Execute(s().ClipType.ctIntersection,f,s().PolyFillType.pftEvenOdd,s().PolyFillType.pftEvenOdd),function(s){var o=s.GetFirst();for(;o;)d.strokeClipperContour(t,o.Contour(),o.IsOpen,i,e,n,r,t.currentVpId,h,!1,a),o=o.GetNext()}(f)}else(!u.needClipping||1==C.length&&s().Clipper.PointInPolygon({X:o.segData[0],Y:o.segData[1]},C[0]))&&this.strokeFlattedPath(t,o,e,i,n,r,l,h,a)}))}else this.strokeFlattedPath(t,u,e,i,n,r,l,h,a)},c.prototype.strokeFlattedPath=function(t,e,i,n,s,r,o,l,h){let a,p=e.segData,u=e.segTypes;o&&(a=t.getCurrentTransform());const d="butt"===h;for(var f=0,y=0,x=0,g=0,P=0,m=0,v=0,C=0;C0&&0===u[C-1];if(e!==g||h!==P||I){const m=d&&I,v=Ct)return!1;s/=h,r/=h,o/=a,l/=a;let p=s*o+r*l;if(Math.abs(1+p)>e)return!1;let u=n[4]-n[2],d=n[5]-n[3],c=n[8]-n[6],f=n[9]-n[7],y=Math.sqrt(u*u+d*d),x=Math.sqrt(c*c+f*f);return!(Math.abs(y-x)>t)&&(u/=y,d/=y,c/=x,f/=x,p=u*c+d*f,!(Math.abs(1+p)>e)&&(p=s*u+r*d,!(Math.abs(p)>e)&&!(Math.abs(s)>t&&Math.abs(r))))};c.prototype.isAABBContain=function(t){return this.isAABB()?function(t,e,i){if(t.containsBox(e))return 1;let n=i;return void 0===n&&(n=.001/t.size().length()),e.min.x-t.max.x>n||e.min.y-t.min.y>n||e.max.x-t.max.x<-n||e.max.y-t.max.y<-n?2:e.min.x-t.min.x<-n||e.min.y-t.min.y<-n||e.max.x-t.max.x>n||e.max.y-t.max.y>n?4:1}(this.bbox,t,this.precisionTolerance):4},c.prototype.clip=function(t,e){var i=t.flattened||t.flatten(!0),n=this.flattened||this.flatten(!0),r=this.preCheckForClipping(null,i,n,!1,!1);if(r.needCancel)return console.warn("No overlap between nested clip regions."),new c;if(0==r.needClipping)return r.needSwapSubject?t:this;{var o=i.toClipperPath(null,!1),l=n.toClipperPath(null,!1),h=new(s().PolyTree),a=new(s().Clipper);a.AddPaths(l,s().PolyType.ptSubject,!0),a.AddPaths(o,s().PolyType.ptClip,!0),a.Execute(s().ClipType.ctIntersection,h,s().PolyFillType.pftEvenOdd,s().PolyFillType.pftEvenOdd);let t=new c(this.precisionTolerance);for(var p=h.GetFirst();p;){for(var u=p.Contour(),d=0;d{!function(s,r,o){var h=s.vertices;if(r){for(var u=t.getCurrentTransform(),d=[],c=0;c0&&(n[n.length-1].X!=s.X||n[n.length-1].Y!=s.Y)||0==n.length)&&n.push(s)}e&&(i=t.getCurrentTransform());for(var a=0;a1&&n.push(s),h(s=[],{X:o[l++],Y:o[l++]})):1==r[a]?h(s,{X:o[l++],Y:o[l++]}):7==r[a]&&(s.push({X:s[0].X,Y:s[0].Y}),n.push(s),s=[]);return s&&s.length>1&&n.push(s),n},c.prototype.hasIntersection=function(t,e,i){return!(t.max.x-e.min.x<=-i||t.max.y-e.min.y<=-i||t.min.x-e.max.x>=i||t.min.y-e.max.y>=i)},c.prototype.preCheckForClipping=function(t,e,i,n,s){var r=e.bbox,o=i.bbox;if(n){let e=t.getCurrentTransform();o=t.transformBox(o,e,p)}return this.hasIntersection(r,o,this.precisionTolerance)?e.isAABB()&&r.containsBox(o)?{needClipping:!1}:i.isAABB()&&o.containsBox(r)?s?{needCancel:!0}:{needClipping:!1,needSwapSubject:!0}:{needClipping:!0}:{needCancel:!0}},c.prototype.getPolygonFromClipperSolution=function(t){function e(t,e,i){for(var n=0;n{var i=[],n=[],r=[];if(1==t.holes.length&&Math.abs(s().JS.AreaOfPolygons(t.holes))>Math.abs(s().JS.AreaOfPolygon(t.outer))){let e=t.holes[0];t.holes[0]=t.outer,t.outer=e}e(r,i,t.outer),t.holes.map((t=>{n.push(i.length/2),e(r,i,t)}));var l=o()(i,n);return{vertices:i,indices:l,holeIndices:n,contours:r}}))},c.prototype.msdfClipping=function(t){var e=(this.flattened||this.flatten(!0)).toClipperPath(null,!1),i=t.toClipperPath(null,!1),n=new(s().PolyTree),r=new(s().Clipper);return r.AddPaths(e,s().PolyType.ptSubject,!0),r.AddPaths(i,s().PolyType.ptClip,!0),r.Execute(s().ClipType.ctIntersection,n,s().PolyFillType.pftEvenOdd,s().PolyFillType.pftEvenOdd),this.getPolygonFromClipperSolution(n)}},299:(t,e,i)=>{"use strict";i.r(e),i.d(e,{UniquePointList:()=>c});var n=i(5229),s=i(5420),r=i(6435),o=i.n(r);let l=function(t,e,i){this.x=t||0,this.y=e||0,this.z=i||0};var h,a,p,u;l.prototype={constructor:l,set:function(t,e,i){return this.x=t,this.y=e,this.z=i,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this},sub:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyMatrix3:function(t){var e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[3]*i+s[6]*n,this.y=s[1]*e+s[4]*i+s[7]*n,this.z=s[2]*e+s[5]*i+s[8]*n,this},applyMatrix4:function(t){var e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*n+s[12],this.y=s[1]*e+s[5]*i+s[9]*n+s[13],this.z=s[2]*e+s[6]*i+s[10]*n+s[14],this},applyProjection:function(t){var e=this.x,i=this.y,n=this.z,s=t.elements,r=1/(s[3]*e+s[7]*i+s[11]*n+s[15]);return this.x=(s[0]*e+s[4]*i+s[8]*n+s[12])*r,this.y=(s[1]*e+s[5]*i+s[9]*n+s[13])*r,this.z=(s[2]*e+s[6]*i+s[10]*n+s[14])*r,this},applyQuaternion:function(t){var e=this.x,i=this.y,n=this.z,s=t.x,r=t.y,o=t.z,l=t.w,h=l*e+r*n-o*i,a=l*i+o*e-s*n,p=l*n+s*i-r*e,u=-s*e-r*i-o*n;return this.x=h*l+u*-s+a*-o-p*-r,this.y=a*l+u*-r+p*-s-h*-o,this.z=p*l+u*-o+h*-r-a*-s,this},transformDirection:function(t){var e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*n,this.y=s[1]*e+s[5]*i+s[9]*n,this.z=s[2]*e+s[6]*i+s[10]*n,this.normalize(),this},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){if(0!==t){var e=1/t;this.x*=e,this.y*=e,this.z*=e}else this.x=0,this.y=0,this.z=0;return this},min:function(t){return this.x>t.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this},max:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this},clampScalar:function(t,e){return void 0===p&&(p=new l,u=new l),p.set(t,t,t),u.set(e,e,e),this.clamp(p,u)},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},lerpVectors:function(t,e,i){return this.subVectors(e,t).multiplyScalar(i).add(t),this},cross:function(t,e){if(void 0!==e)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e);var i=this.x,n=this.y,s=this.z;return this.x=n*t.z-s*t.y,this.y=s*t.x-i*t.z,this.z=i*t.y-n*t.x,this},crossVectors:function(t,e){var i=t.x,n=t.y,s=t.z,r=e.x,o=e.y,l=e.z;return this.x=n*l-s*o,this.y=s*r-i*l,this.z=i*o-n*r,this},projectOnVector:function(t){return void 0===h&&(h=new l),h.copy(t).normalize(),a=this.dot(h),this.copy(h).multiplyScalar(a)},projectOnPlane:function(){var t;return function(e){return void 0===t&&(t=new l),t.copy(this).projectOnVector(e),this.sub(t)}}(),reflect:function(){var t;return function(e){return void 0===t&&(t=new l),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n},setEulerFromRotationMatrix:function(t,e){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(t,e){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(t){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(t)},getScaleFromMatrix:function(t){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(t)},getColumnFromMatrix:function(t,e){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(t,e)},setFromMatrixPosition:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this},setFromMatrixScale:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),i=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),n=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=i,this.z=n,this},setFromMatrixColumn:function(t,e){var i=4*t,n=e.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t,e){return void 0===e&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this},toArray:function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t},fromAttribute:function(t,e,i){return void 0===i&&(i=0),e=e*t.itemSize+i,this.x=t.array[e],this.y=t.array[e+1],this.z=t.array[e+2],this}};const d=new l;class c{constructor(t,e,i,r){this.bbox=t,this.boxSize=this.bbox.getSize(d).length(),"number"==typeof e?(this.precisionTolerance=e,this.scale=1/this.precisionTolerance):(this.precisionTolerance=n.TOL*this.boxSize,this.scale=1/this.precisionTolerance),this.precisionToleranceSq=this.precisionTolerance*this.precisionTolerance,this.snapBaseX=this.bbox.min.x,this.snapBaseY=this.bbox.min.y,this.pts=[],this.xymap=new Map,r&&(this.quadTreeVerts=new s.QuadTree(t.min.x,t.min.y,t.max.x,t.max.y,e)),this.vertexConstructor=i}findOrAddPoint(t,e,i){let n,s=0|(t-this.snapBaseX)*this.scale,r=0|(e-this.snapBaseY)*this.scale,l=1/0;for(let i=s-1;i<=s+1;i++){let s=this.xymap.get(i);if(s)for(let i=r-1;i<=r+1;i++){let r=s.get(i);if(!r)continue;let o=(r.x-t)*(r.x-t)+(r.y-e)*(r.y-e);othis.precisionToleranceSq&&(n=void 0),void 0===n){let i=this.xymap.get(s);i||(i=new Map,this.xymap.set(s,i)),n=this.vertexConstructor?new this.vertexConstructor(t,e):new(o().Point)(t,e),i.set(r,n),n.id=this.pts.length,this.pts.push(n),this.quadTreeVerts&&this.quadTreeVerts.addItem(n)}if(void 0!==i){if("number"==typeof i)-1===n.dbIds.indexOf(i)&&n.dbIds.push(i);else if(i)for(let t=0;t{"use strict";i.r(e),i.d(e,{QuadTree:()=>l});var n=i(2601),s=i(2554);let r;const o={x:0,y:0};class l{constructor(t,e,i,n,s,o){this.items=[],this.children=null,this.itemCount=0,this.extraDistance=s,this.minx=t,this.miny=e,this.maxx=i,this.maxy=n,this.itemHandler=o,r=Autodesk.Viewing.Private.logger}addItem(t){if(this.itemCount++,this.children){let e=0,i=null;for(let n=0;n<4;n++)this.children[n].intersectsItem(t)&&(i=this.children[n],e++);1===e?i.addItem(t):0!==e&&this.items.push(t)}else this.items.push(t),this.items.length>16&&this.subdivide();return this.itemCount}deleteItem(t){if(!this.intersectsItem(t))return 0;if(this.items){let e=this.items.indexOf(t);if(e>=0)return this.items.splice(e,1),this.itemCount--,1}if(this.children){let e=0,i=0;for(let n=0;n<4;n++)e+=this.children[n].deleteItem(t),i+=this.children[n].itemCount;return 1===e?(this.itemCount--,1):(r.warn("Did not find item to delete. Something is wrong.",e),0)}return 0}intersectsBox(t,e,i,n){let r=this.extraDistance;return(0,s.xBoxBox)(t,e,i,n,this.minx-r,this.miny-r,this.maxx+r,this.maxy+r)}intersectsItem(t){return this.itemHandler?this.itemHandler.intersectsBox(t,this.minx-this.extraDistance,this.miny-this.extraDistance,this.maxx+this.extraDistance,this.maxy+this.extraDistance):t.v1?(0,n.xLineBox)(t.v1.x,t.v1.y,t.v2.x,t.v2.y,this.minx-this.extraDistance,this.miny-this.extraDistance,this.maxx+this.extraDistance,this.maxy+this.extraDistance):this.intersectsBox(t.x,t.y,t.x,t.y)}findSplitPoint(){let t=[],e=[];if(this.itemHandler)for(let i=0;it-e)),e.sort(((t,e)=>t-e));let i=t[0|(t.length+1)/2]-this.extraDistance-1e-20,n=e[0|(e.length+1)/2]-this.extraDistance-1e-20;return i<=this.minx||i>=this.maxx||n<=this.miny||n>=this.maxy?null:{midx:i,midy:n}}subdivide(){if(this.children)return void r.error("Attempt to subdivide already split node");if(!this.items.length)return void r.error("Attempt to subdivide empty node");let t=this.minx,e=this.miny,i=this.maxx,n=this.maxy,s=this.findSplitPoint();if(!s)return;let{midx:o,midy:h}=s;this.children=new Array(4),this.children[0]=new l(t,e,o,h,this.extraDistance,this.itemHandler),this.children[1]=new l(o,e,i,h,this.extraDistance,this.itemHandler),this.children[2]=new l(o,h,i,n,this.extraDistance,this.itemHandler),this.children[3]=new l(t,h,o,n,this.extraDistance,this.itemHandler);let a=[];for(let t=0,e=this.items.length;t=i,o=t.v2.x,l=t.v2.y,h=l>=i;r!=h&&(l-i)*(n-o)>=(o-e)*(s-l)==h&&(this.pipResult=!this.pipResult)}pointInPolygon(t,e){return this.pipResult=!1,this.enumInBox(-1/0,e,1/0,e,(i=>{this.pointInPolygonRec(i,t,e)})),this.pipResult}}},2554:(t,e,i)=>{"use strict";function n(t,e,i,n,s,r,o,l){return t<=o&&e<=l&&i>=s&&n>=r}i.r(e),i.d(e,{xBoxBox:()=>n})},3965:(t,e,i)=>{"use strict";i.r(e),i.d(e,{xBoxPlane:()=>s});var n=new THREE.Vector3;function s(t,e){n.set(e.min.x,e.min.y,e.min.z);var i=t.distanceToPoint(n),s=Math.sign(i);n.set(e.min.x,e.min.y,e.max.z);var r=t.distanceToPoint(n);return Math.sign(r)!==s||(n.set(e.min.x,e.max.y,e.min.z),r=t.distanceToPoint(n),Math.sign(r)!==s||(n.set(e.min.x,e.max.y,e.max.z),r=t.distanceToPoint(n),Math.sign(r)!==s||(n.set(e.max.x,e.min.y,e.min.z),r=t.distanceToPoint(n),Math.sign(r)!==s||(n.set(e.max.x,e.min.y,e.max.z),r=t.distanceToPoint(n),Math.sign(r)!==s||(n.set(e.max.x,e.max.y,e.min.z),r=t.distanceToPoint(n),Math.sign(r)!==s||(n.set(e.max.x,e.max.y,e.max.z),r=t.distanceToPoint(n),Math.sign(r)!==s))))))}},2601:(t,e,i)=>{"use strict";i.r(e),i.d(e,{xLineBox:()=>a});const n=0,s=1,r=2,o=4,l=8;function h(t,e,i,h,a,p){let u;return u=n,ta&&(u|=r),ep&&(u|=l),u}function a(t,e,i,n,a,p,u,d){let c=h(t,e,a,p,u,d),f=h(i,n,a,p,u,d),y=!1;for(;;){if(!(c|f)){y=!0;break}if(c&f)break;{let y,x,g=c||f;g&l?(y=t+(i-t)*(d-e)/(n-e),x=d):g&o?(y=t+(i-t)*(p-e)/(n-e),x=p):g&r?(x=e+(n-e)*(u-t)/(i-t),y=u):g&s&&(x=e+(n-e)*(a-t)/(i-t),y=a),g===c?c=h(t=y,e=x,a,p,u,d):f=h(i=y,n=x,a,p,u,d)}}return y}},1272:(t,e,i)=>{"use strict";function n(t){return Math.abs(t)}i.r(e),i.d(e,{ONE_INTERSECTION:()=>r,OVERLAP:()=>o,pointOnLine:()=>l,segmentsIntersect:()=>h});const s=i(5229).TOL,r=4,o=5;function l(t,e,i,n,r,o){if(i.lengthi.length+r))return!1;let a=i.v1.x+h*i.dx,p=i.v1.y+h*i.dy,u=(a-t)*(a-t)+(p-e)*(p-e);return o&&(o.x=a,o.y=p,o.d=Math.sqrt(u),o.u=h),ut.length+i)return null;let c=p/h*e.length;if(c<-i||c>e.length+i)return null;let f=t.v1.x+u*t.dx,y=t.v1.y+u*t.dy;return{status:r,e1:[f,y],e2:[f,y]}}},6353:(t,e,i)=>{"use strict";i.r(e),i.d(e,{convertToPlaneCoords:()=>p,makePlaneBasis:()=>a,xMeshPlane:()=>h});var n=i(5229),s=i(908);const r=Autodesk.Viewing.Private.VertexEnumerator;var o=new THREE.Matrix4,l=new THREE.Plane;function h(t,e,i){let{geometry:n,matrixWorld:h,fragId:a}=e;if(!n)return;let p=i.length;o.copy(h).invert(),l.copy(t).applyMatrix4(o),r.enumMeshTriangles(n,(function(t,e,n,r,o,h){(0,s.xTrianglePlane)(l,t,e,n,r,o,h,i,a)}));for(let t=p,e=i.length;t{"use strict";i.r(e),i.d(e,{xPlaneSegment:()=>r});var n=i(5229);let s=new THREE.Vector3;function r(t,e,i,r,o){let l=s.subVectors(i,e),h=t.normal.dot(l);if((0,n.isZero)(h))return r.copy(e),o.copy(i),2;h=1/h;let a=-(e.dot(t.normal)*h+t.constant*h);if(a<-n.TOL||a>1+n.TOL)return 0;let p=l.multiplyScalar(a).add(e);return r.copy(p),1}},908:(t,e,i)=>{"use strict";i.r(e),i.d(e,{xTrianglePlane:()=>a});var n=i(5229),s=i(8189);const r=Autodesk.Viewing.Private.logger;function o(t,e,i,n,s,r,o){this.v1=t.clone(),this.v2=e.clone()}let l=new THREE.Vector3,h=new THREE.Vector3;function a(t,e,i,a,p,u,d,c,f){let y=t.distanceToPoint(e),x=t.distanceToPoint(i),g=t.distanceToPoint(a);if(y<-n.TOL&&x<-n.TOL&&g<-n.TOL)return null;if(y>n.TOL&&x>n.TOL&&g>n.TOL)return null;let P,m,v,C,_,I,E=Math.sign(y),T=Math.sign(x),b=Math.sign(g);if(0===E&&0===T&&0===b)return null;if(E!==T){let n=(0,s.xPlaneSegment)(t,e,i,l,h);if(2===n)return void c.push(new o(e,i,p,p,u,u,f));1===n?(v=p,C=u,P=l.clone()):r.warn("Unexpected zero intersections where at least one was expected")}if(T!==b){let e=(0,s.xPlaneSegment)(t,i,a,l,h);if(2===e)return void c.push(new o(i,a,u,u,d,d,f));1===e?P?l.distanceTo(P)>n.TOL&&(_=u,I=d,m=l.clone()):(v=u,C=d,P=l.clone()):r.warn("Unexpected zero intersections where at least one was expected")}if(b!==E){let i=(0,s.xPlaneSegment)(t,a,e,l,h);if(2===i)return void c.push(new o(a,e,d,d,p,p,f));1===i?P?l.distanceTo(P)>n.TOL&&(_=d,I=p,m=l.clone()):r.warn("Unexpected single intersection point"):r.warn("Unexpected zero intersections where at least one was expected")}P&&m&&c.push(new o(P,m,v,C,_,I,f))}},3095:t=>{"use strict";t.exports={version:"1.5.0"}}},e={};function i(n){var s=e[n];if(void 0!==s)return s.exports;var r=e[n]={exports:{}};return t[n](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n=i(6082);Autodesk.Extensions.CompGeom=n})(); +//# sourceMappingURL=CompGeom.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/DataVisualization/DataVisualization.min.js b/public/autodesk/extensions/DataVisualization/DataVisualization.min.js new file mode 100644 index 0000000..c7361e7 --- /dev/null +++ b/public/autodesk/extensions/DataVisualization/DataVisualization.min.js @@ -0,0 +1,45 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var t={5354:t=>{t.exports={MOUSE_HOVERING:"DATAVIZ_OBJECT_HOVERING",MOUSE_CLICK:"DATAVIZ_OBJECT_CLICK",MOUSE_CLICK_OUT:"DATAVIZ_CLICK_OUT"}},1048:(t,e,i)=>{const n=i(1897),s=65535;t.exports={SpriteMeshBuilder:class{constructor(t){this.meshCallback=t,this.dbIds=[],this.reset()}addPoint(t,e){this.vcount+1>s&&(this.flushBuffer(),this.reset());let i=this.vcount;if(this.ib[i]=i,this.vb[3*i]=t.position.x,this.vb[3*i+1]=t.position.y,this.vb[3*i+2]=t.position.z,this.idb[3*i]=255&t.dbId,this.idb[3*i+1]=t.dbId>>8&255,this.idb[3*i+2]=t.dbId>>16&255,this.colorb[3*i]=255*t.color.r,this.colorb[3*i+1]=255*t.color.g,this.colorb[3*i+2]=255*t.color.b,e){let n=e.spriteUV(t.style.url);n&&(this.uv[4*i]=n.x,this.uv[4*i+1]=n.y,this.uv[4*i+2]=n.w,this.uv[4*i+3]=n.h)}this.scale[i]=1,this.dbIds.push(t.dbId),this.vcount++}reset(){this.vcount=0,this.ib=new Uint16Array(s),this.idb=new Uint8Array(196605),this.vb=new Float32Array(196605),this.colorb=new Uint8Array(196605),this.scale=new Float32Array(s),this.uv=new Float32Array(262140)}flushBuffer(){let t=new n.BufferGeometry,e=new n.BufferAttribute(new Uint8Array(this.idb.slice(0,3*this.vcount)),3);e.bytesPerItem=1,e.normalized=!0;let i=new n.BufferAttribute(new Float32Array(this.vb.slice(0,3*this.vcount)),3);i.bytesPerItem=4;let s=new n.BufferAttribute(new Uint8Array(this.colorb.slice(0,3*this.vcount)),3);s.bytesPerItem=1,s.normalized=!0;let r=new n.BufferAttribute(new Uint16Array(this.ib.slice(0,this.vcount)),1),o=new n.BufferAttribute(new Float32Array(this.uv.slice(0,4*this.vcount)),4),a=new n.BufferAttribute(new Float32Array(this.scale.slice(0,this.vcount)),1);t.setAttribute("id",e),t.setIndex(r),t.setAttribute("position",i),t.setAttribute("color",s),t.setAttribute("uvp",o),t.setAttribute("pointScale",a),t.isPoints=!0,t.dbIds=this.dbIds.slice(0),this.dbIds.length=0,this.meshCallback&&this.meshCallback(t),this.vcount=0}}}},673:t=>{class e{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;this.id=t,this._children=[],this.isGroup=!0,this.name=e}get children(){return this._children}addChild(t){this.children.push(t)}update(t){this.children.forEach((e=>e.update(t)))}getLeafsById(t,e){e=e||[];for(let i=0;i3&&void 0!==arguments[3]?arguments[3]:t;"number"==typeof e&&(e=[e]),this.dbIds=e,this.shadingPoints=i||[],this.isLeaf=!0,this.fragIds=[],this.id=t,this.name=n,this.bounds=new THREE.Box3}addPoint(t){this.shadingPoints.push(t)}update(t){const e=t.getData().instanceTree,i=new Set(this.fragIds),n=new THREE.Box3,s=t.getFragmentList();this.dbIds.forEach((t=>{e.enumNodeFragments(t,(t=>{i.has(t)||(this.fragIds.push(t),s.getWorldBounds(t,n),this.bounds.union(n))}),true)}))}},SurfaceShadingPoint:class{constructor(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};this.id=t,this.position=e,this.types=i,this.name=n,this.contextData=s,this.dbId=null}positionFromDBId(t,e){const i=t.getData().instanceTree,n=new THREE.Box3,s=new THREE.Box3,r=t.getFragmentList();this.dbId=e,i.enumNodeFragments(e,(t=>{r.getWorldBounds(t,s),n.union(s)}),!0),this.position=n.getCenter(new THREE.Vector3)||this.position}},filterShadingPointsByType:function(t,e){return(t=t||[]).filter((t=>t.types&&t.types.includes(e)))}}},1801:function(t,e,i){var n,s,r;r=function(){var t,e={defaultRadius:40,defaultRenderer:"canvas2d",defaultGradient:{.25:"rgb(0,0,255)",.55:"rgb(0,255,0)",.85:"yellow",1:"rgb(255,0,0)"},defaultMaxOpacity:1,defaultMinOpacity:0,defaultBlur:.85,defaultXField:"x",defaultYField:"y",defaultValueField:"value",plugins:{}},i=function(){var t=function(t){this._coordinator={},this._data=[],this._radi=[],this._min=10,this._max=1,this._xField=t.xField||t.defaultXField,this._yField=t.yField||t.defaultYField,this._valueField=t.valueField||t.defaultValueField,t.radius&&(this._cfgRadius=t.radius)},i=e.defaultRadius;return t.prototype={_organiseData:function(t,e){var n=t[this._xField],s=t[this._yField],r=this._radi,o=this._data,a=this._max,h=this._min,l=t[this._valueField]||1,d=t.radius||this._cfgRadius||i;o[n]||(o[n]=[],r[n]=[]),o[n][s]?o[n][s]+=l:(o[n][s]=l,r[n][s]=d);var c=o[n][s];return c>a?(e?this.setDataMax(c):this._max=c,!1):c0)for(var t=arguments[0],e=t.length;e--;)this.addData.call(this,t[e]);else{var i=this._organiseData(arguments[0],!0);i&&(0===this._data.length&&(this._min=this._max=i.value),this._coordinator.emit("renderpartial",{min:this._min,max:this._max,data:[i]}))}return this},setData:function(t){var e=t.data,i=e.length;this._data=[],this._radi=[];for(var n=0;n0&&(this._drawAlpha(t),this._colorize())},renderAll:function(t){this._clear(),t.data.length>0&&(this._drawAlpha(function(t){for(var e=[],i=t.min,n=t.max,s=t.radi,r=(t=t.data,Object.keys(t)),o=r.length;o--;)for(var a=r[o],h=Object.keys(t[a]),l=h.length;l--;){var d=h[l],c=t[a][d],u=s[a][d];e.push({x:a,y:d,value:c,radius:u})}return{min:i,max:n,data:e}}(t)),this._colorize())},_updateGradient:function(e){this._palette=t(e)},updateConfig:function(t){t.gradient&&this._updateGradient(t),this._setStyles(t)},setDimensions:function(t,e){this._width=t,this._height=e,this.canvas.width=this.shadowCanvas.width=t,this.canvas.height=this.shadowCanvas.height=e},_clear:function(){this.shadowCtx.clearRect(0,0,this._width,this._height),this.ctx.clearRect(0,0,this._width,this._height)},_setStyles:function(t){this._blur=0==t.blur?0:t.blur||t.defaultBlur,t.backgroundColor&&(this.canvas.style.backgroundColor=t.backgroundColor),this._width=this.canvas.width=this.shadowCanvas.width=t.width||this._width,this._height=this.canvas.height=this.shadowCanvas.height=t.height||this._height,this._opacity=255*(t.opacity||0),this._maxOpacity=255*(t.maxOpacity||t.defaultMaxOpacity),this._minOpacity=255*(t.minOpacity||t.defaultMinOpacity),this._useGradientOpacity=!!t.useGradientOpacity},_drawAlpha:function(t){for(var i=this._min=t.min,n=this._max=t.max,s=(t=t.data||[]).length,r=1-this._blur;s--;){var o,a=t[s],h=a.x,l=a.y,d=a.radius,c=Math.min(a.value,n),u=h-d,p=l-d,f=this.shadowCtx;this._templates[d]?o=this._templates[d]:this._templates[d]=o=e(d,r);var g=(c-i)/(n-i);f.globalAlpha=g<.01?.01:g,f.drawImage(o,u,p),uthis._renderBoundaries[2]&&(this._renderBoundaries[2]=u+2*d),p+2*d>this._renderBoundaries[3]&&(this._renderBoundaries[3]=p+2*d)}},_colorize:function(){var t=this._renderBoundaries[0],e=this._renderBoundaries[1],i=this._renderBoundaries[2]-t,n=this._renderBoundaries[3]-e,s=this._width,r=this._height,o=this._opacity,a=this._maxOpacity,h=this._minOpacity,l=this._useGradientOpacity;t<0&&(t=0),e<0&&(e=0),t+i>s&&(i=s-t),e+n>r&&(n=r-e);for(var d=this.shadowCtx.getImageData(t,e,i,n),c=d.data,u=c.length,p=this._palette,f=3;f0?o:v{ +/*! + * + * Copyright 2009-2017 Kris Kowal under the terms of the MIT + * license found at https://github.com/kriskowal/q/blob/v1/LICENSE + * + * With parts by Tyler Close + * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found + * at http://www.opensource.org/licenses/mit-license.html + * Forked at ref_send.js version: 2009-05-11 + * + * With parts by Mark Miller + * Copyright (C) 2011 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +!function(e){"use strict";"function"==typeof bootstrap?bootstrap("promise",e):t.exports=e()}((function(){"use strict";var t=!1;try{throw new Error}catch(e){t=!!e.stack}var e,i=x(),n=function(){},s=function(){var t={task:void 0,next:null},e=t,i=!1,n=void 0,r=!1,o=[];function a(){for(var e,n;t.next;)e=(t=t.next).task,t.task=void 0,(n=t.domain)&&(t.domain=void 0,n.enter()),h(e,n);for(;o.length;)h(e=o.pop());i=!1}function h(t,e){try{t()}catch(t){if(r)throw e&&e.exit(),setTimeout(a,0),e&&e.enter(),t;setTimeout((function(){throw t}),0)}e&&e.exit()}if(s=function(t){e=e.next={task:t,domain:r&&process.domain,next:null},i||(i=!0,n())},"object"==typeof process&&"[object process]"===process.toString()&&process.nextTick)r=!0,n=function(){process.nextTick(a)};else if("function"==typeof setImmediate)n="undefined"!=typeof window?setImmediate.bind(window,a):function(){setImmediate(a)};else if("undefined"!=typeof MessageChannel){var l=new MessageChannel;l.port1.onmessage=function(){n=d,l.port1.onmessage=a,a()};var d=function(){l.port2.postMessage(0)};n=function(){setTimeout(a,0),d()}}else n=function(){setTimeout(a,0)};return s.runAfter=function(t){o.push(t),i||(i=!0,n())},s}(),r=Function.call;function o(t){return function(){return r.apply(t,arguments)}}var a,h=o(Array.prototype.slice),l=o(Array.prototype.reduce||function(t,e){var i=0,n=this.length;if(1===arguments.length)for(;;){if(i in this){e=this[i++];break}if(++i>=n)throw new TypeError}for(;is.stackCounter)&&(p(e,"__minimumStackCounter__",{value:s.stackCounter,configurable:!0}),n.unshift(s.stack));n.unshift(e.stack);var r=function(t){for(var e=t.split("\n"),i=[],n=0;n=i&&r<=X}function x(){if(t)try{throw new Error}catch(t){var i=t.stack.split("\n"),n=w(i[0].indexOf("@")>0?i[1]:i[2]);if(!n)return;return e=n[0],n[1]}}function b(t){return t instanceof M?t:D(t)?function(t){var e=T();return b.nextTick((function(){try{t.then(e.resolve,e.reject,e.notify)}catch(t){e.reject(t)}})),e.promise}(t):L(t)}b.resolve=b,b.nextTick=s,b.longStackSupport=!1;var E=1;function T(){var e,i=[],n=[],s=u(T.prototype),r=u(M.prototype);if(r.promiseDispatch=function(t,s,r){var o=h(arguments);i?(i.push(o),"when"===s&&r[1]&&n.push(r[1])):b.nextTick((function(){e.promiseDispatch.apply(e,o)}))},r.valueOf=function(){if(i)return r;var t=P(e);return A(t)&&(e=t),t},r.inspect=function(){return e?e.inspect():{state:"pending"}},b.longStackSupport&&t)try{throw new Error}catch(t){r.stack=t.stack.substring(t.stack.indexOf("\n")+1),r.stackCounter=E++}function o(s){e=s,b.longStackSupport&&t&&(r.source=s),l(i,(function(t,e){b.nextTick((function(){s.promiseDispatch.apply(s,e)}))}),void 0),i=void 0,n=void 0}return s.promise=r,s.resolve=function(t){e||o(b(t))},s.fulfill=function(t){e||o(L(t))},s.reject=function(t){e||o(F(t))},s.notify=function(t){e||l(n,(function(e,i){b.nextTick((function(){i(t)}))}),void 0)},s}function R(t){if("function"!=typeof t)throw new TypeError("resolver must be a function.");var e=T();try{t(e.resolve,e.reject,e.notify)}catch(t){e.reject(t)}return e.promise}function S(t){return R((function(e,i){for(var n=0,s=t.length;n2?t.resolve(h(arguments,1)):t.resolve(i)}},b.Promise=R,b.promise=R,R.race=S,R.all=W,R.reject=F,R.resolve=b,b.passByCopy=function(t){return t},M.prototype.passByCopy=function(){return this},b.join=function(t,e){return b(t).join(e)},M.prototype.join=function(t){return b([this,t]).spread((function(t,e){if(t===e)return t;throw new Error("Q can't join: not the same: "+t+" "+e)}))},b.race=S,M.prototype.race=function(){return this.then(b.race)},b.makePromise=M,M.prototype.toString=function(){return"[object Promise]"},M.prototype.then=function(t,e,i){var n=this,s=T(),r=!1;return b.nextTick((function(){n.promiseDispatch((function(e){r||(r=!0,s.resolve(function(e){try{return"function"==typeof t?t(e):e}catch(t){return F(t)}}(e)))}),"when",[function(t){r||(r=!0,s.resolve(function(t){if("function"==typeof e){m(t,n);try{return e(t)}catch(t){return F(t)}}return F(t)}(t)))}])})),n.promiseDispatch(void 0,"when",[void 0,function(t){var e,n=!1;try{e=function(t){return"function"==typeof i?i(t):t}(t)}catch(t){if(n=!0,!b.onerror)throw t;b.onerror(t)}n||s.notify(e)}]),s.promise},b.tap=function(t,e){return b(t).tap(e)},M.prototype.tap=function(t){return t=b(t),this.then((function(e){return t.fcall(e).thenResolve(e)}))},b.when=C,M.prototype.thenResolve=function(t){return this.then((function(){return t}))},b.thenResolve=function(t,e){return b(t).thenResolve(e)},M.prototype.thenReject=function(t){return this.then((function(){throw t}))},b.thenReject=function(t,e){return b(t).thenReject(e)},b.nearer=P,b.isPromise=A,b.isPromiseAlike=D,b.isPending=function(t){return A(t)&&"pending"===t.inspect().state},M.prototype.isPending=function(){return"pending"===this.inspect().state},b.isFulfilled=function(t){return!A(t)||"fulfilled"===t.inspect().state},M.prototype.isFulfilled=function(){return"fulfilled"===this.inspect().state},b.isRejected=function(t){return A(t)&&"rejected"===t.inspect().state},M.prototype.isRejected=function(){return"rejected"===this.inspect().state};var I,O,k,H=[],V=[],B=[],j=!0;function U(){H.length=0,V.length=0,j||(j=!0)}function F(t){var e=M({when:function(e){return e&&function(t){if(j){var e=d(V,t);-1!==e&&("object"==typeof process&&"function"==typeof process.emit&&b.nextTick.runAfter((function(){var i=d(B,t);-1!==i&&(process.emit("rejectionHandled",H[e],t),B.splice(i,1))})),V.splice(e,1),H.splice(e,1))}}(this),e?e(t):this}},(function(){return this}),(function(){return{state:"rejected",reason:t}}));return function(t,e){j&&("object"==typeof process&&"function"==typeof process.emit&&b.nextTick.runAfter((function(){-1!==d(V,t)&&(process.emit("unhandledRejection",e,t),B.push(t))})),V.push(t),e&&void 0!==e.stack?H.push(e.stack):H.push("(no stack) "+e))}(e,t),e}function L(t){return M({when:function(){return t},get:function(e){return t[e]},set:function(e,i){t[e]=i},delete:function(e){delete t[e]},post:function(e,i){return null==e?t.apply(void 0,i):t[e].apply(t,i)},apply:function(e,i){return t.apply(e,i)},keys:function(){return g(t)}},void 0,(function(){return{state:"fulfilled",value:t}}))}function N(t,e,i){return b(t).spread(e,i)}function z(t,e,i){return b(t).dispatch(e,i)}function W(t){return C(t,(function(t){var e=0,i=T();return l(t,(function(n,s,r){var o;A(s)&&"fulfilled"===(o=s.inspect()).state?t[r]=o.value:(++e,C(s,(function(n){t[r]=n,0==--e&&i.resolve(t)}),i.reject,(function(t){i.notify({index:r,value:t})})))}),void 0),0===e&&i.resolve(t),i.promise}))}function G(t){if(0===t.length)return b.resolve();var e=b.defer(),i=0;return l(t,(function(n,s,r){var o=t[r];i++,C(o,(function(t){e.resolve(t)}),(function(t){if(0===--i){var n=t||new Error(""+t);n.message="Q can't get fulfillment value from any promise, all promises were rejected. Last error message: "+n.message,e.reject(n)}}),(function(t){e.notify({index:r,value:t})}))}),void 0),e.promise}function $(t){return C(t,(function(t){return t=c(t,b),C(W(c(t,(function(t){return C(t,n,n)}))),(function(){return t}))}))}b.resetUnhandledRejections=U,b.getUnhandledReasons=function(){return H.slice()},b.stopUnhandledRejectionTracking=function(){U(),j=!1},U(),b.reject=F,b.fulfill=L,b.master=function(t){return M({isDef:function(){}},(function(e,i){return z(t,e,i)}),(function(){return b(t).inspect()}))},b.spread=N,M.prototype.spread=function(t,e){return this.all().then((function(e){return t.apply(void 0,e)}),e)},b.async=function(t){return function(){function e(t,e){var r;if("undefined"==typeof StopIteration){try{r=i[t](e)}catch(t){return F(t)}return r.done?b(r.value):C(r.value,n,s)}try{r=i[t](e)}catch(t){return function(t){return"[object StopIteration]"===v(t)||t instanceof a}(t)?b(t.value):F(t)}return C(r,n,s)}var i=t.apply(this,arguments),n=e.bind(e,"next"),s=e.bind(e,"throw");return n()}},b.spawn=function(t){b.done(b.async(t)())},b.return=function(t){throw new a(t)},b.promised=function(t){return function(){return N([this,W(arguments)],(function(e,i){return t.apply(e,i)}))}},b.dispatch=z,M.prototype.dispatch=function(t,e){var i=this,n=T();return b.nextTick((function(){i.promiseDispatch(n.resolve,t,e)})),n.promise},b.get=function(t,e){return b(t).dispatch("get",[e])},M.prototype.get=function(t){return this.dispatch("get",[t])},b.set=function(t,e,i){return b(t).dispatch("set",[e,i])},M.prototype.set=function(t,e){return this.dispatch("set",[t,e])},b.del=b.delete=function(t,e){return b(t).dispatch("delete",[e])},M.prototype.del=M.prototype.delete=function(t){return this.dispatch("delete",[t])},b.mapply=b.post=function(t,e,i){return b(t).dispatch("post",[e,i])},M.prototype.mapply=M.prototype.post=function(t,e){return this.dispatch("post",[t,e])},b.send=b.mcall=b.invoke=function(t,e){return b(t).dispatch("post",[e,h(arguments,2)])},M.prototype.send=M.prototype.mcall=M.prototype.invoke=function(t){return this.dispatch("post",[t,h(arguments,1)])},b.fapply=function(t,e){return b(t).dispatch("apply",[void 0,e])},M.prototype.fapply=function(t){return this.dispatch("apply",[void 0,t])},b.try=b.fcall=function(t){return b(t).dispatch("apply",[void 0,h(arguments,1)])},M.prototype.fcall=function(){return this.dispatch("apply",[void 0,h(arguments)])},b.fbind=function(t){var e=b(t),i=h(arguments,1);return function(){return e.dispatch("apply",[this,i.concat(h(arguments))])}},M.prototype.fbind=function(){var t=this,e=h(arguments);return function(){return t.dispatch("apply",[this,e.concat(h(arguments))])}},b.keys=function(t){return b(t).dispatch("keys",[])},M.prototype.keys=function(){return this.dispatch("keys",[])},b.all=W,M.prototype.all=function(){return W(this)},b.any=G,M.prototype.any=function(){return G(this)},b.allResolved=(I=$,O="allResolved",k="allSettled",function(){return"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(O+" is deprecated, use "+k+" instead.",new Error("").stack),I.apply(I,arguments)}),M.prototype.allResolved=function(){return $(this)},b.allSettled=function(t){return b(t).allSettled()},M.prototype.allSettled=function(){return this.then((function(t){return W(c(t,(function(t){function e(){return t.inspect()}return(t=b(t)).then(e,e)})))}))},b.fail=b.catch=function(t,e){return b(t).then(void 0,e)},M.prototype.fail=M.prototype.catch=function(t){return this.then(void 0,t)},b.progress=function(t,e){return b(t).then(void 0,void 0,e)},M.prototype.progress=function(t){return this.then(void 0,void 0,t)},b.fin=b.finally=function(t,e){return b(t).finally(e)},M.prototype.fin=M.prototype.finally=function(t){if(!t||"function"!=typeof t.apply)throw new Error("Q can't apply finally callback");return t=b(t),this.then((function(e){return t.fcall().then((function(){return e}))}),(function(e){return t.fcall().then((function(){throw e}))}))},b.done=function(t,e,i,n){return b(t).done(e,i,n)},M.prototype.done=function(t,e,i){var n=function(t){b.nextTick((function(){if(m(t,s),!b.onerror)throw t;b.onerror(t)}))},s=t||e||i?this.then(t,e,i):this;"object"==typeof process&&process&&process.domain&&(n=process.domain.bind(n)),s.then(void 0,n)},b.timeout=function(t,e,i){return b(t).timeout(e,i)},M.prototype.timeout=function(t,e){var i=T(),n=setTimeout((function(){e&&"string"!=typeof e||((e=new Error(e||"Timed out after "+t+" ms")).code="ETIMEDOUT"),i.reject(e)}),t);return this.then((function(t){clearTimeout(n),i.resolve(t)}),(function(t){clearTimeout(n),i.reject(t)}),i.notify),i.promise},b.delay=function(t,e){return void 0===e&&(e=t,t=void 0),b(t).delay(e)},M.prototype.delay=function(t){return this.then((function(e){var i=T();return setTimeout((function(){i.resolve(e)}),t),i.promise}))},b.nfapply=function(t,e){return b(t).nfapply(e)},M.prototype.nfapply=function(t){var e=T(),i=h(t);return i.push(e.makeNodeResolver()),this.fapply(i).fail(e.reject),e.promise},b.nfcall=function(t){var e=h(arguments,1);return b(t).nfapply(e)},M.prototype.nfcall=function(){var t=h(arguments),e=T();return t.push(e.makeNodeResolver()),this.fapply(t).fail(e.reject),e.promise},b.nfbind=b.denodeify=function(t){if(void 0===t)throw new Error("Q can't wrap an undefined function");var e=h(arguments,1);return function(){var i=e.concat(h(arguments)),n=T();return i.push(n.makeNodeResolver()),b(t).fapply(i).fail(n.reject),n.promise}},M.prototype.nfbind=M.prototype.denodeify=function(){var t=h(arguments);return t.unshift(this),b.denodeify.apply(void 0,t)},b.nbind=function(t,e){var i=h(arguments,2);return function(){var n=i.concat(h(arguments)),s=T();return n.push(s.makeNodeResolver()),b((function(){return t.apply(e,arguments)})).fapply(n).fail(s.reject),s.promise}},M.prototype.nbind=function(){var t=h(arguments,0);return t.unshift(this),b.nbind.apply(void 0,t)},b.nmapply=b.npost=function(t,e,i){return b(t).npost(e,i)},M.prototype.nmapply=M.prototype.npost=function(t,e){var i=h(e||[]),n=T();return i.push(n.makeNodeResolver()),this.dispatch("post",[t,i]).fail(n.reject),n.promise},b.nsend=b.nmcall=b.ninvoke=function(t,e){var i=h(arguments,2),n=T();return i.push(n.makeNodeResolver()),b(t).dispatch("post",[e,i]).fail(n.reject),n.promise},M.prototype.nsend=M.prototype.nmcall=M.prototype.ninvoke=function(t){var e=h(arguments,1),i=T();return e.push(i.makeNodeResolver()),this.dispatch("post",[t,e]).fail(i.reject),i.promise},b.nodeify=function(t,e){return b(t).nodeify(e)},M.prototype.nodeify=function(t){if(!t)return this;this.then((function(e){b.nextTick((function(){t(null,e)}))}),(function(e){b.nextTick((function(){t(e)}))}))},b.noConflict=function(){throw new Error("Q.noConflict only works when Q is used as a global")};var X=x();return b}))},1897:t=>{"use strict";t.exports=THREE}},e={};function i(n){var s=e[n];if(void 0!==s)return s.exports;var r=e[n]={exports:{}};return t[n].call(r.exports,r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";i.r(n);var t={};i.r(t),i.d(t,{CustomViewable:()=>b,SpriteViewable:()=>E,ViewableData:()=>T,ViewableStyle:()=>x,ViewableType:()=>_});var e=i(5354),s=i.n(e),r=Autodesk.Viewing;const o=r.GlobalManagerMixin;class a extends r.ToolInterface{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this.names=["HyperionTool"],this.options=e,this.setGlobalManager(t.globalManager),this.viewer=t,this.delegate=e.delegate,this.init(),this.hoveringDbId=0,this.selectedDbId=0}init(){let t=this.viewer.impl;this.activate=t=>{this.active=!0},this.deactivate=t=>{this.clearMarkedObject(),this.active=!1},this.handleSingleClick=(i,n)=>{let s=!1;if(0===n){var r;const n=[],o=t.clientToViewport(i.canvasX,i.canvasY),a=t.renderer(),h=null===(r=a.getOverlayIdTarget)||void 0===r?void 0:r.call(a);if(!h)return!1;const l=a.idAtPixel(o.x,o.y,n,[h]);if(this.selectedDbId!=l||0==this.selectedDbId){if(this.selectedDbId){const t={type:e.MOUSE_CLICK_OUT,dbId:this.selectedDbId,originalEvent:i};this.viewer.dispatchEvent(t),t.hasStopped||(this.clearMarkedObject(),this.viewer.impl.invalidate(!1,!1,!0))}this.selectedDbId=l;const n=t.hitTestViewport(o.clone(),!1),r={type:e.MOUSE_CLICK,dbId:l,clickInfo:n,originalEvent:i};this.viewer.dispatchEvent(r),r.hasStopped||(this.markObject([l]),this.viewer.impl.invalidate(!1,!1,!0)),this.selectedDbId&&(s=!0)}}return s},this.handleSingleTap=t=>this.handleSingleClick(t,0),this.handleDoubleClick=(t,e)=>!1,this.handleButtonDown=t=>(this.buttonDown=!0,!1),this.handleButtonUp=t=>(this.buttonDown=!1,!1),this.handleMouseMove=i=>{if(!this.buttonDown){var n,s;const r=t.clientToViewport(i.canvasX,i.canvasY),o=null===(n=(s=t.renderer()).getOverlayIdTarget)||void 0===n?void 0:n.call(s);if(!o)return!1;const a=[],h=t.renderer().idAtPixel(r.x,r.y,a,[o]);if(this.hoveringDbId!=h){const t=0!=h?h:this.hoveringDbId;this.hoveringDbId=h;const n=0!=h;return this.viewer.dispatchEvent({type:e.MOUSE_HOVERING,dbId:t,hovering:n,originalEvent:i}),!0}}},this.markObject=t=>{if(t instanceof Array||(t=[t]),!this.delegate.hasViewables)return;let e=this.delegate.mapDbIdsToGeometries(t),i=new Set(t);e.map((t=>{if(t&&t.attributes.id&&t.attributes.pointScale){let e=t.attributes.pointScale.array,n=t.attributes.uvp.array,s=t.attributes.color.array,r=t.attributes.id.array;for(let t=0;t{if(!this.delegate.hasViewables)return void(this.markedFragments=[]);const t=this.markedFragments||[];this.markedFragments=[],t&&(t.map((t=>{if(t&&t.attributes.pointScale){let e=t.attributes.pointScale.array,i=t.attributes.uvp.array,n=t.attributes.color.array,s=t.attributes.id.array;for(let t=0;t{if(!t||!e||!n)throw new Error("Parameters of 'invalidateViewables' are mandatory");t instanceof Array||(t=[t]);const s=new Set(t),r=new Map;i.viewables.forEach((t=>r.set(t.dbId,t)));let o=!1;const a=e[0].geometry,h=a.attributes.id.array;for(let t=0;t2||l.scale<0){const t=`invalidateViewables: 'scale' of '${l.scale}' out of range [0, 2]`;console.warn(t)}const t=a.attributes.pointScale.array;a.attributes.pointScale.needsUpdate=!0,t[d]=l.scale,o=!0}}o&&this.viewer.impl.invalidate(!1,!1,!0)}}}o.call(a.prototype);var h=i(1048);class l{constructor(t=0,e=0,i=0,n=0,s=!1,r=void 0){this.oversized=!1,this._rot=!1,this._allowRotation=void 0,this._dirty=0,this._width=t,this._height=e,this._x=i,this._y=n,this._data={},this._rot=s,this._allowRotation=r}static Collide(t,e){return t.collide(e)}static Contain(t,e){return t.contain(e)}area(){return this.width*this.height}collide(t){return t.xthis.x&&t.ythis.y}contain(t){return t.x>=this.x&&t.y>=this.y&&t.x+t.width<=this.x+this.width&&t.y+t.height<=this.y+this.height}get width(){return this._width}set width(t){t!==this._width&&(this._width=t,this._dirty++)}get height(){return this._height}set height(t){t!==this._height&&(this._height=t,this._dirty++)}get x(){return this._x}set x(t){t!==this._x&&(this._x=t,this._dirty++)}get y(){return this._y}set y(t){t!==this._y&&(this._y=t,this._dirty++)}get rot(){return this._rot}set rot(t){if(!1!==this._allowRotation&&this._rot!==t){const e=this.width;this.width=this.height,this.height=e,this._rot=t,this._dirty++}}get allowRotation(){return this._allowRotation}set allowRotation(t){this._allowRotation!==t&&(this._allowRotation=t,this._dirty++)}get data(){return this._data}set data(t){null!==t&&t!==this._data&&(this._data=t,"object"==typeof t&&t.hasOwnProperty("allowRotation")&&(this._allowRotation=t.allowRotation),this._dirty++)}get dirty(){return this._dirty>0}setDirty(t=!0){this._dirty=t?this._dirty+1:0}}class d{constructor(){this._dirty=0}get dirty(){return this._dirty>0||this.rects.some((t=>t.dirty))}setDirty(t=!0){if(this._dirty=t?this._dirty+1:0,!t)for(let t of this.rects)t.setDirty&&t.setDirty(!1)}}class c extends d{constructor(t=p,e=p,i=0,n={}){super(),this.maxWidth=t,this.maxHeight=e,this.padding=i,this.freeRects=[],this.rects=[],this.verticalExpand=!1,this.options={smart:!0,pot:!0,square:!0,allowRotation:!1,tag:!1,exclusiveTag:!0,border:0,logic:f.MAX_EDGE},this.options=Object.assign(Object.assign({},this.options),n),this.width=this.options.smart?0:t,this.height=this.options.smart?0:e,this.border=this.options.border?this.options.border:0,this.freeRects.push(new l(this.maxWidth+this.padding-2*this.border,this.maxHeight+this.padding-2*this.border,this.border,this.border)),this.stage=new l(this.width,this.height)}add(...t){let e,i;if(1===t.length){if("object"!=typeof t[0])throw new Error("MacrectsBin.add(): Wrong parameters");i=t[0];let e=i.data&&i.data.tag?i.data.tag:i.tag?i.tag:void 0;if(this.options.tag&&this.options.exclusiveTag&&this.tag!==e)return}else{if(e=t.length>2?t[2]:null,this.options.tag&&this.options.exclusiveTag){if(e&&this.tag!==e.tag)return;if(!e&&this.tag)return}i=new l(t[0],t[1]),i.data=e,i.setDirty(!1)}const n=this.place(i);return n&&this.rects.push(n),n}repack(){let t=[];this.reset(),this.rects.sort(((t,e)=>{const i=Math.max(e.width,e.height)-Math.max(t.width,t.height);return 0===i&&t.hash&&e.hash?t.hash>e.hash?-1:1:i}));for(let e of this.rects)this.place(e)||t.push(e);for(let e of t)this.rects.splice(this.rects.indexOf(e),1);return t.length>0?t:void 0}reset(t=!1,e=!1){t&&(this.data&&delete this.data,this.tag&&delete this.tag,this.rects=[],e&&(this.options={smart:!0,pot:!0,square:!0,allowRotation:!1,tag:!1,border:0})),this.width=this.options.smart?0:this.maxWidth,this.height=this.options.smart?0:this.maxHeight,this.border=this.options.border?this.options.border:0,this.freeRects=[new l(this.maxWidth+this.padding-2*this.border,this.maxHeight+this.padding-2*this.border,this.border,this.border)],this.stage=new l(this.width,this.height),this._dirty=0}clone(){let t=new c(this.maxWidth,this.maxHeight,this.padding,this.options);for(let e of this.rects)t.add(e);return t}place(t){let e,i,n=t.data&&t.data.tag?t.data.tag:t.tag?t.tag:void 0;if(!this.options.tag||!this.options.exclusiveTag||this.tag===n){if(i=t.hasOwnProperty("_allowRotation")&&void 0!==t.allowRotation?t.allowRotation:this.options.allowRotation,e=this.findNode(t.width+this.padding,t.height+this.padding,i),e){this.updateBinSize(e);let i=this.freeRects.length,n=0;for(;nthis.height,t.x=e.x,t.y=e.y,void 0===t.rot&&(t.rot=!1),t.rot=e.rot?!t.rot:t.rot,this._dirty++,t}if(this.verticalExpand){if(this.updateBinSize(new l(t.width+this.padding,t.height+this.padding,this.border,this.height+this.padding-this.border))||this.updateBinSize(new l(t.width+this.padding,t.height+this.padding,this.width+this.padding-this.border,this.border)))return this.place(t)}else if(this.updateBinSize(new l(t.width+this.padding,t.height+this.padding,this.width+this.padding-this.border,this.border))||this.updateBinSize(new l(t.width+this.padding,t.height+this.padding,this.border,this.height+this.padding-this.border)))return this.place(t)}}findNode(t,e,i){let n,s,r,o=Number.MAX_VALUE;for(let a in this.freeRects)s=this.freeRects[a],s.width>=t&&s.height>=e&&(n=this.options.logic===f.MAX_AREA?s.width*s.height-t*e:Math.min(s.width-t,s.height-e),n=e&&s.height>=t&&(n=this.options.logic===f.MAX_AREA?s.width*s.height-e*t:Math.min(s.height-t,s.width-e),nt.x){if(e.y>t.y&&e.yt.y){if(e.x>t.x&&e.xthis.maxWidth+this.padding||i>this.maxHeight+this.padding)&&(this.expandFreeRects(e+this.padding,i+this.padding),this.width=this.stage.width=e,this.height=this.stage.height=i,!0)}expandFreeRects(t,e){this.freeRects.forEach(((i,n)=>{i.x+i.width>=Math.min(this.width+this.padding-this.border,t)&&(i.width=t-i.x-this.border),i.y+i.height>=Math.min(this.height+this.padding-this.border,e)&&(i.height=e-i.y-this.border)}),this),this.freeRects.push(new l(t-this.width-this.padding,e-2*this.border,this.width+this.padding-this.border,this.border)),this.freeRects.push(new l(t-2*this.border,e-this.height-this.padding,this.border,this.height+this.padding-this.border)),this.freeRects=this.freeRects.filter((t=>!(t.width<=0||t.height<=0||t.x2?t[2]:null;const e=new l(this.width,this.height);e.oversized=!0,e.data=this.data,this.rects.push(e)}this.freeRects=[],this.maxWidth=this.width,this.maxHeight=this.height,this.options={smart:!1,pot:!1,square:!1}}add(){}reset(t=!1){}repack(){}clone(){return new u(this.rects[0])}}const p=4096;var f;!function(t){t[t.MAX_AREA=0]="MAX_AREA",t[t.MAX_EDGE=1]="MAX_EDGE"}(f||(f={}));class g{constructor(t=p,e=p,i=0,n={}){this.width=t,this.height=e,this.padding=i,this.options={smart:!0,pot:!0,square:!1,allowRotation:!1,tag:!1,exclusiveTag:!0,border:0,logic:f.MAX_EDGE},this._currentBinIndex=0,this.bins=[],this.options=Object.assign(Object.assign({},this.options),n)}add(...t){if(1===t.length){if("object"!=typeof t[0])throw new Error("MacrectsPacker.add(): Wrong parameters");const e=t[0];if(e.width>this.width||e.height>this.height)this.bins.push(new u(e));else{if(!this.bins.slice(this._currentBinIndex).find((t=>void 0!==t.add(e)))){let t=new c(this.width,this.height,this.padding,this.options),i=e.data&&e.data.tag?e.data.tag:e.tag?e.tag:void 0;this.options.tag&&i&&(t.tag=i),t.add(e),this.bins.push(t)}}return e}{const e=new l(t[0],t[1]);if(t.length>2&&(e.data=t[2]),e.width>this.width||e.height>this.height)this.bins.push(new u(e));else{if(!this.bins.slice(this._currentBinIndex).find((t=>void 0!==t.add(e)))){let t=new c(this.width,this.height,this.padding,this.options);this.options.tag&&e.data.tag&&(t.tag=e.data.tag),t.add(e),this.bins.push(t)}}return e}}addArray(t){if(!this.options.tag||this.options.exclusiveTag)this.sort(t,this.options.logic).forEach((t=>this.add(t)));else{if(0===t.length)return;let e;t.sort(((t,e)=>{const i=t.data&&t.data.tag?t.data.tag:t.tag?t.tag:void 0,n=e.data&&e.data.tag?e.data.tag:e.tag?e.tag:void 0;return void 0===n?-1:void 0===i?1:n>i?-1:1}));let i=0;if(!this.bins.slice(this._currentBinIndex).find(((n,s)=>{let r=n.clone();for(let s=i;sn.add(t))),i=s,this.addArray(t.slice(s)),!0;if(void 0===a)return this.sort(t.slice(s),this.options.logic).forEach((t=>this.add(t))),i=t.length,!0;if(void 0===r.add(o))return this.sort(t.slice(i,s),this.options.logic).forEach((t=>n.add(t))),i=s,!1}return this.sort(t.slice(i),this.options.logic).forEach((t=>n.add(t))),!0}))){const e=t[i],n=new c(this.width,this.height,this.padding,this.options),s=e.data&&e.data.tag?e.data.tag:e.tag?e.tag:void 0;this.options.tag&&this.options.exclusiveTag&&s&&(n.tag=s),this.bins.push(n),n.add(e),i++,this.addArray(t.slice(i))}}}reset(){this.bins=[],this._currentBinIndex=0}repack(t=!0){if(t){let t=[];for(let e of this.bins)if(e.dirty){let i=e.repack();i&&t.push(...i)}return void this.addArray(t)}if(!this.dirty)return;const e=this.rects;this.reset(),this.addArray(e)}next(){return this._currentBinIndex=this.bins.length,this._currentBinIndex}load(t){t.forEach(((t,e)=>{if(t.maxWidth>this.width||t.maxHeight>this.height)this.bins.push(new u(t.width,t.height,{}));else{let i=new c(this.width,this.height,this.padding,t.options);i.freeRects.splice(0),t.freeRects.forEach(((t,e)=>{i.freeRects.push(new l(t.width,t.height,t.x,t.y))})),i.width=t.width,i.height=t.height,t.tag&&(i.tag=t.tag),this.bins[e]=i}}),this)}save(){let t=[];return this.bins.forEach((e=>{let i={width:e.width,height:e.height,maxWidth:e.maxWidth,maxHeight:e.maxHeight,freeRects:[],rects:[],options:e.options};e.tag&&(i=Object.assign(Object.assign({},i),{tag:e.tag})),e.freeRects.forEach((t=>{i.freeRects.push({x:t.x,y:t.y,width:t.width,height:t.height})})),t.push(i)})),t}sort(t,e=f.MAX_EDGE){return t.slice().sort(((t,i)=>{const n=e===f.MAX_EDGE?Math.max(i.width,i.height)-Math.max(t.width,t.height):i.width*i.height-t.width*t.height;return 0===n&&t.hash&&i.hash?t.hash>i.hash?-1:1:n}))}get currentBinIndex(){return this._currentBinIndex}get dirty(){return this.bins.some((t=>t.dirty))}get rects(){let t=[];for(let e of this.bins)t.push(...e.rects);return t}}var v=i(6533),m=i.n(v);const y=Autodesk.Viewing.Private;class w{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1920,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1080,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2;this.width=t,this.height=e,this.padding=i,this.spritesMap={},this.pending=[],this.images=[],this.logger=y.logger,this.packer=new g(this.width,this.height,this.padding,{smart:!0,pot:!1,square:!1,allowRotation:!1,tag:!1,border:0}),this.canvas=document.createElement("canvas"),this.hasContent=!1}addSprite(t){if(null==this.spritesMap[t]){let e=m().defer(),i=new Image;i.crossOrigin="anonymous",i.onload=()=>{this.images.push({url:t,image:i,width:i.width,height:i.height}),e.resolve()},i.onerror=t=>{this.logger.error(t),e.resolve()},i.src=t,this.spritesMap[t]=1,this.pending.push(e.promise)}}get canvasWidth(){return this.canvas.width}get canvasHeight(){return this.canvas.height}async finish(){await m().all(this.pending);let t=this.canvas;this.packer.addArray(this.images),this.images.length=0,this.packer.bins.forEach((e=>{t.width=e.width,t.height=e.height;let i=t.getContext("2d");e.rects.forEach((t=>{t.image&&(i.drawImage(t.image,t.x,t.y),t.image=void 0,this.spritesMap[t.url]=t,t.url=void 0)}))}))}spriteUV(t){let e=this.spritesMap[t];return e?{x:e.x/this.canvasWidth,y:e.y/this.canvasHeight,w:(e.x+e.width)/this.canvasWidth,h:(e.y+e.height)/this.canvasHeight}:{x:0,y:0,w:1,h:1}}}const _={SPRITE:1,GEOMETRY:2};class x{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_.SPRITE,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new THREE.Color(16777215),i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new THREE.Color(16777215),s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[];this.type=t,this.color=e,this.url=i,this.highlightedColor=n,this.highlightedUrl=s,this.spriteUrls=new Set(r)}get preloadedSprites(){return[...this.spriteUrls.values()]}preloadSprite(t){this.spriteUrls.add(t)}}class b{constructor(t,e,i){this._style=e,this._position=t,this._dbId=i}get style(){return this._style}get position(){return this._position}get dbId(){return this._dbId}}class E extends b{constructor(t,e,i){console.assert(e.type==_.SPRITE),super(t,e,i)}get type(){return _.SPRITE}get color(){return this.style.color}get highlightedColor(){return this.style.highlightedColor}}class T{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._styleMap=new Map,this._viewablesMap=new Map,this._spriteAtlas=new w(t.atlasWidth||1920,t.atlasHeight||1080,2)}get viewables(){return[...this._viewablesMap.values()]}get spriteAtlas(){return this._spriteAtlas}addViewable(t){if(t.type==_.SPRITE){let e=new Set;e.add(t.style.url),t.style.highlightedUrl&&e.add(t.style.highlightedUrl),t.style.preloadedSprites.forEach((t=>e.add(t))),e.forEach((t=>this.spriteAtlas.addSprite(t)))}this._viewablesMap.set(t.dbId,t)}getSpriteUV(t){return this._spriteAtlas.spriteUV(t)}getViewableUV(t,e){let i=this._viewablesMap.get(t).style;return e&&i.highlightedUrl?this._spriteAtlas.spriteUV(i.highlightedUrl):this._spriteAtlas.spriteUV(i.url)}getViewableColor(t,e){let i=this._viewablesMap.get(t).style;return e?i.highlightedColor:i.color}async finish(){await this._spriteAtlas.finish()}}var R=i(673);class S{constructor(t,e,i){this._id=t,this._name=e,this._bounds=i,this._devices=[]}set info(t){this._info=t}get id(){return this._id}get name(){return this._name}get bounds(){return this._bounds}get devices(){return this._devices}get info(){return this._info}addDevice(t){this._devices.push(t)}}class M{addRoomToLevel(t,e){this[t]||(this[t]=[]),this[t].push(e)}getRoomsOnLevel(t,e){const i=this[t]||[];return e?i.filter((t=>t.devices.length>0)):i}}class C extends THREE.ShaderMaterial{constructor(t,e,i,n){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;if(e.length<2||e.length!=i.length)throw new Error("Heatmap requires at least two colors to work");if(n<0)throw new Error("Heatmap 'confidence' must be a positive number");if(s<0)throw new Error("Heatmap 'powerParameter' must be a positive number");if(r<0||r>1)throw new Error("Heatmap 'alpha' must range between 0.0 and 1.0");const o={uPower:{type:"f",value:s},uAlpha:{type:"f",value:r},uConfidence:{type:"f",value:n},uSensors:{type:"v4v",value:t.map((t=>t))},uStops:{type:"fv1",value:i},uColors:{type:"v3v",value:e}},a=THREE.UniformsUtils.merge([Autodesk.Viewing.Private.ShaderChunks.CutPlanesUniforms,o]),h=e.length,l=t.length;super({uniforms:a,vertexShader:"\n varying vec4 worldCoord;\n\n #if NUM_CUTPLANES > 0\n varying highp vec3 vWorldPosition;\n #endif\n\n void main()\n {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n worldCoord = modelMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * mvPosition;\n #if NUM_CUTPLANES > 0\n vWorldPosition = worldCoord.xyz;\n #endif\n }\n ",fragmentShader:`\n varying vec4 worldCoord;\n uniform float uPower;\n uniform float uAlpha;\n uniform float uConfidence;\n uniform vec4 uSensors [${l}];\n uniform float uStops[${h}];\n uniform vec3 uColors[${h}];\n\n #if NUM_CUTPLANES > 0\n varying highp vec3 vWorldPosition;\n #endif\n\n #include \n\n const float dotSize = 6.0;\n const float h_var1 = 0.4;\n const float h_var2 = 0.25;\n const float two_pi = 2.0 * 3.1415927;\n \n float lmap(float value, float inMin, float inMax, float outMin, float outMax)\n {\n return clamp(outMin + ((outMax - outMin) * (value - inMin)) / (inMax - inMin), outMin, outMax);\n }\n\n // Gradient with multiple colors in non-equal intervals\n vec3 colormap(float x)\n {\n for (int i = 1; i < ${h}; i++) {\n if (x <= uStops[i]) {\n float stopPct = lmap(x, uStops[i-1], uStops[i], 0.0, 1.0);\n return mix(uColors[i-1], uColors[i], stopPct);\n }\n }\n \n // In case 'x' goes beyond upper bound.\n return uColors[${h} - 1];\n }\n\n vec2 get_pix(float angle) {\n float rad = radians(angle);\n float c = cos(rad);\n float s = sin(rad);\n mat2 R = mat2(vec2(c, -s), vec2(s, c));\n return R * gl_FragCoord.xy;\n }\n\n vec3 halftone(float tone, vec3 dotColor, vec3 backgroundColor) {\n vec2 u = get_pix(-45.0) / (dotSize);\n float h = (h_var1 + h_var2 * cos(u.x*two_pi));\n const float e = 0.05;\n float gradient = smoothstep(-e, e, h - tone);\n return mix(dotColor, backgroundColor, gradient);\n }\n\n void main(void) {\n vec3 fragPos = vec3(worldCoord.x, worldCoord.y, worldCoord.z);\n float result = 0.0;\n float sum = 0.0;\n float wsum = 0.000001;\n float minDist = 999999999.0;\n bool found = false; // at exact location of the sensor\n int validSensors = 0;\n\n for (int i=0; i < ${l}; i++) {\n float mydist = distance(fragPos, vec3(uSensors[i][0], uSensors[i][1], uSensors[i][2]));\n if (uSensors[i][3] >= 0.0) {\n if (mydist < 0.00001) {\n result = uSensors[i][3];\n found = true;\n } else {\n float w = (1.0 / (pow(mydist, uPower)));\n sum += (uSensors[i][3] * w);\n wsum += w;\n }\n validSensors += 1;\n if (mydist < minDist) {\n minDist = mydist;\n }\n }\n }\n\n if (validSensors == 0) {\n result = -1.0;\n } else if (!found) {\n result = sum / wsum;\n }\n\n // Defaults without influence from any sensor\n float confidence = 0.0;\n vec3 sensorColor = vec3(0.5, 0.5, 0.5);\n\n if (result >= 0.0) {\n result = clamp(result, 0.0, 1.0);\n confidence = 1.0 - clamp(minDist / uConfidence, 0.0, 1.0);\n sensorColor = colormap(result);\n }\n\n vec3 confidenceColor = halftone(clamp(confidence, 0.3, 0.9), vec3(0.7, 0.7, 0.7), vec3(1.0, 1.0, 1.0));\n gl_FragColor = vec4(mix(confidenceColor, sensorColor, clamp(confidence, 0.0, 1.0)), uAlpha);\n\n\n #if NUM_CUTPLANES > 0\n checkCutPlanes(vWorldPosition);\n #endif\n }\n `,side:THREE.DoubleSide,depthTest:!0,depthWrite:!1}),this.disableEnvMap=!0,this.type="HeatMapMaterial"}update(t,e,i,n){super.update(),isNaN(e)||null===e||(this.uniforms.uConfidence.value=e),isNaN(i)||null===i||(this.uniforms.uPower.value=i),isNaN(n)||null===n||(this.uniforms.uAlpha.value=n),t&&(this.uniforms.uSensors.value=t)}}function P(t){const e=[],i=1/(t-1);for(let n=0;n{t.geometry.dispose(),t.material.dispose(),t=null})),this._meshes=[],this.viewer.impl.invalidate(!1,!1,!0)}cleanUp(){this.removeShading(),this._clearActiveShadingPoints(),this.hatchMaterial&&(this.hatchMaterial.dispose(),delete this.hatchMaterial)}_clearActiveShadingPoints(){this.activeShadingPoints.forEach((t=>t.heatmapMaterial.dispose())),this.activeShadingPoints=[]}_createHatchMaterial(){let t=this.settings.hatchPattern;return new C([new THREE.Vector4(D,D,D,-1)],t.colors,t.stops,60,2,t.alpha)}registerSensorColors(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.7;this.settings[t]={stops:P(e.length),colors:e.map((t=>new THREE.Color(t))).map((t=>new THREE.Vector3(t.r,t.g,t.b))),alpha:i}}getSetting(t){return this.settings[t]?this.settings[t]:this.settings.__defaultSensor__}render(t,e,i,n){let s=n?n.confidence:0;s=isNaN(s)?0:Math.abs(s);let r=2;n&&"number"==typeof n.powerParameter&&(r=n.powerParameter);let o=[];t instanceof Array?t.forEach((t=>this.shadingData.getLeafsById(t,o))):o=this.shadingData.getLeafsById(t);let a=this.model.getInstanceTree();this._clearActiveShadingPoints();let h=this._meshes;const l=this.viewer.impl,d=this.activeShadingPoints;function c(t,e){let i=a.fragList.getGeometry(t);if(!i)return void I.logger.error("Geometry for the fragment is empty, FragId:",t);let n=new THREE.Mesh(i,e),s=new THREE.Matrix4;a.fragList.getWorldMatrix(t,s),n.matrix.copy(s),n.matrixWorldNeedsUpdate=!0,n.matrixAutoUpdate=!1,n.frustumCulled=!1,h.push(n),l.addOverlay(A,n)}l.overlayScenes[A]||l.createOverlayScene(A),this.hatchMaterial||(this.hatchMaterial=this._createHatchMaterial(),l.matman().addMaterial("heatmap_hatchMaterial",this.hatchMaterial,!0));const u=this.getSetting(e);for(let t=0;o&&t0){let o=s;if(n.bounds&&!s){const t=n.bounds.max,e=n.bounds.min;o=t.x-e.x+(t.y-e.y)+(t.z-e.z)}o=o||160;const h=[];a.forEach((t=>{const n=t.position,s=i(t,e),r=new THREE.Vector4(n.x,n.y,n.z,s);h.push(r)})),p=new C(h,u.colors,u.stops,o,r,u.alpha),l.matman().addMaterial("heatmap_Material_"+t,p,!0),d.push({shadingPoints:a,sensorType:e,heatmapMaterial:p})}n.fragIds.forEach((t=>c(t,p))),this._meshes=h}}updateShading(t,e){let i,n,s;e&&(i=e.confidence,n=e.powerParameter,s=e.alpha);for(var r=0;r3&&void 0!==arguments[3]?arguments[3]:{};n=this._handleLegacyOptions(n);const{width:s,height:r,minOpacity:o,maxOpacity:a}=n;this.options=n;let h=document.createElement("canvas");h.width=s,h.height=r,this.config={canvas:h,width:s,height:r,minOpacity:o,maxOpacity:a,radius:20},this.model=e,this.viewer=t,this.shadingData=i;let l=new THREE.Texture(h,THREE.UVMapping);l.minFilter=THREE.LinearFilter,l.flipY=!1,this.material=new THREE.MeshBasicMaterial({map:l,depthTest:!0,depthWrite:!1,transparent:!0,side:THREE.DoubleSide}),this.gradientMap={},this._mesh=null}_handleLegacyOptions(t){if("string"==typeof(t=Object.assign({width:1024,height:1024,slicingEnabled:!0},t)).position){const e={min:0,middle:.5,max:1};t.slicingPosition=e[t.position]}if("string"==typeof t.placePosition){const e={min:0,max:1};t.placementPosition=e[t.placePosition]}function e(t,e){return null==t||"number"!=typeof t?e:t<0?0:t>1?1:t}return delete t.position,delete t.placePosition,t.slicingPosition=e(t.slicingPosition,.5),t.placementPosition=e(t.placementPosition,0),t}_setup(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200,{model:n,shadingData:s}=this,r=new THREE.Box3,o=n.getInstanceTree(),a=[],h={},l=[],d={};this.gradientMap[e]&&(this.config.gradient=this.gradientMap[e]),this.config.radius=i,t.forEach((t=>s.getLeafsById(t,a)));for(let t=0;tt.types.find((t=>t==e))))||a[t].dbIds.forEach((t=>{if(o.getNodeBox(t,l),l[0]!=1/0){let e=new THREE.Box3(new THREE.Vector3(l[0],l[1],l[2]),new THREE.Vector3(l[3],l[4],l[5]));r.union(e),h[t]=e}}));var c;const u=r.min.x,p=r.min.y,f=r.max.x-u,g=r.max.y-p;let{slicingEnabled:v,width:m,height:y}=this.options;if(f>g?y=m/f*g:m=y/g*f,this.config.canvas.width=m,this.config.canvas.height=y,this.config.width=m,this.config.height=y,this.heatmapInstance)this.heatmapInstance.configure(this.config);else{let t=document.createElement("div");t.width=m,t.height=y,this.config.container=t,this.heatmapInstance=H().create(this.config),t.removeChild(this.config.canvas),delete this.config.container}let w=[],_=[],x=[];const b=Autodesk.Viewing.Extensions.CompGeom,E=this.options.slicingPosition,T=this.options.placementPosition;var S=n.getFragmentList();for(let t=0;t{const i=h[e],{min:n,max:s}=i,r=n.z+(s.z-n.z)*E,a=n.z+(s.z-n.z)*T,l=new THREE.Plane(t,-r);var d=b.makePlaneBasis(l);o.enumNodeFragments(e,(t=>{const e=S.getGeometry(t),i=S.getMaterial(t),n=new THREE.Matrix4;S.getWorldMatrix(t,n),e&&!e.is2d&&!e.isLines&&i.cutplanes&&b.xMeshPlane(l,{geometry:e,matrixWorld:n,fragId:t},M)}),!0);var c=new THREE.Box3;b.convertToPlaneCoords(d,M,c);var v=new b.EdgeSet(M,c,1e-6*c.getSize(new THREE.Vector3).length());v.snapEdges(),v.sanitizeEdges(),v.stitchContours();var m=v.triangulate();if(m&&!m.triangulationFailed){var y=m.toPolygonMesh();let t=w.length/3,e=y.attributes.position.array;for(let t=0,i=e.length;t{let e=h[t];if(!e.isEmpty()){const{min:t,max:i}=e,n=t.z+(i.z-t.z)*T;let s=w.length/3;x.push(s,s+2,s+1,s,s+3,s+2),w.push(t.x,t.y,n,t.x,i.y,n,i.x,i.y,n,i.x,t.y,n),_.push((t.x-u)/f,(t.y-p)/g,(t.x-u)/f,(i.y-p)/g,(i.x-u)/f,(i.y-p)/g,(i.x-u)/f,(t.y-p)/g)}}));for(let t of n){let e={x:Math.round((t.position.x-u)/f*m),y:Math.round((t.position.y-p)/g*y),value:0};d[t.id]={data:e,shadingPoint:t}}}}w=new Float32Array(w),_=new Float32Array(_),x=new Uint16Array(x);let C=new THREE.BufferGeometry,P=new THREE.BufferAttribute(w,3);P.bytesPerItem=4;let A=new THREE.BufferAttribute(_,2);A.bytesPerItem=4;let D=new THREE.BufferAttribute(x,1);C.setIndex(D),C.setAttribute("position",P),C.setAttribute("uv",A),this.geometry=C;let I=this.viewer.impl;I.overlayScenes[V]||I.createOverlayScene(V);let O=new THREE.Mesh(C,this.material);I.addOverlay(V,O),this.totalBounds=r,this.pointDataMap=d,this.currentSensorType=e,this._mesh=O}render(t,e,i,n){let s=200;"number"==typeof n?s=Math.abs(n):"object"==typeof n&&n.confidence&&(s=n.confidence),this.geometry&&(this.geometry.dispose(),this.geometry=null),t=t instanceof Array?t:[t],this._setup(t,e,s),this.updateShading(i)}updateShading(t){const e=[];for(let i in this.pointDataMap){const n=this.pointDataMap[i],s=t(n.shadingPoint,this.currentSensorType,n.data);n.data.value=0===s?1e-4:s,isNaN(n.data.value)||e.push(n.data)}this.heatmapInstance.setData({data:e,min:0,max:1}),this.material.map.needsUpdate=!0,this.viewer.impl.invalidate(!1,!1,!0)}cleanUp(){this.removeShading(),this.geometry&&(this.geometry.dispose(),this.geometry=null),this.material&&(this.material.dispose(),this.material=null)}removeShading(){this._mesh&&(this.viewer.impl.removeOverlay(V,this._mesh),this._mesh.geometry.dispose(),this._mesh.material.dispose(),this._mesh=null),this.viewer.impl.invalidate(!1,!1,!0)}registerSensorColors(t,e){let i={},n=e.length-1;for(let t=0;t>16&255}, ${s>>8&255}, ${255&s})`;var s;this.gradientMap[t]=i}}class j{constructor(t){this.viewer=t,this._textures={},this._colors={},this._excluded=["__defaultMaterial__","__fadeMaterial__","__highlightMaterial__","__dataVizSpriteMaterial__"]}show(){return this.hideTextures(),this.regen(),!0}hide(){return this.showTextures(),this.regen(),!0}regen(){this.viewer.refresh(!0)}hideTextures(){const t=0===Object.keys(this._textures).length,e=new THREE.Color(1,1,1),i=this.viewer.impl.matman()._materials;for(const n in i)if(-1===this._excluded.indexOf(n)){const s=i[n];t&&(this._textures[n]=s.map,this._colors[n]=s.color),s.map=null,s.color=e,s.needsUpdate=!0}this.regen()}showTextures(){if(Object.keys(this._textures).length>0){const t=this.viewer.impl.matman()._materials;for(const e in t)if(-1===this._excluded.indexOf(e)){const i=t[e],n=this._textures[e];n&&(i.map=n);const s=this._colors[e];s&&(i.color=s),i.needsUpdate=!0}}this.regen()}}class U extends THREE.ShaderMaterial{constructor(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;n=parseFloat(n).toFixed(3);super({uniforms:{dataTexture:{type:"t",value:null},vertexTexture:{type:"t",value:null},uPower:{type:"f",value:n},uDataCount:{type:"i",value:i},uDataTextureWidth:{type:"i",value:1}},vertexShader:"\n varying vec2 vUV;\n\n void main()\n {\n vUV = uv;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n }\n ",fragmentShader:"\n varying vec2 vUV;\n\n uniform float uPower;\n uniform int uDataCount;\n uniform int uDataTextureWidth;\n \n uniform sampler2D dataTexture;\n uniform sampler2D vertexTexture;\n \n void main(void) {\n // The position of the vertex whose value is to be determined.\n vec4 vertex = texture2D(vertexTexture, vUV);\n \n if (vertex.w < 0.) {\n // This is an invalid vertex, mark as transparent.\n gl_FragColor = vec4(0., 0., 0., 1.);\n return;\n }\n \n float sum = 0.;\n float wsum = 0.;\n float factor = 1. / float(uDataTextureWidth);\n float textureWidth = float(uDataTextureWidth);\n \n // Compute weighted influence from all the data points.\n for (int index = 0; index < uDataCount; index++)\n {\n float i = float(index);\n float y = floor(i / textureWidth);\n float x = mod(i, textureWidth);\n \n vec2 dUV = vec2((x + 0.5) * factor, (y + 0.5) * factor);\n vec4 dataPoint = texture2D(dataTexture, dUV);\n \n float dist = distance(vertex.xyz, dataPoint.xyz);\n \n if (dist < 0.0001) {\n gl_FragColor = vec4(dataPoint.w, 0., 0., 1.);\n return;\n }\n \n float w = 1. / dist;\n w = pow(w, uPower);\n \n sum += dataPoint.w * w;\n wsum += w;\n }\n \n gl_FragColor = vec4(sum/wsum , 0., 0., 1.);\n }\n ",side:THREE.DoubleSide,depthTest:!0,depthWrite:!0}),this.vertexTexture=t,this.dataTexture=e}set vertexTexture(t){t&&(this.uniforms.vertexTexture.value=t)}set dataTexture(t){t&&(this.uniforms.dataTexture.value=t,this.uniforms.uDataTextureWidth.value=t.image.width)}}function F(t,e,i,n,s){if(t=t.subarray||t.slice?t:t.buffer,i=i.subarray||i.slice?i:i.buffer,t=e?t.subarray?t.subarray(e,s&&e+s):t.slice(e,s&&e+s):t,i.set)i.set(t,n);else for(let e=0;e0){const{x:t,y:e,z:n}=this.copyV3(i);this._next.push(t,e,n),this._next.push(t,e,n)}}{const i=e?1:t-1,{x:n,y:s,z:r}=this.copyV3(i);this._next.push(n,s,r),this._next.push(n,s,r)}const s=new Float32Array(this._position),r=new Float32Array(this._prev),o=new Float32Array(this._next),a=new Float32Array(this._side),h=new Float32Array(this._width),l=new Uint16Array(this._index);this._attributes&&this._attributes.position.length===this._position.length?(this.updateAttribute(this._attributes.position,s),this.updateAttribute(this._attributes.prev,r),this.updateAttribute(this._attributes.next,o),this.updateAttribute(this._attributes.side,a),this.updateAttribute(this._attributes.width,h),this.updateAttribute(this._attributes.index,l)):this._attributes={position:new THREE.BufferAttribute(s,3),prev:new THREE.BufferAttribute(r,3),next:new THREE.BufferAttribute(o,3),side:new THREE.BufferAttribute(a,1),width:new THREE.BufferAttribute(h,1),index:new THREE.BufferAttribute(l,1)},this._geometry||(this._geometry=new THREE.BufferGeometry),this._geometry.setAttribute("position",this._attributes.position),this._geometry.setAttribute("prev",this._attributes.prev),this._geometry.setAttribute("next",this._attributes.next),this._geometry.setAttribute("side",this._attributes.side),this._geometry.setAttribute("width",this._attributes.width),this._geometry.setIndex(this._attributes.index),this._geometry.computeBoundingSphere(),this._geometry.computeBoundingBox(),this._geometry.visible=!0}advance(t){var e=this._attributes.position.array,i=this._attributes.prev.array,n=this._attributes.next.array,s=e.length;F(e,0,i,0,s),F(e,6,e,0,s-6),e[s-6]=t.x,e[s-5]=t.y,e[s-4]=t.z,e[s-3]=t.x,e[s-2]=t.y,e[s-1]=t.z,F(e,6,n,0,s-6),n[s-6]=t.x,n[s-5]=t.y,n[s-4]=t.z,n[s-3]=t.x,n[s-2]=t.y,n[s-1]=t.z,this._attributes.position.needsUpdate=!0,this._attributes.prev.needsUpdate=!0,this._attributes.next.needsUpdate=!0}}function N(t){function e(t,e){return void 0===t?e:t}THREE.Material.call(this),t=t||{},t=Object.assign(t,{side:THREE.DoubleSide,depthTest:!0,depthWrite:!1}),this.lineColor=e(t.lineColor,new THREE.Color(16777215)),this.opacity=e(t.opacity,1),this.lineWidth=e(t.lineWidth,6),delete t.lineColor,delete t.opacity,delete t.lineWidth;const i=new THREE.RawShaderMaterial({uniforms:{lineWidth:{type:"f",value:this.lineWidth},color:{type:"c",value:this.lineColor},opacity:{type:"f",value:this.opacity},resolution:{type:"v2",value:new THREE.Vector2(1920,1080)},sizeAttenuation:{type:"f",value:0}},attributes:{position:{type:"v3",value:new THREE.Vector3},prev:{type:"v3",value:new THREE.Vector3},next:{type:"v3",value:new THREE.Vector3},side:{type:"f",value:0},width:{type:"f",value:0}},vertexShader:"\n attribute vec3 position;\n attribute vec3 prev;\n attribute vec3 next;\n attribute float side;\n attribute float width;\n\n uniform mat4 projectionMatrix;\n uniform mat4 modelViewMatrix;\n uniform vec2 resolution;\n uniform float lineWidth;\n uniform vec3 color;\n uniform float opacity;\n uniform float sizeAttenuation;\n\n varying vec4 vColor;\n\n vec2 fix( vec4 i, float aspect ) {\n\n vec2 res = i.xy / i.w;\n res.x *= aspect;\n return res;\n }\n\n void main() {\n float aspect = resolution.x / resolution.y;\n\n vColor = vec4( color, opacity );\n\n mat4 m = projectionMatrix * modelViewMatrix;\n vec4 finalPosition = m * vec4( position, 1.0 );\n vec4 prevPos = m * vec4( prev, 1.0 );\n vec4 nextPos = m * vec4( next, 1.0 );\n\n vec2 currP = fix( finalPosition, aspect );\n vec2 prevP = fix( prevPos, aspect );\n vec2 nextP = fix( nextPos, aspect );\n\n float w = lineWidth * width;\n\n vec2 dir;\n if ( nextP == currP ) {\n dir = normalize( currP - prevP );\n }\n else if( prevP == currP ) {\n dir = normalize( nextP - currP );\n }\n else {\n vec2 dir1 = normalize( currP - prevP );\n vec2 dir2 = normalize( nextP - currP );\n dir = normalize( dir1 + dir2 );\n\n vec2 perp = vec2( -dir1.y, dir1.x );\n vec2 miter = vec2( -dir.y, dir.x );\n w = clamp( w / dot( miter, perp ), 0., 4. * lineWidth * width );\n }\n\n vec4 normal = vec4( -dir.y, dir.x, 0., 1. );\n normal.xy *= .5 * w;\n normal *= projectionMatrix;\n\n if ( sizeAttenuation == 0. ) {\n normal.xy *= finalPosition.w;\n normal.xy /= ( vec4( resolution, 0., 1. ) * projectionMatrix ).xy;\n }\n\n finalPosition.xy += normal.xy * side;\n gl_Position = finalPosition;\n }\n",fragmentShader:"\n varying vec4 vColor;\n\n void main() {\n gl_FragColor = vColor;\n }\n"});return i.type="StreamLineMaterial",i.setValues(t),i}N.prototype=Object.create(THREE.Material.prototype),N.prototype.constructor=N,N.prototype.copy=function(t){return THREE.Material.prototype.copy.call(this,t),this},N.prototype.id=function(){return N.generateId(this.lineColor,this.opacity,this.lineWidth)},N.generateId=function(t,e,i){return`${t.getHexString()}-${e.toFixed(4)}-${i.toFixed(4)}`};const z="StreamLineOverlay";class W{constructor(t){this._viewer=t,this._overlayCreated=!1,this._streamLines=[],this._cachedMaterials={}}dispose(){this._streamLines.forEach((t=>{let{streamLine:e,mesh:i}=t;this._removeMeshFromScene(i),e.dispose()})),this._streamLines=[];Object.values(this._cachedMaterials).forEach((t=>t.dispose())),this._cachedMaterials={},this._overlayCreated&&(this._overlayCreated=!1,this._viewer.impl.removeOverlayScene(z))}createStreamLine(t){const e=new L;e.setPoints(new Float32Array(t.lineData.points));const i=this._getOrCreateMaterial(t),n=new THREE.Mesh(e.geometry,i);return this._addMeshToScene(n),this._streamLines.push({streamLine:e,mesh:n}),e}destroyStreamLine(t){const e=this._streamLines.findIndex((e=>e.streamLine===t));if(e>=0){const t=this._streamLines.splice(e,1);this._removeMeshFromScene(t[0].mesh),t[0].streamLine.dispose()}}_addMeshToScene(t){this._overlayCreated||(this._overlayCreated=!0,this._viewer.impl.createOverlayScene(z)),this._viewer.impl.addOverlay(z,t)}_removeMeshFromScene(t){this._overlayCreated&&this._viewer.impl.removeOverlay(z,t)}_getOrCreateMaterial(t){const e=t.lineColor,i=t.opacity,n=t.lineWidth,s=N.generateId(e,i,n);let r=this._cachedMaterials[s];return r||(r=new N({lineColor:e,opacity:i,lineWidth:n}),this._cachedMaterials[s]=r),r}}const G="Autodesk.DataVisualization";var $=AutodeskNamespace(G+".Core");$=Object.assign($,t),$=Object.assign($,s()),($=Object.assign($,R)).Room=S,$.LevelRoomsMap=M,$.ModelStructureInfo=class{constructor(t){this.model=t,this.rooms=null}getImmediateChildNodesByName(t,e){const i=this.model.getInstanceTree(),n=[];return i&&(e=null==e?i.getRootId():e,i.enumNodeChildren(e,(e=>{const s=i.getNodeName(e,!0);s&&s.indexOf&&s.indexOf(t)>=0&&n.push(e)}),!1)),n}async getLevelRoomsMap(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1?arguments[1]:void 0;if(!this.levelRoomsMap){const i=new M;(await this.getRoomList(e)).forEach((e=>{const n=this.getLevel(e);t||(e.info=void 0),null!=n&&i.addRoomToLevel(n,e)})),this.levelRoomsMap=i}return this.levelRoomsMap}getLevel(t){if(t&&t.info&&t.info.properties){const e=t.info.properties.find((t=>20==t.type&&"Level"==t.attributeName));return e?e.displayValue:void 0}}async getRoomList(t){if(!this.rooms){t=t||"Rooms";const e=this.getImmediateChildNodesByName(t),i=this.model,n=[];if(e&&e.length>0){const t=e[0],s=i.getInstanceTree();s&&s.enumNodeChildren(t,(t=>{const e=s.getNodeName(t,!0),i=this.getRoomBounds(t);n.push(new S(t,e,i))}),!1)}const s=n.map((t=>new Promise(((e,n)=>{i.getProperties2(t.id,(i=>{t.info=i,e(t)}),(i=>{e(t)}))}))));await Promise.all(s),this.rooms=n}return this.rooms}getRoomBounds(t){const e=new THREE.Box3,i=new THREE.Box3,n=this.model.getInstanceTree(),s=this.model.getFragmentList();return n&&n.enumNodeFragments(t,(t=>{s.getWorldBounds(t,i),e.union(i)}),!0),e}async mapDevicesInRoom(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1?arguments[1]:void 0;const i=await this.getRoomList(e);t=t.slice(0);for(let e=0;t.length>0&&e0){const e=t.map((t=>`${t.id} (${t.name})`));console.warn(`Some devices did not map to a room: ${e.join(", ")}`)}}async generateSurfaceShadingData(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0;e||(e=await this.getLevelRoomsMap(!1,i),await this.mapDevicesInRoom(t,i));const n=new R.SurfaceShadingData;for(let t in e){const i=e[t],s=new R.SurfaceShadingGroup(t);i.forEach((t=>{const e=new R.SurfaceShadingNode(t.name,t.id);t.devices.forEach((t=>{let i=t.deviceModel?t.deviceModel.id:t.type;e.addPoint(new R.SurfaceShadingPoint(t.id,t.position,t.sensorTypes,t.name,{styleId:i}))})),s.addChild(e)})),n.addChild(s)}return n.initialize(this.model),n}roomGeomContainsPoint(t,e){return t.bounds&&t.bounds.containsPoint(e)}},$.SurfaceShading=O,$.PlanarHeatmap=B,$.IDWDataProcessor=class{constructor(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};this.viewer=t,this.min=n.min,this.max=n.max;let{colors:s}=n;s?this.setColors(s):this.setColors([255,65535,65280,16776960,16711680]),this.setVertices(e),this.setDataPoints(i),this.initializeRender()}setVertices(t){this.vertexTexture&&(this.vertexTexture.dispose(),this.vertexTexture=null);const e=Math.ceil(Math.sqrt(t.length/3)),i=new Float32Array(e*e*4);i.fill(-1);for(let e=0,n=t.length/3;enew THREE.Color(t))),this.stops=this._createColorStops(t.length),this.colorMapData=[];for(let t=0;t<256;t++)this.colorMapData.push(this._mapValueToColor(t/255))}}_createColorStops(t){const e=[],i=1/(t-1);for(let n=0;n0&&void 0!==arguments[0]?arguments[0]:{},{colors:e,power:i,outputTarget:n}=t;e&&this.setColors(e),null==i&&(i=1),this.material.uniforms.uPower.value=i;const s=this.vertexTexture.image.width;this.renderTarget.width!=s&&this.renderTarget.setSize(s,s);const r=this.viewer.impl.glrenderer();return r.setRenderTarget(this.renderTarget),r.render(this.scene,this.camera,!0),r.readRenderTargetPixels(this.renderTarget,0,0,s,s,this.vertexValues),this._getColorValues(n)}_getColorValues(t){let e;e=t&&t.length==this.verticesLength?t:new Uint8Array(this.verticesLength);const i=this.vertexValues;for(let t=0,n=this.verticesLength/3;t{this.vertexTexture&&(this.vertexTexture.dispose(),this.vertexTexture=null),this.dataTexture&&(this.dataTexture.dispose(),this.dataTexture=null),this.renderTarget&&(this.renderTarget.dispose(),this.renderTarget=null),this.material&&(this.material.dispose(),this.material=null),this.planeGeometry&&(this.planeGeometry.dispose(),this.planeGeometry=null)}),32)}},$.IDWProcessMaterial=U;const X=Autodesk.Viewing,q=X.Private,Q="DataVizDots";class Y extends X.Extension{constructor(t){super(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),this.textureUtility=new j(t),this.pointMeshes=[],this._streamLineBuilder=null,this._onInstanceTreeReady=this._onInstanceTreeReady.bind(this),this.model=null}async load(){return this.tool=new a(this.viewer,{delegate:this}),this.viewer.toolController.registerTool(this.tool),this.activate(),this.instanceTreeReadyPromise=new Promise(((t,e)=>{this.instanceTreeReadyPromiseResolve=t,this.instanceTreeReadyPromiseReject=e})),this.datavizDotOverlay=this.viewer.impl.createOverlayScene(Q,null,null,null,!0,!0),this.viewer.addEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT,this._onInstanceTreeReady),this.deviceDepthOcclusion=!1,this.surfaceShading={},!0}unload(){return this.viewer.toolController.deregisterTool(this.tool),this.viewer.removeEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT,this._onInstanceTreeReady),this.removeSurfaceShading(),this.surfaceShading=null,this.model=null,this.showTextures(),this.removeAllViewables(),this._streamLineBuilder&&(this._streamLineBuilder.dispose(),this._streamLineBuilder=null),this.deactivate(),!0}activate(){return this.viewer.toolController.activateTool(this.tool.getName()),!0}deactivate(){return this.viewer.toolController.deactivateTool(this.tool.getName()),!0}_onInstanceTreeReady(t){this.instanceTreeReadyPromiseResolve&&this.instanceTreeReadyPromiseResolve()}async waitForInstanceTree(t){t.getInstanceTree()?this.instanceTreeReadyPromiseResolve():await this.instanceTreeReadyPromise}get hasViewables(){return this.pointMeshes&&this.pointMeshes.length>0&&this.viewableData}get streamLineBuilder(){return this._streamLineBuilder||(this._streamLineBuilder=new W(this.viewer)),this._streamLineBuilder}mapDbIdsToGeometries(t){const e=this.dbId2Geometry||{};let i=new Set;return t.map((t=>{const n=e[t];n&&i.add(n)})),Array.from(i)}addViewables(t){const e=THREE.ImageUtils.loadTexture(t.spriteAtlas.canvas.toDataURL());e.minFilter=THREE.LinearFilter,e.maxFilter=THREE.LinearFilter,e.flipY=!1;const i=new THREE.PointCloudMaterial({size:t.spriteSize*this.getWindow().devicePixelRatio,map:e,vertexColors:THREE.VertexColors,alphaTest:.5,transparent:!0,occlusion:1,depthTest:!0,depthWrite:!0});function n(t,e){const i=t.impl.renderer().getDepthTarget();if(i){const t=new THREE.Vector2(1/i.width,1/i.height);e.uniforms=Object.assign(e.uniforms||{},{tDepthTest:{type:"t",value:i},tDepthResolution:{type:"v2",value:t}})}}i.skipMrtNormals=!0,n(this.viewer,i),i.defines=Object.assign(i.defines||{},{PARTICLE_FRAGMENT:1,USE_VERTEX_ID:1,DEPTH_OCCLUSION:this.deviceDepthOcclusion?1:0,PARTICLE_UV:1,PARTICLE_FLAGS:""});const s=this.viewer.impl;s.matman().addMaterial("__dataVizSpriteMaterial__",i,!0),this.pointMaterial=i,this.viewableData=t,this.dbId2Geometry={},this.viewer.addEventListener(X.VIEWER_RESIZE_EVENT,(()=>{n(this.viewer,i)}));const r=this;let o=new h.SpriteMeshBuilder((function(t){t.dbIds.forEach((e=>{r.dbId2Geometry[e]=t}));const e=new THREE.Mesh(t,i);s.addOverlay(Q,e),r.pointMeshes.push(e),setTimeout((()=>{s.invalidate(!1,!1,!0)}),16)}));t.viewables.map((e=>{e.position&&o.addPoint(e,t.spriteAtlas)})),o.flushBuffer()}removeAllViewables(){if(this.pointMeshes&&this.pointMeshes.length>0){let t=this.viewer.impl;this.pointMeshes.forEach((e=>{t.removeOverlay(Q,e),e.geometry.dispose(),e.material.dispose()})),t.invalidate(!1,!1,!0)}this.pointMeshes=[],delete this.dbId2Geometry,delete this.viewableData}changeOcclusion(t){if(this.deviceDepthOcclusion!=t){this.deviceDepthOcclusion=t;let e=t?1:0;this.pointMaterial&&this.pointMaterial.program&&(this.pointMaterial.defines.DEPTH_OCCLUSION=e,this.pointMaterial.needsUpdate=!0),this.viewer.impl.invalidate(!1,!1,!0)}}showHideViewables(t,e){this.changeOcclusion(e),this.pointMaterial&&(this.pointMaterial.visible=t,this.pointMaterial.needsUpdate=!0),this.viewer.impl.invalidate(!1,!1,!0)}highlightViewables(t){this.tool&&this.tool.markObject(t)}clearHighlightedViewables(){this.tool&&this.tool.clearMarkedObject()}invalidateViewables(t,e){!t||t.length<=0?console.warn("All parameters of 'invalidateViewables' are mandatory"):!this.pointMeshes||this.pointMeshes.length<=0||!this.viewableData?console.warn("'addViewables' must be called before 'invalidateViewables'"):this.tool&&this.tool.invalidateViewablesDirect(t,this.pointMeshes,this.viewableData,e)}showTextures(){this.textureUtility.showTextures()}hideTextures(){this.textureUtility.hideTextures()}async setupSurfaceShading(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return await this.waitForInstanceTree(t),(async()=>{Object.keys(this.surfaceShading).length&&Object.prototype.hasOwnProperty.call(this.surfaceShading,t.id)&&this.surfaceShading[t.id].cleanUp(),this.model=t,"PlanarHeatmap"==i.type?(await this.viewer.loadExtension("Autodesk.CompGeom"),this.surfaceShading[t.id]=new B(this.viewer,t,e,i)):this.surfaceShading[t.id]=new O(this.viewer,t,e)})()}renderSurfaceShading(t,e,i){let n,s,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};"number"==typeof r?n={confidence:Math.abs(r)}:(n=r.heatmapConfig,s=r.model),null==n&&(n={confidence:160}),null==s&&(s=this.model),s&&this.surfaceShading[s.id]?this.surfaceShading[s.id].render(t,e,i,n):q.logger.error("Please call setupSurfaceShading first")}updateSurfaceShading(t){let e,i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!Object.keys(n).length||Object.prototype.hasOwnProperty.call(n,"heatmapConfig")||Object.prototype.hasOwnProperty.call(n,"model")?(e=n.heatmapConfig,i=n.model):e=n,null==i&&(i=this.model),i&&Object.prototype.hasOwnProperty.call(this.surfaceShading,i.id)?this.surfaceShading[i.id].updateShading(t,e):q.logger.error("Please call setupSurfaceShading for the model first")}registerSurfaceShadingColors(t,e){let i,n,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};"number"==typeof s?i=s:(i=s.alpha,n=s.model),null==i&&(i=.7),null==n&&(n=this.model),n&&Object.prototype.hasOwnProperty.call(this.surfaceShading,n.id)?this.surfaceShading[n.id].registerSensorColors(t,e,i):q.logger.error("Please call setupSurfaceShading for the model first")}removeSurfaceShading(t){Object.keys(this.surfaceShading).length&&(null==t&&(t=this.model),Object.prototype.hasOwnProperty.call(this.surfaceShading,t.id)&&this.surfaceShading[t.id].removeShading())}}X.theExtensionManager.registerExtension(G,Y)})(),Autodesk.Extensions.DataVisualization=n})(); +//# sourceMappingURL=DataVisualization.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/DocumentBrowser/DocumentBrowser.min.js b/public/autodesk/extensions/DocumentBrowser/DocumentBrowser.min.js new file mode 100644 index 0000000..dd49327 --- /dev/null +++ b/public/autodesk/extensions/DocumentBrowser/DocumentBrowser.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={9995:(e,t,i)=>{"use strict";i.d(t,{A:()=>a});var r=i(1354),n=i.n(r),o=i(6314),s=i.n(o)()(n());s.push([e.id,'.adsk-viewing-viewer leaf>lmvheader>geom_icon,.adsk-viewing-viewer group>lmvheader>geom_icon{display:inline-block;background-repeat:no-repeat;width:24px;height:24px;padding-left:5px;transform:translateY(6px)}.adsk-viewing-viewer .viewer-document-browser .settings-tabs ul li,.adsk-viewing-viewer .viewer-document-browser .settings-tabs ul li a{width:50%}.adsk-viewing-viewer.dark-theme leaf.geometry_3d>lmvheader>geom_icon,.adsk-viewing-viewer.dark-theme group.geometry_3d>lmvheader>geom_icon{background-image:url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg width%3D%2224px%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 version%3D%221.1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E %3C!-- Generator%3A Sketch 43.1 (39012) - http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch --%3E %3Ctitle%3Eicon-view-3d%3C%2Ftitle%3E %3Cdesc%3ECreated with Sketch.%3C%2Fdesc%3E %3Cdefs%3E%3C%2Fdefs%3E %3Cg id%3D%22Symbols%22 stroke%3D%22none%22 stroke-width%3D%221%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22evenodd%22%3E %3Cg id%3D%22icon-view-3d%22%3E %3Cg id%3D%22guide%22 opacity%3D%220%22 fill%3D%22%23FF9898%22%3E %3Crect id%3D%22Rectangle-4%22 x%3D%220%22 y%3D%220%22 width%3D%2224%22 height%3D%2224%22%3E%3C%2Frect%3E %3C%2Fg%3E %3Cpath d%3D%22M12.5%2C5 L6.00480947%2C8.75 L6.00480947%2C16.25 L12.5%2C20 L18.9951905%2C16.25 L18.9951905%2C8.75 L12.5%2C5 Z M12.5%2C3.84529946 L19.9951905%2C8.17264973 L19.9951905%2C16.8273503 L12.5%2C21.1547005 L5.00480947%2C16.8273503 L5.00480947%2C8.17264973 L12.5%2C3.84529946 Z%22 id%3D%22Polygon%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22nonzero%22%3E%3C%2Fpath%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22nonzero%22 points%3D%2212 12 12 20.0588235 13 20.0588235 13 12%22%3E%3C%2Fpolygon%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22nonzero%22 points%3D%225.64133837 9.15664034 12.6860521 13.182191 13.182191 12.3139479 6.13747731 8.2883972%22%3E%3C%2Fpolygon%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22nonzero%22 points%3D%2218.8625227 8.2883972 11.817809 12.3139479 12.3139479 13.182191 19.3586616 9.15664034%22%3E%3C%2Fpolygon%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.dark-theme leaf.geometry_2d>lmvheader>geom_icon,.adsk-viewing-viewer.dark-theme group.geometry_2d>lmvheader>geom_icon{background-image:url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg width%3D%2224px%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 version%3D%221.1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E %3C!-- Generator%3A Sketch 43.2 (39069) - http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch --%3E %3Ctitle%3Eicon-view-2d%3C%2Ftitle%3E %3Cdesc%3ECreated with Sketch.%3C%2Fdesc%3E %3Cdefs%3E%3C%2Fdefs%3E %3Cg id%3D%22Symbols%22 stroke%3D%22none%22 stroke-width%3D%221%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22evenodd%22%3E %3Cg id%3D%22icon-view-2d%22%3E %3Cg id%3D%22guide%22 opacity%3D%220%22 fill%3D%22%23FF9898%22%3E %3Crect id%3D%22Rectangle-4%22 x%3D%220%22 y%3D%220%22 width%3D%2224%22 height%3D%2224%22%3E%3C%2Frect%3E %3C%2Fg%3E %3Cpath d%3D%22M13%2C15 L13%2C12 L16%2C12 L16%2C11 L17%2C11 L17%2C12.5 L17%2C16 L13.5%2C16 L12%2C16 L12%2C15 L13%2C15 Z%22 id%3D%22Combined-Shape%22 fill%3D%22%23C4C4C4%22%3E%3C%2Fpath%3E %3Crect id%3D%22Rectangle-10-Copy-22%22 fill%3D%22%23C4C4C4%22 x%3D%2216%22 y%3D%228%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Cpath d%3D%22M4%2C16 L4%2C18 L20%2C18 L20%2C6 L17%2C6 L17%2C7 L16%2C7 L16%2C6 L4%2C6 L4%2C15 L5%2C15 L5%2C16 L4%2C16 Z M20.5%2C5 L21%2C5 L21%2C19 L20.5%2C19 L3%2C19 L3%2C18.5 L3%2C5.5 L3%2C5 L20.5%2C5 Z%22 id%3D%22Combined-Shape%22 fill%3D%22%23C4C4C4%22%3E%3C%2Fpath%3E %3Crect id%3D%22Rectangle-10-Copy-26%22 fill%3D%22%23C4C4C4%22 x%3D%2216%22 y%3D%2214%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-27%22 fill%3D%22%23C4C4C4%22 transform%3D%22translate(7.000000%2C 15.500000) rotate(-270.000000) translate(-7.000000%2C -15.500000) %22 x%3D%226.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-28%22 fill%3D%22%23C4C4C4%22 transform%3D%22translate(10.000000%2C 15.500000) rotate(-270.000000) translate(-10.000000%2C -15.500000) %22 x%3D%229.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-30%22 fill%3D%22%23C4C4C4%22 transform%3D%22translate(16.000000%2C 15.500000) rotate(-270.000000) translate(-16.000000%2C -15.500000) %22 x%3D%2215.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.dark-theme .mb-ext-tab-bar{background-color:rgba(34,34,34,.9);text-align:center}.adsk-viewing-viewer.dark-theme .mb-ext-tab-bar-btn{width:40%;height:60%;margin:auto}.adsk-viewing-viewer.light-theme leaf.geometry_3d>lmvheader>geom_icon,.adsk-viewing-viewer.light-theme group.geometry_3d>lmvheader>geom_icon{background-image:url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg width%3D%2224px%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 version%3D%221.1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E %3C!-- Generator%3A Sketch 43.1 (39012) - http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch --%3E %3Ctitle%3Eicon-view-3d%3C%2Ftitle%3E %3Cdesc%3ECreated with Sketch.%3C%2Fdesc%3E %3Cdefs%3E%3C%2Fdefs%3E %3Cg id%3D%22Symbols%22 stroke%3D%22none%22 stroke-width%3D%221%22 fill%3D%22%23858585%22 fill-rule%3D%22evenodd%22%3E %3Cg id%3D%22icon-view-3d%22%3E %3Cg id%3D%22guide%22 opacity%3D%220%22 fill%3D%22%23FF9898%22%3E %3Crect id%3D%22Rectangle-4%22 x%3D%220%22 y%3D%220%22 width%3D%2224%22 height%3D%2224%22%3E%3C%2Frect%3E %3C%2Fg%3E %3Cpath d%3D%22M12.5%2C5 L6.00480947%2C8.75 L6.00480947%2C16.25 L12.5%2C20 L18.9951905%2C16.25 L18.9951905%2C8.75 L12.5%2C5 Z M12.5%2C3.84529946 L19.9951905%2C8.17264973 L19.9951905%2C16.8273503 L12.5%2C21.1547005 L5.00480947%2C16.8273503 L5.00480947%2C8.17264973 L12.5%2C3.84529946 Z%22 id%3D%22Polygon%22 fill%3D%22%23858585%22 fill-rule%3D%22nonzero%22%3E%3C%2Fpath%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23858585%22 fill-rule%3D%22nonzero%22 points%3D%2212 12 12 20.0588235 13 20.0588235 13 12%22%3E%3C%2Fpolygon%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23858585%22 fill-rule%3D%22nonzero%22 points%3D%225.64133837 9.15664034 12.6860521 13.182191 13.182191 12.3139479 6.13747731 8.2883972%22%3E%3C%2Fpolygon%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23858585%22 fill-rule%3D%22nonzero%22 points%3D%2218.8625227 8.2883972 11.817809 12.3139479 12.3139479 13.182191 19.3586616 9.15664034%22%3E%3C%2Fpolygon%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.light-theme leaf.geometry_2d>lmvheader>geom_icon,.adsk-viewing-viewer.light-theme group.geometry_2d>lmvheader>geom_icon{background-image:url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg width%3D%2224px%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 version%3D%221.1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E %3C!-- Generator%3A Sketch 43.2 (39069) - http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch --%3E %3Ctitle%3Eicon-view-2d%3C%2Ftitle%3E %3Cdesc%3ECreated with Sketch.%3C%2Fdesc%3E %3Cdefs%3E%3C%2Fdefs%3E %3Cg id%3D%22Symbols%22 stroke%3D%22none%22 stroke-width%3D%221%22 fill%3D%22%23858585%22 fill-rule%3D%22evenodd%22%3E %3Cg id%3D%22icon-view-2d%22%3E %3Cg id%3D%22guide%22 opacity%3D%220%22 fill%3D%22%23FF9898%22%3E %3Crect id%3D%22Rectangle-4%22 x%3D%220%22 y%3D%220%22 width%3D%2224%22 height%3D%2224%22%3E%3C%2Frect%3E %3C%2Fg%3E %3Cpath d%3D%22M13%2C15 L13%2C12 L16%2C12 L16%2C11 L17%2C11 L17%2C12.5 L17%2C16 L13.5%2C16 L12%2C16 L12%2C15 L13%2C15 Z%22 id%3D%22Combined-Shape%22 fill%3D%22%23858585%22%3E%3C%2Fpath%3E %3Crect id%3D%22Rectangle-10-Copy-22%22 fill%3D%22%23858585%22 x%3D%2216%22 y%3D%228%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Cpath d%3D%22M4%2C16 L4%2C18 L20%2C18 L20%2C6 L17%2C6 L17%2C7 L16%2C7 L16%2C6 L4%2C6 L4%2C15 L5%2C15 L5%2C16 L4%2C16 Z M20.5%2C5 L21%2C5 L21%2C19 L20.5%2C19 L3%2C19 L3%2C18.5 L3%2C5.5 L3%2C5 L20.5%2C5 Z%22 id%3D%22Combined-Shape%22 fill%3D%22%23858585%22%3E%3C%2Fpath%3E %3Crect id%3D%22Rectangle-10-Copy-26%22 fill%3D%22%23858585%22 x%3D%2216%22 y%3D%2214%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-27%22 fill%3D%22%23858585%22 transform%3D%22translate(7.000000%2C 15.500000) rotate(-270.000000) translate(-7.000000%2C -15.500000) %22 x%3D%226.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-28%22 fill%3D%22%23858585%22 transform%3D%22translate(10.000000%2C 15.500000) rotate(-270.000000) translate(-10.000000%2C -15.500000) %22 x%3D%229.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-30%22 fill%3D%22%23858585%22 transform%3D%22translate(16.000000%2C 15.500000) rotate(-270.000000) translate(-16.000000%2C -15.500000) %22 x%3D%2215.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}',"",{version:3,sources:["webpack://./extensions/DocumentBrowser/Panel.css"],names:[],mappings:"AAAA,6FAA6F,oBAAoB,CAAC,2BAA2B,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,wIAAwI,SAAS,CAAC,2IAA2I,22DAA+C,CAAC,2IAA2I,y8EAA+C,CAAC,gDAAgD,kCAAkC,CAAC,iBAAiB,CAAC,oDAAoD,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,6IAA6I,22DAAgD,CAAC,6IAA6I,y8EAAgD",sourcesContent:[".adsk-viewing-viewer leaf>lmvheader>geom_icon,.adsk-viewing-viewer group>lmvheader>geom_icon{display:inline-block;background-repeat:no-repeat;width:24px;height:24px;padding-left:5px;transform:translateY(6px)}.adsk-viewing-viewer .viewer-document-browser .settings-tabs ul li,.adsk-viewing-viewer .viewer-document-browser .settings-tabs ul li a{width:50%}.adsk-viewing-viewer.dark-theme leaf.geometry_3d>lmvheader>geom_icon,.adsk-viewing-viewer.dark-theme group.geometry_3d>lmvheader>geom_icon{background-image:url(res/icon-view-3d-dark.svg)}.adsk-viewing-viewer.dark-theme leaf.geometry_2d>lmvheader>geom_icon,.adsk-viewing-viewer.dark-theme group.geometry_2d>lmvheader>geom_icon{background-image:url(res/icon-view-2d-dark.svg)}.adsk-viewing-viewer.dark-theme .mb-ext-tab-bar{background-color:rgba(34,34,34,.9);text-align:center}.adsk-viewing-viewer.dark-theme .mb-ext-tab-bar-btn{width:40%;height:60%;margin:auto}.adsk-viewing-viewer.light-theme leaf.geometry_3d>lmvheader>geom_icon,.adsk-viewing-viewer.light-theme group.geometry_3d>lmvheader>geom_icon{background-image:url(res/icon-view-3d-light.svg)}.adsk-viewing-viewer.light-theme leaf.geometry_2d>lmvheader>geom_icon,.adsk-viewing-viewer.light-theme group.geometry_2d>lmvheader>geom_icon{background-image:url(res/icon-view-2d-light.svg)}"],sourceRoot:""}]);const a=s},197:(e,t,i)=>{"use strict";i.d(t,{A:()=>a});var r=i(1354),n=i.n(r),o=i(6314),s=i.n(o)()(n());s.push([e.id,".viewer-ext-docbrowser-thumbnail{border:1px solid #000;background-color:#e8e8e8;margin:6px auto;cursor:pointer}.viewer-ext-docbrowser-thumbnail-selected{border:solid 3px #1dc7f3;border-radius:4px}.viewer-ext-docbrowser-thumbnail-selected>div{background-color:#1dc7f3;color:#000}.viewer-ext-docbrowser-thumbnail:hover>div{opacity:0}.viewer-ext-docbrowser-thumbnail-spinner{animation:loading-spinner-perpetual-motion 1s infinite linear;margin:65px auto;width:60px}.viewer-ext-docbrowser-thumbnail-label{background:#c7c7d4;color:#0a131c;position:relative;transform:translate(0, -100%);bottom:5px}.viewer-ext-docbrowser-thumbnail-failed{background:#c5c2c2}","",{version:3,sources:["webpack://./extensions/DocumentBrowser/ThumbnailList.css"],names:[],mappings:"AAAA,iCAAiC,qBAAqB,CAAC,wBAAwB,CAAC,eAAe,CAAC,cAAc,CAAC,0CAA0C,wBAAwB,CAAC,iBAAiB,CAAC,8CAA8C,wBAAwB,CAAC,UAAU,CAAC,2CAA2C,SAAS,CAAC,yCAAyC,6DAA6D,CAAC,gBAAgB,CAAC,UAAU,CAAC,uCAAuC,kBAAkB,CAAC,aAAa,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,UAAU,CAAC,wCAAwC,kBAAkB",sourcesContent:[".viewer-ext-docbrowser-thumbnail{border:1px solid #000;background-color:#e8e8e8;margin:6px auto;cursor:pointer}.viewer-ext-docbrowser-thumbnail-selected{border:solid 3px #1dc7f3;border-radius:4px}.viewer-ext-docbrowser-thumbnail-selected>div{background-color:#1dc7f3;color:#000}.viewer-ext-docbrowser-thumbnail:hover>div{opacity:0}.viewer-ext-docbrowser-thumbnail-spinner{animation:loading-spinner-perpetual-motion 1s infinite linear;margin:65px auto;width:60px}.viewer-ext-docbrowser-thumbnail-label{background:#c7c7d4;color:#0a131c;position:relative;transform:translate(0, -100%);bottom:5px}.viewer-ext-docbrowser-thumbnail-failed{background:#c5c2c2}"],sourceRoot:""}]);const a=s},9583:(e,t,i)=>{"use strict";i.d(t,{A:()=>a});var r=i(1354),n=i.n(r),o=i(6314),s=i.n(o)()(n());s.push([e.id,'.adsk-viewing-viewer .adsk-icon-documentModels{background-repeat:no-repeat !important;background-size:80% !important;margin-left:4px;margin-top:3px}.adsk-viewing-viewer.dark-theme .adsk-icon-documentModels{background:url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E %3Ctitle%3Efolder-16%3C%2Ftitle%3E %3Cg id%3D%22assets%22%3E %3Cg id%3D%22Layer_201%22 data-name%3D%22Layer%25201%22%3E %3Cpath fill%3D%22%23F4F4F4%22 d%3D%22M0%2C2.5V4H6.34l1-1-1-1H.5A.5.5%2C0%2C0%2C0%2C0%2C2.5ZM0%2C5v8a1%2C1%2C0%2C0%2C0%2C1%2C1H14a1%2C1%2C0%2C0%2C0%2C1-1V4a1%2C1%2C0%2C0%2C0-1-1H9L7%2C5Z%22%2F%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.dark-theme .adsk-icon-documentModels:hover,.adsk-viewing-viewer.dark-theme .active .adsk-icon-documentModels{background:url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E %3Ctitle%3Efolder-16%3C%2Ftitle%3E %3Cg id%3D%22assets%22%3E %3Cg id%3D%22Layer_201%22 data-name%3D%22Layer%25201%22%3E %3Cpath fill%3D%22%2300BFFF%22 d%3D%22M0%2C2.5V4H6.34l1-1-1-1H.5A.5.5%2C0%2C0%2C0%2C0%2C2.5ZM0%2C5v8a1%2C1%2C0%2C0%2C0%2C1%2C1H14a1%2C1%2C0%2C0%2C0%2C1-1V4a1%2C1%2C0%2C0%2C0-1-1H9L7%2C5Z%22%2F%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.light-theme .adsk-icon-documentModels{background:url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E %3Ctitle%3Efolder-16%3C%2Ftitle%3E %3Cg id%3D%22assets%22%3E %3Cg id%3D%22Layer_201%22 data-name%3D%22Layer%25201%22%3E %3Cpath fill%3D%22black%22 d%3D%22M0%2C2.5V4H6.34l1-1-1-1H.5A.5.5%2C0%2C0%2C0%2C0%2C2.5ZM0%2C5v8a1%2C1%2C0%2C0%2C0%2C1%2C1H14a1%2C1%2C0%2C0%2C0%2C1-1V4a1%2C1%2C0%2C0%2C0-1-1H9L7%2C5Z%22%2F%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.light-theme .adsk-icon-documentModels:hover,.adsk-viewing-viewer.light-theme .active .adsk-icon-documentModels{background:url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E %3Ctitle%3Efolder-16%3C%2Ftitle%3E %3Cg id%3D%22assets%22%3E %3Cg id%3D%22Layer_201%22 data-name%3D%22Layer%25201%22%3E %3Cpath fill%3D%22%2300BFFF%22 d%3D%22M0%2C2.5V4H6.34l1-1-1-1H.5A.5.5%2C0%2C0%2C0%2C0%2C2.5ZM0%2C5v8a1%2C1%2C0%2C0%2C0%2C1%2C1H14a1%2C1%2C0%2C0%2C0%2C1-1V4a1%2C1%2C0%2C0%2C0-1-1H9L7%2C5Z%22%2F%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}',"",{version:3,sources:["webpack://./extensions/DocumentBrowser/uiController.css"],names:[],mappings:"AAAA,+CAA+C,sCAAsC,CAAC,8BAA8B,CAAC,eAAe,CAAC,cAAc,CAAC,0DAA0D,0gBAAsC,CAAC,kIAAkI,0gBAAwC,CAAC,2DAA2D,sgBAAuC,CAAC,oIAAoI,0gBAAwC",sourcesContent:[".adsk-viewing-viewer .adsk-icon-documentModels{background-repeat:no-repeat !important;background-size:80% !important;margin-left:4px;margin-top:3px}.adsk-viewing-viewer.dark-theme .adsk-icon-documentModels{background:url(res/folder-16-dark.svg)}.adsk-viewing-viewer.dark-theme .adsk-icon-documentModels:hover,.adsk-viewing-viewer.dark-theme .active .adsk-icon-documentModels{background:url(res/folder-16-active.svg)}.adsk-viewing-viewer.light-theme .adsk-icon-documentModels{background:url(res/folder-16-light.svg)}.adsk-viewing-viewer.light-theme .adsk-icon-documentModels:hover,.adsk-viewing-viewer.light-theme .active .adsk-icon-documentModels{background:url(res/folder-16-active.svg)}"],sourceRoot:""}]);const a=s},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i="",r=void 0!==t[5];return t[4]&&(i+="@supports (".concat(t[4],") {")),t[2]&&(i+="@media ".concat(t[2]," {")),r&&(i+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),i+=e(t),r&&(i+="}"),t[2]&&(i+="}"),t[4]&&(i+="}"),i})).join("")},t.i=function(e,i,r,n,o){"string"==typeof e&&(e=[[null,e,void 0]]);var s={};if(r)for(var a=0;a0?" ".concat(h[5]):""," {").concat(h[1],"}")),h[5]=o),i&&(h[2]?(h[1]="@media ".concat(h[2]," {").concat(h[1],"}"),h[2]=i):h[2]=i),n&&(h[4]?(h[1]="@supports (".concat(h[4],") {").concat(h[1],"}"),h[4]=n):h[4]="".concat(n)),t.push(h))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],i=e[3];if(!i)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),n="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),o="/*# ".concat(n," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},5072:e=>{"use strict";var t=[];function i(e){for(var i=-1,r=0;r{"use strict";var t={};e.exports=function(e,i){var r=function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}t[e]=i}return t[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(i)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,i)=>{"use strict";e.exports=function(e){var t=i.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(i){!function(e,t,i){var r="";i.supports&&(r+="@supports (".concat(i.supports,") {")),i.media&&(r+="@media ".concat(i.media," {"));var n=void 0!==i.layer;n&&(r+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),r+=i.css,n&&(r+="}"),i.media&&(r+="}"),i.supports&&(r+="}");var o=i.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,i)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function i(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={id:r,exports:{}};return e[r](o,o.exports,i),o.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var r={};(()=>{"use strict";i.r(r),i.d(r,{DocumentBrowser:()=>P});var e=i(5072),t=i.n(e),n=i(7825),o=i.n(n),s=i(7659),a=i.n(s),l=i(5056),d=i.n(l),h=i(540),c=i.n(h),C=i(1113),g=i.n(C),u=i(9995),m={};m.styleTagTransform=g(),m.setAttributes=d(),m.insert=a().bind(null,"head"),m.domAPI=o(),m.insertStyleElement=c();t()(u.A,m);u.A&&u.A.locals&&u.A.locals;const v="leaf",p="group";function w(e,t){var i=function(e){var t={};return e.traverse((e=>{if(e.isGeometry()&&(e.is2D()||e.is3D())&&A(t,e),e.isViewPreset()){let i=e.parent.search({type:"view"});if(i.length>1)return void A(t,e);if(1===i.length){if(i[0].is2D())return;e.name()===i[0].name()||A(t,e)}}})),t}(e),r=new Autodesk.Viewing.UI.TreeDelegate;return r.setGlobalManager(t.globalManager),r.getTreeNodeId=function(e){return e.guid()},r.getTreeNodeLabel=function(e){return e.name()||e._raw().type},r.getTreeNodeClass=function(e){return e.isGeometry()?e._raw().type+"_"+e._raw().role:e._raw().type},r.isTreeNodeGroup=function(e){let t=e.guid();return i[t]===p},r.shouldCreateTreeNode=function(e){let t=e.guid();return!!i[t]},r.onTreeNodeClick=(e,i,r)=>{t._tryLoad(i)},r.createTreeNode=function(e,t,i,r,n){const o=Autodesk.Viewing.UI.TreeDelegate.prototype.createTreeNode.call(this,e,t,i),s=10+15*n+("leaf"===r?15:0);if(t.style.paddingLeft=s+"px",e.isGeometry()){var a=this.getDocument().createElement("geom_icon");o.parentElement.insertBefore(a,o.parentElement.children[1]),t.style.paddingTop="0"}return o},r.getScrollContainer=function(){return t.scrollContainer},r}function A(e,t){var i=t.guid();e[i]=v;for(var r=t.parent;r;)e[i=r.guid()]=p,r=r.parent}var D=i(197),b={};b.styleTagTransform=g(),b.setAttributes=d(),b.insert=a().bind(null,"head"),b.domAPI=o(),b.insertStyleElement=c();t()(D.A,b);D.A&&D.A.locals&&D.A.locals;const f=Autodesk.Viewing,y=f.Private,E=200;class k{constructor(e,t,i){this._parentDiv=e,this._rootNode=t,this._panelRef=i,this._requestNextThumbnail=this._requestNextThumbnail.bind(this),this._onThumbnailClick=this._onThumbnailClick.bind(this),this._selection=null}initialize(){const e=this.getDocument(),t=this.getWindow();this._container=e.createElement("div"),this._container.style["text-align"]="center",this._pendingImage=[],this._mapping={};for(var i=this._rootNode.search({type:"geometry"}),r=0,n=i.length;r{this._onThumbnailUrlReady(t,e)})).catch((t=>{this._onThumbnailUrlError(t,e)})))}}_getNextThumbnailRequest(){return this._pendingImage.shift()}_onThumbnailUrlReady(e,t){if(!this._mapping)return;var i=t.guid(),r=this._mapping[i].div,n=r.querySelector("img");r.removeChild(n);const o=this.getDocument(),s=this.getWindow();var a=o.createElement("img");a.style.width=E+"px",a.style.height=E+"px",a.src=e,r.insertBefore(a,r.firstChild),this._requestingThumbnail=!1,s.requestAnimationFrame(this._requestNextThumbnail)}_onThumbnailUrlError(e,t){if(!this._mapping)return;var i=t.guid(),r=this._mapping[i].div,n=r.querySelector("img");r.removeChild(n),r.classList.add("viewer-ext-docbrowser-thumbnail-failed"),this._requestingThumbnail=!1;this.getWindow().requestAnimationFrame(this._requestNextThumbnail)}}f.GlobalManagerMixin.call(k.prototype);const _=Autodesk.Viewing,x=Autodesk.Viewing.UI,F="tree",L="thumbnails",T=x.SettingsPanel||class{};class M extends T{constructor(e,t){super(e.container,"lmv-document-extension_"+e.id,"Document Browser",{heightAdjustment:110}),this.setGlobalManager(e.globalManager),this.title.classList.add("docking-panel-delimiter-shadow"),this.container.classList.add("viewer-document-browser"),this.container.classList.add("viewer-settings-panel"),this.currNode=t,this.viewer=e,this._created=!1,this._showThumbnails=!0}setChangeModelHandler(e){this._changeModelFn=e}setThumbnailVisibility(e){this._showThumbnails=e}toggleVisibility(){if(this._created){const e="none"!==this.container.style.display;this.setVisible(!e),this._showThumbnails?this.addTab(L,"Thumbnails",{}):(this.selectTab(F),this.removeTab(L))}else this.addTab(F,"Tree",{}),this._showThumbnails&&this.addTab(L,"Thumbnails",{}),this.selectTab(F),this.setVisible(!0),this.container.style.top="30px",this.container.style.width="400px",this.resizeToContent(),this._created=!0}destroy(){this.myThumbnailList&&(this.myThumbnailList.destroy(),this.myThumbnailList=null),this.myTree&&(this.myTree.destroy(),this.myTree=null),this.container&&(this.container.parentElement.removeChild(this.container),this.container=null)}setVisible(e){super.setVisible(e)}setCurrentNode(e){this.currNode=e,this._updateTreeSelection(e)}selectTab(e){switch(e){case F:this._createTreeView();break;case L:this._createThumbnailView()}var t=super.selectTab(e);return this._updateTreeSelection(this.currNode,e),this._scrollToSelection(e),t}_getTabDiv(e){var t=this.tabIdToIndex[e];return void 0===t?null:this.tablesContainer.childNodes[t].tBodies[0]}_createTreeView(){if(!this.myTree){var e=this.currNode.getRootNode(),t=w(e,this),i=this._getTabDiv(F);this.myTree=new Autodesk.Viewing.UI.Tree(t,e,i,{leafClassName:"docBrowserLeaf",selectedClassName:"selected-ex"})}}_createThumbnailView(){if(!this.myThumbnailList){var e=this._getTabDiv(L),t=this.currNode.getRootNode();this.myThumbnailList=new k(e,t,this),this.myThumbnailList.setGlobalManager(this.globalManager),this.myThumbnailList.initialize()}}_updateTreeSelection(e,t){var i=this.currNode.findParentGeom2Dor3D();let r=[i];switch(i!==e&&r.push(e),t=t||this.getSelectedTabId()){case F:this.myTree.setSelection(r);break;case L:this.myThumbnailList.setSelection(r)}}_scrollToSelection(e){switch(e){case F:this.myTree.scrollTo(this.myTree.getSelection()[0]);break;case L:this.myThumbnailList.scrollToSelection()}}_tryLoad(e){const t=this.currNode.findParentGeom2Dor3D(),i=e.findParentGeom2Dor3D({fallbackParent:t});if(i)return t!==i?(this.currNode=e,this._updateTreeSelection(e),void this._changeModelFn(e).then((()=>{this._hookUnselectCameraChange(e)}))):e.isViewPreset()?(this._updateTreeSelection(e),this.viewer.setView(e),void this._hookUnselectViewAfterTransition(e)):e.isGeometry()?(this._updateTreeSelection(e),void this.viewer.setViewFromFile(this.viewer.model)):void 0}_hookUnselectViewAfterTransition(e){e&&"view"===e.type()&&this.viewer.addEventListener(_.CAMERA_TRANSITION_COMPLETED,(()=>{this._hookUnselectCameraChange(e)}),{once:!0})}_hookUnselectCameraChange(e){e&&"view"===e.type()&&setTimeout((()=>{this.viewer.addEventListener(_.CAMERA_CHANGE_EVENT,(()=>{this.myTree.removeFromSelection([e])}),{once:!0})}),200)}}var N=i(9583),B={};B.styleTagTransform=g(),B.setAttributes=d(),B.insert=a().bind(null,"head"),B.domAPI=o(),B.insertStyleElement=c();t()(N.A,B);N.A&&N.A.locals&&N.A.locals;const S=Autodesk.Viewing,V=S.UI;class I{constructor(e){this.viewer=e,this.setGlobalManager(e.globalManager),this._onPanelVisibilityChange=this._onPanelVisibilityChange.bind(this)}setChangeModelHandler(e){this._changeModelFn=e,this.panel&&this.panel.setChangeModelHandler(e)}createUi(e,t){this.currNode=e,this._addToolbarButton(),this.panel?this.panel.setCurrentNode(e):(this.panel=new M(this.viewer,this.currNode),this.panel.setChangeModelHandler(this._changeModelFn),this.panel.addVisibilityListener(this._onPanelVisibilityChange),t&&void 0!==t.showThumbnails&&this.panel.setThumbnailVisibility(t.showThumbnails),t&&t.openDocumentBrowserOnLoad&&this.panel.toggleVisibility()),this._updateButtonState()}destroy(){this._removeToolbarButton(),this.panel&&(this.panel.destroy(),this.panel=null)}togglePanel(){this.panel.toggleVisibility()}notifyStash(){this.toolbarButton=null}_addToolbarButton(){if(this.viewer.getToolbar){var e=this.viewer.getToolbar();if(e){var t=e.getControl(Autodesk.Viewing.TOOLBAR.MODELTOOLSID);if(t){var i=new V.Button("toolbar-documentModels");i.setIcon("adsk-icon-documentModels"),i.setToolTip("Document Browser"),t.addControl(i),this.toolbarButton=i,i.onClick=()=>{this.togglePanel()}}}}}_removeToolbarButton(){this.toolbarButton&&(this.toolbarButton.removeFromParent(),this.toolbarButton=null)}_updateButtonState(){if(!this.toolbarButton)return;let e=!!this.panel&&this.panel.isVisible();this.toolbarButton.setState(e?V.Button.State.ACTIVE:V.Button.State.INACTIVE)}_onPanelVisibilityChange(){this._updateButtonState()}}S.GlobalManagerMixin.call(I.prototype);const R="Autodesk.DocumentBrowser",U=Autodesk.Viewing;class P extends U.Extension{constructor(e,t){super(e,t),this.onHyperlinkListener=this.onHyperlinkListener.bind(this)}load(){return this.viewer.addEventListener(U.HYPERLINK_EVENT,this.onHyperlinkListener),!0}unload(){return this.ui&&(this.ui.destroy(),this.ui=null),this.viewer.removeEventListener(U.HYPERLINK_EVENT,this.onHyperlinkListener),!0}onHyperlinkListener(){this._stashUI()}onToolbarCreated(){this.viewer.model?this._hookToModel(this.viewer.model):this.viewer.addEventListener(U.MODEL_ROOT_LOADED_EVENT,(e=>{this._hookToModel(e.model)}),{once:!0})}loadNextModel(e,t){if(!this.currNode)return;const i=(this.geometries.indexOf(this.currNode)+1)%this.geometries.length;this.currNode=this.geometries[i];const r=this.viewer.config;Array.isArray(r.extensions)||(r.extensions=[]),-1===r.extensions.indexOf(R)&&r.extensions.push(R),this.viewer.loadDocumentNode(this.rootNode.getDocument(),this.currNode,t)}loadPrevModel(e,t){if(!this.currNode)return;const i=this.geometries.indexOf(this.currNode),r=0===i?this.geometries.length-1:i-1;this.currNode=this.geometries[r];const n=this.viewer.config;Array.isArray(n.extensions)||(n.extensions=[]),-1===n.extensions.indexOf(R)&&n.extensions.push(R),this.viewer.loadDocumentNode(this.rootNode.getDocument(),this.currNode,t)}_changeModel(e){const t=this.viewer.getExtension("Autodesk.Multipage");if(t&&t.focusOnNode(e))return Promise.resolve();const i=this.viewer.config;return Array.isArray(i.extensions)||(i.extensions=[]),-1===i.extensions.indexOf(R)&&i.extensions.push(R),this._stashUI(),this.viewer.loadDocumentNode(e.getDocument(),e)}_hookToModel(e){var t=e.getDocumentNode();if(!t)return;this.currNode=t.findParentGeom2Dor3D(),this.rootNode=t.getRootNode(),this.geometries=this.rootNode.search({type:"geometry"});let i=this.getCache();i.ui?(this.ui=i.ui,i.ui=null):this.ui=new I(this.viewer),this.ui.createUi(this.currNode,this.options),this.ui.setChangeModelHandler(this._changeModel.bind(this))}_stashUI(){let e=this.getCache();this.ui&&(this.ui.notifyStash(),e.ui=this.ui,this.ui=null)}}U.theExtensionManager.registerExtension(R,P)})(),Autodesk.Extensions.DocumentBrowser=r})(); +//# sourceMappingURL=DocumentBrowser.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/LayerManager/LayerManager.min.js b/public/autodesk/extensions/LayerManager/LayerManager.min.js new file mode 100644 index 0000000..3321c17 --- /dev/null +++ b/public/autodesk/extensions/LayerManager/LayerManager.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={2341:(e,t,i)=>{"use strict";i.d(t,{A:()=>a});var n=i(1354),r=i.n(n),o=i(6314),s=i.n(o)()(r());s.push([e.id,".adsk-viewing-viewer .layers-panel{left:0px;top:0px;min-width:320px;min-height:100px;height:calc(100% - 55px);width:350px}.adsk-viewing-viewer .layers-panel .visibility{right:40px;top:0px;width:25px;height:50px;border:none;outline:none;margin:0;padding:0;background-position:2px 19px;background-repeat:no-repeat;position:absolute;cursor:pointer;z-index:1}.adsk-viewing-viewer .layers-panel .visibility.dim{background-position:2px 16px}.adsk-viewing-viewer .layers-panel .treeview{height:100%}.adsk-viewing-viewer .layers-panel .exclude>lmvheader{display:none}.adsk-viewing-viewer .layers-panel .exclude{padding-left:0;left:0}.adsk-viewing-viewer .layers-panel .treeview label{padding-left:17px}","",{version:3,sources:["webpack://./extensions/LayerManager/ui/LayersPanel.css"],names:[],mappings:"AAAA,mCAAmC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,WAAW,CAAC,+CAA+C,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC,mDAAmD,4BAA4B,CAAC,6CAA6C,WAAW,CAAC,sDAAsD,YAAY,CAAC,4CAA4C,cAAc,CAAC,MAAM,CAAC,mDAAmD,iBAAiB",sourcesContent:[".adsk-viewing-viewer .layers-panel{left:0px;top:0px;min-width:320px;min-height:100px;height:calc(100% - 55px);width:350px}.adsk-viewing-viewer .layers-panel .visibility{right:40px;top:0px;width:25px;height:50px;border:none;outline:none;margin:0;padding:0;background-position:2px 19px;background-repeat:no-repeat;position:absolute;cursor:pointer;z-index:1}.adsk-viewing-viewer .layers-panel .visibility.dim{background-position:2px 16px}.adsk-viewing-viewer .layers-panel .treeview{height:100%}.adsk-viewing-viewer .layers-panel .exclude>lmvheader{display:none}.adsk-viewing-viewer .layers-panel .exclude{padding-left:0;left:0}.adsk-viewing-viewer .layers-panel .treeview label{padding-left:17px}"],sourceRoot:""}]);const a=s},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i="",n=void 0!==t[5];return t[4]&&(i+="@supports (".concat(t[4],") {")),t[2]&&(i+="@media ".concat(t[2]," {")),n&&(i+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),i+=e(t),n&&(i+="}"),t[2]&&(i+="}"),t[4]&&(i+="}"),i})).join("")},t.i=function(e,i,n,r,o){"string"==typeof e&&(e=[[null,e,void 0]]);var s={};if(n)for(var a=0;a0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=o),i&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=i):u[2]=i),r&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=r):u[4]="".concat(r)),t.push(u))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],i=e[3];if(!i)return t;if("function"==typeof btoa){var n=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(n),o="/*# ".concat(r," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},1873:(e,t,i)=>{var n=i(9325).Symbol;e.exports=n},2552:(e,t,i)=>{var n=i(1873),r=i(659),o=i(9350),s=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":s&&s in Object(e)?r(e):o(e)}},4128:(e,t,i)=>{var n=i(1800),r=/^\s+/;e.exports=function(e){return e?e.slice(0,n(e)+1).replace(r,""):e}},4840:(e,t,i)=>{var n="object"==typeof i.g&&i.g&&i.g.Object===Object&&i.g;e.exports=n},659:(e,t,i)=>{var n=i(1873),r=Object.prototype,o=r.hasOwnProperty,s=r.toString,a=n?n.toStringTag:void 0;e.exports=function(e){var t=o.call(e,a),i=e[a];try{e[a]=void 0;var n=!0}catch(e){}var r=s.call(e);return n&&(t?e[a]=i:delete e[a]),r}},9350:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},9325:(e,t,i)=>{var n=i(4840),r="object"==typeof self&&self&&self.Object===Object&&self,o=n||r||Function("return this")();e.exports=o},1800:e=>{var t=/\s/;e.exports=function(e){for(var i=e.length;i--&&t.test(e.charAt(i)););return i}},8221:(e,t,i)=>{var n=i(3805),r=i(124),o=i(9374),s=Math.max,a=Math.min;e.exports=function(e,t,i){var l,c,u,d,p,h,v=0,f=!1,y=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function A(t){var i=l,n=c;return l=c=void 0,v=t,d=e.apply(n,i)}function b(e){var i=e-h;return void 0===h||i>=t||i<0||y&&e-v>=u}function w(){var e=r();if(b(e))return m(e);p=setTimeout(w,function(e){var i=t-(e-h);return y?a(i,u-(e-v)):i}(e))}function m(e){return p=void 0,g&&l?A(e):(l=c=void 0,d)}function C(){var e=r(),i=b(e);if(l=arguments,c=this,h=e,i){if(void 0===p)return function(e){return v=e,p=setTimeout(w,t),f?A(e):d}(h);if(y)return clearTimeout(p),p=setTimeout(w,t),A(h)}return void 0===p&&(p=setTimeout(w,t)),d}return t=o(t)||0,n(i)&&(f=!!i.leading,u=(y="maxWait"in i)?s(o(i.maxWait)||0,t):u,g="trailing"in i?!!i.trailing:g),C.cancel=function(){void 0!==p&&clearTimeout(p),v=0,l=h=c=p=void 0},C.flush=function(){return void 0===p?d:m(r())},C}},3805:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},346:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},4394:(e,t,i)=>{var n=i(2552),r=i(346);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==n(e)}},124:(e,t,i)=>{var n=i(9325);e.exports=function(){return n.Date.now()}},9374:(e,t,i)=>{var n=i(4128),r=i(3805),o=i(4394),s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return NaN;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=n(e);var i=a.test(e);return i||l.test(e)?c(e.slice(2),i?2:8):s.test(e)?NaN:+e}},5072:e=>{"use strict";var t=[];function i(e){for(var i=-1,n=0;n{"use strict";var t={};e.exports=function(e,i){var n=function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}t[e]=i}return t[e]}(e);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(i)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,i)=>{"use strict";e.exports=function(e){var t=i.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(i){!function(e,t,i){var n="";i.supports&&(n+="@supports (".concat(i.supports,") {")),i.media&&(n+="@media ".concat(i.media," {"));var r=void 0!==i.layer;r&&(n+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),n+=i.css,r&&(n+="}"),i.media&&(n+="}"),i.supports&&(n+="}");var o=i.sourceMap;o&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(n,e,t.options)}(t,e,i)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var o=t[n]={id:n,exports:{}};return e[n](o,o.exports,i),o.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{LayerManagerExtension:()=>P});var e=i(5072),t=i.n(e),r=i(7825),o=i.n(r),s=i(7659),a=i.n(s),l=i(5056),c=i.n(l),u=i(540),d=i.n(u),p=i(1113),h=i.n(p),v=i(2341),f={};f.styleTagTransform=h(),f.setAttributes=c(),f.insert=a().bind(null,"head"),f.domAPI=o(),f.insertStyleElement=d();t()(v.A,f);v.A&&v.A.locals&&v.A.locals;const y=i(8221),g=Autodesk.Viewing,A=Autodesk.Viewing.UI,b=Autodesk.Viewing.Private,w=g.i18n,m=A.DockingPanel,C=A.TreeDelegate,x=A.Filterbox,T=A.Tree;function L(e,t,i,n){this.viewer=e,this.setGlobalManager(e.globalManager),this.tree=null,this.layersRoot=null,this.visibilityImages={},this.isMac=-1!==navigator.userAgent.search("Mac OS");m.call(this,e.container,i,"Layers",n),this.container.classList.add("layers-panel"),this.container.style.top="10px",this.container.style.left="10px";var r=this;e.model?r.build():r.addEventListener(e,g.GEOMETRY_LOADED_EVENT,(function(){r.build()}));var o=!1;this.addVisibilityListener((function(){o||(o=!0,r.resizeToContent())}))}L.prototype=Object.create(m.prototype),L.prototype.constructor=L,L.prototype.uninitialize=function(){m.prototype.uninitialize.call(this),this.viewer=null,this.tree=null,this.layersRoot=null,this.scrollContainer=null},L.prototype.build=function(){var e=this;const t=y(((e,t)=>{b.analytics.track("viewer.layers",{from:e,action:t})}),2e3);const i=this.getDocument();var n=i.createElement("div");n.classList.add("visibility"),n.title=w.translate("Show/hide all layers"),n.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),this.viewer.setLayerVisible(null,this.viewer.allLayersHidden()),b.analytics.track("viewer.layers",{from:"Panel",action:this.viewer.allLayersHidden()?"Show All":"Hide All"})}.bind(this)),this.container.appendChild(n),this.toogleAllVisibleButton=n;var r=null,o="",s=e.viewer;function a(){o?u&&00&&(e.height+=i[0].clientHeight*i.length),e},L.prototype.createNode=function(e,t){const i=this.getDocument();var n=i.createElement("div");n.dbId=e,n.classList.add("visibility"),n.title=w.translate("Show/hide this layer"),n.addEventListener("mousedown",function(e){e.preventDefault(),e.stopPropagation()}.bind(this)),n.addEventListener("click",function(t){t.preventDefault(),t.stopPropagation(),this.onImageClick(e,t),b.analytics.track("viewer.layers",{from:"Panel.TreeIcon",action:"Toggle Visibility"})}.bind(this)),t.appendChild(n);var r=i.createElement("label");r.textContent=this.getNodeLabel(e),t.appendChild(r)};const E=Autodesk.Viewing,k=E.Extensions.ViewerPanelMixin;function M(e){var t=e.container;L.call(this,e,t,t.id+"ViewerLayersPanel",{heightAdjustment:55}),this.onRestoreStateBinded=this.onRestoreState.bind(this),this.viewer.addEventListener(E.VIEWER_STATE_RESTORED_EVENT,this.onRestoreStateBinded)}M.prototype=Object.create(L.prototype),M.prototype.constructor=M,k.call(M.prototype),M.prototype.uninitialize=function(){this.onRestoreStateBinded&&(this.viewer.removeEventListener(E.VIEWER_STATE_RESTORED_EVENT,this.onRestoreStateBinded),this.onRestoreStateBinded=null),L.prototype.uninitialize.call(this)},M.prototype.onRestoreState=function(){this.update()},M.prototype.onClick=function(e,t){if(!this.isMac||!t.ctrlKey){var i=!(t.shiftKey||t.metaKey||t.ctrlKey);this.setLayerVisible(e,i)}},M.prototype.onRightClick=function(e,t){var i=!(t.shiftKey||t.metaKey||t.ctrlKey);this.setLayerVisible(e,i)},M.prototype.onImageClick=function(e,t){this.isMac&&t.ctrlKey||this.setLayerVisible(e)},M.prototype.onTitleClick=function(e){this.viewer.setLayerVisible(null,!0)},M.prototype.onTitleDoubleClick=function(e){this.viewer.fitToView()};const S=Autodesk.Viewing,V=Autodesk.Viewing.UI,I=Autodesk.Viewing.Private;function P(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};S.Extension.call(this,e,t),this.viewer=e,this.options=t,this.name="layermanager",this.onModelLayersInit=this.onModelLayersInit.bind(this),this.onModelAdded=this.onModelAdded.bind(this),this.layersPanel=null}P.prototype=Object.create(S.Extension.prototype),P.prototype.constructor=P;const N=P.prototype;N.load=function(){return this.viewer.addEventListener(S.MODEL_ADDED_EVENT,this.onModelAdded),this.viewer.model&&this.onModelAdded({model:this.viewer.model}),!0},N.unload=function(){return this.destroyUI(),this.viewer.removeEventListener(S.MODEL_LAYERS_LOADED_EVENT,this.onModelLayersInit),this.viewer.removeEventListener(S.MODEL_ADDED_EVENT,this.onModelAdded),!0},N.addToolbarButton=function(){if(this.viewer.settingsTools.layerButton){if(this.layersPanel){const e=this.viewer.settingsTools.layerButton.getState()===V.Button.State.ACTIVE;this.layersPanel.setVisible(e)}return}const e=new V.Button("toolbar-layers-tool");e.setToolTip("Layer Manager"),e.setIcon("adsk-icon-layers"),e.onClick=()=>{this.layersPanel.setVisible(!this.layersPanel.isVisible()),I.analytics.track("viewer.layers",{from:"Panel",action:"View List"})};let t=this.viewer.settingsTools.indexOf("toolbar-modelStructureTool");t=-1!==t?t:0,this.viewer.settingsTools.addControl(e,{index:t+1}),this.viewer.settingsTools.layerButton=e},N.createUI=function(){this.setLayersPanel(new M(this.viewer)),this.addToolbarButton()},N.removeLayersPanel=function(){this.layersPanel&&(this.viewer.removePanel(this.layersPanel),this.layersPanel.uninitialize(),this.layersPanel=null)},N.removeToolbarButton=function(){this.viewer.settingsTools&&this.viewer.settingsTools.layerButton&&(this.viewer.settingsTools.removeControl(this.viewer.settingsTools.layerButton.getId()),this.viewer.settingsTools.layerButton=null)},N.destroyUI=function(){this.removeLayersPanel(),this.removeToolbarButton()},N.onModelAdded=function(e){if(e.model.is3d()){const t=this.viewer.impl.layers;t&&t.addModel(e.model)}},N.onToolbarCreated=function(){this.viewer.hasEventListener(S.MODEL_LAYERS_LOADED_EVENT,this.onModelLayersInit)||this.viewer.addEventListener(S.MODEL_LAYERS_LOADED_EVENT,this.onModelLayersInit),this.viewer.impl.layers&&this.viewer.impl.layers.initialized&&this.onModelLayersInit()},N.setLayersPanel=function(e){this.layersPanel=e,this.viewer.addPanel(e),e.addVisibilityListener((t=>{t&&this.viewer.onPanelVisible(e,this.viewer),this.viewer.settingsTools.layerButton.setState(t?V.Button.State.ACTIVE:V.Button.State.INACTIVE)}))},N.onModelLayersInit=function(){if(!this.options.disableLayersUi){var e=this.viewer.impl.layers.getRoot();e&&e.childCount>0?(this.removeLayersPanel(),this.createUI()):this.destroyUI()}},N.activate=function(){return!!this.layersPanel&&(this.layersPanel.setVisible(!0),!0)},N.deactivate=function(){return this.layersPanel&&this.layersPanel.setVisible(!1),!0},N.isActive=function(){return!!this.layersPanel&&this.layersPanel.isVisible()},S.theExtensionManager.registerExtension("Autodesk.LayerManager",P)})(),Autodesk.Extensions.LayerManager=n})(); +//# sourceMappingURL=LayerManager.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/MaterialConverterPrism/MaterialConverterPrism.min.js b/public/autodesk/extensions/MaterialConverterPrism/MaterialConverterPrism.min.js new file mode 100644 index 0000000..07976bd --- /dev/null +++ b/public/autodesk/extensions/MaterialConverterPrism/MaterialConverterPrism.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={9809:e=>{e.exports="\n#include \n#ifndef RECIPROCAL_PI\n#define RECIPROCAL_PI 0.318309886\n#endif\n#define ONE 0.00390625\nuniform float opacity;\nuniform vec3 surface_albedo;\nuniform float surface_roughness;\nuniform float surface_anisotropy;\nuniform float surface_rotation;\nuniform sampler2D importantSamplingRandomMap;\nuniform sampler2D importantSamplingSolidAngleMap;\n#if defined( PRISMOPAQUE )\nuniform vec3 opaque_albedo;\nuniform float opaque_f0;\nuniform vec3 opaque_luminance_modifier;\nuniform float opaque_luminance;\n#elif defined( PRISMMETAL )\nuniform vec3 metal_f0;\n#elif defined( PRISMLAYERED )\nuniform float layered_f0;\nuniform vec3 layered_diffuse;\nuniform float layered_fraction;\nuniform vec3 layered_bottom_f0;\nuniform float layered_roughness;\nuniform float layered_anisotropy;\nuniform float layered_rotation;\n#elif defined( PRISMTRANSPARENT )\nuniform float transparent_ior;\nuniform vec3 transparent_color;\nuniform float transparent_distance;\n#elif defined( PRISMGLAZING )\nuniform vec3 glazing_f0;\nuniform vec3 glazing_transmission_color;\nuniform float glazing_transmission_roughness;\n#elif defined( PRISMWOOD )\nuniform bool wood_fiber_cosine_enable;\nuniform int wood_fiber_cosine_bands;\nuniform vec4 wood_fiber_cosine_weights;\nuniform vec4 wood_fiber_cosine_frequencies;\nuniform bool wood_fiber_perlin_enable;\nuniform int wood_fiber_perlin_bands;\nuniform vec4 wood_fiber_perlin_weights;\nuniform vec4 wood_fiber_perlin_frequencies;\nuniform float wood_fiber_perlin_scale_z;\nuniform bool wood_growth_perlin_enable;\nuniform int wood_growth_perlin_bands;\nuniform vec4 wood_growth_perlin_weights;\nuniform vec4 wood_growth_perlin_frequencies;\nuniform float wood_latewood_ratio;\nuniform float wood_earlywood_sharpness;\nuniform float wood_latewood_sharpness;\nuniform float wood_ring_thickness;\nuniform bool wood_earlycolor_perlin_enable;\nuniform int wood_earlycolor_perlin_bands;\nuniform vec4 wood_earlycolor_perlin_weights;\nuniform vec4 wood_earlycolor_perlin_frequencies;\nuniform vec3 wood_early_color;\nuniform bool wood_use_manual_late_color;\nuniform vec3 wood_manual_late_color;\nuniform bool wood_latecolor_perlin_enable;\nuniform int wood_latecolor_perlin_bands;\nuniform vec4 wood_latecolor_perlin_weights;\nuniform vec4 wood_latecolor_perlin_frequencies;\nuniform float wood_late_color_power;\nuniform bool wood_diffuse_perlin_enable;\nuniform int wood_diffuse_perlin_bands;\nuniform vec4 wood_diffuse_perlin_weights;\nuniform vec4 wood_diffuse_perlin_frequencies;\nuniform float wood_diffuse_perlin_scale_z;\nuniform bool wood_use_pores;\nuniform int wood_pore_type;\nuniform float wood_pore_radius;\nuniform float wood_pore_cell_dim;\nuniform float wood_pore_color_power;\nuniform float wood_pore_depth;\nuniform bool wood_use_rays;\nuniform float wood_ray_color_power;\nuniform float wood_ray_seg_length_z;\nuniform float wood_ray_num_slices;\nuniform float wood_ray_ellipse_z2x;\nuniform float wood_ray_ellipse_radius_x;\nuniform bool wood_use_latewood_bump;\nuniform float wood_latewood_bump_depth;\nuniform bool wood_use_groove_roughness;\nuniform float wood_groove_roughness;\nuniform float wood_diffuse_lobe_weight;\nuniform sampler2D permutationMap;\nuniform sampler2D gradientMap;\nuniform sampler2D perm2DMap;\nuniform sampler2D permGradMap;\nuniform vec4 wood_ring_fraction;\nuniform vec2 wood_fall_rise;\n#endif\n#ifdef USE_TILING\nuniform mat4 tilingOverallTransform;\nuniform sampler2D TilingMap;\nuniform mat3 TilingMap_texMatrix;\nuniform vec4 uv2tile;\nuniform vec4 tile2uv;\nuniform vec2 tileAlignOffset;\nuniform mat4 tilingUVTransform;\n#ifdef USE_TILING_NORMAL\nuniform sampler2D TilingNormalMap;\nuniform mat3 TilingNormalMap_texMatrix;\n#endif\n#ifdef USE_TILING_RANDOM\nuniform sampler2D TilingRandomMap;\nuniform mat3 TilingRandomMap_texMatrix;\nuniform vec2 tilingRandomAxisS;\nuniform vec2 tilingRandomAxisT;\nuniform vec2 tilingRandomAlignmentOffset;\n#endif\n#endif\nuniform float envExponentMin;\nuniform float envExponentMax;\nuniform float envExponentCount;\n#include \n#if TONEMAP_OUTPUT > 0\nuniform float exposureBias;\n#include \n#endif\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\nin vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#ifdef USE_FOG\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#if defined( USE_SURFACE_ALBEDO_MAP ) || defined( USE_SURFACE_ROUGHNESS_MAP ) || defined( USE_SURFACE_CUTOUT_MAP ) || defined( USE_SURFACE_ANISOTROPY_MAP ) || defined( USE_SURFACE_ROTATION_MAP ) || defined( USE_OPAQUE_ALBEDO_MAP ) || defined( USE_OPAQUE_F0_MAP ) || defined( USE_OPAQUE_LUMINANCE_MODIFIER_MAP ) || defined( USE_LAYERED_BOTTOM_F0_MAP ) || defined( USE_LAYERED_F0_MAP ) || defined( USE_LAYERED_DIFFUSE_MAP ) || defined( USE_LAYERED_FRACTION_MAP ) || defined( USE_LAYERED_ROUGHNESS_MAP ) || defined( USE_LAYERED_ANISOTROPY_MAP ) || defined( USE_LAYERED_ROTATION_MAP ) || defined( USE_METAL_F0_MAP ) || defined( USE_SURFACE_NORMAL_MAP ) || defined( USE_LAYERED_NORMAL_MAP )\n #define USE_MAP\n#endif\n#if defined(USE_MAP) || defined(USE_TILING)\nin vec2 vUv;\n#endif\n#if defined(PRISMWOOD) && !defined(NO_UVW)\nin vec3 vUvw;\n#endif\n#if defined( USE_SURFACE_ALBEDO_MAP )\n uniform sampler2D surface_albedo_map;\n uniform mat3 surface_albedo_map_texMatrix;\n uniform bool surface_albedo_map_invert;\n#endif\n#if defined( USE_SURFACE_ROUGHNESS_MAP )\n uniform sampler2D surface_roughness_map;\n uniform mat3 surface_roughness_map_texMatrix;\n uniform bool surface_roughness_map_invert;\n#endif\n#if defined( USE_SURFACE_CUTOUT_MAP )\n uniform sampler2D surface_cutout_map;\n uniform mat3 surface_cutout_map_texMatrix;\n uniform bool surface_cutout_map_invert;\n#endif\n#if defined( USE_SURFACE_ANISOTROPY_MAP )\n uniform sampler2D surface_anisotropy_map;\n uniform mat3 surface_anisotropy_map_texMatrix;\n uniform bool surface_anisotropy_map_invert;\n#endif\n#if defined( USE_SURFACE_ROTATION_MAP )\n uniform sampler2D surface_rotation_map;\n uniform mat3 surface_rotation_map_texMatrix;\n uniform bool surface_rotation_map_invert;\n#endif\n#if defined( USE_OPAQUE_ALBEDO_MAP )\n uniform sampler2D opaque_albedo_map;\n uniform mat3 opaque_albedo_map_texMatrix;\n uniform bool opaque_albedo_map_invert;\n#endif\n#if defined( USE_OPAQUE_F0_MAP )\n uniform sampler2D opaque_f0_map;\n uniform mat3 opaque_f0_map_texMatrix;\n uniform bool opaque_f0_map_invert;\n#endif\n#if defined( USE_OPAQUE_LUMINANCE_MODIFIER_MAP )\n uniform sampler2D opaque_luminance_modifier_map;\n uniform mat3 opaque_luminance_modifier_map_texMatrix;\n uniform bool opaque_luminance_modifier_map_invert;\n#endif\n#if defined( USE_LAYERED_BOTTOM_F0_MAP )\n uniform sampler2D layered_bottom_f0_map;\n uniform mat3 layered_bottom_f0_map_texMatrix;\n uniform bool layered_bottom_f0_map_invert;\n#endif\n#if defined( USE_LAYERED_F0_MAP )\n uniform sampler2D layered_f0_map;\n uniform mat3 layered_f0_map_texMatrix;\n uniform bool layered_f0_map_invert;\n#endif\n#if defined( USE_LAYERED_DIFFUSE_MAP )\n uniform sampler2D layered_diffuse_map;\n uniform mat3 layered_diffuse_map_texMatrix;\n uniform bool layered_diffuse_map_invert;\n#endif\n#if defined( USE_LAYERED_FRACTION_MAP )\n uniform sampler2D layered_fraction_map;\n uniform mat3 layered_fraction_map_texMatrix;\n uniform bool layered_fraction_map_invert;\n#endif\n#if defined( USE_LAYERED_ROUGHNESS_MAP )\n uniform sampler2D layered_roughness_map;\n uniform mat3 layered_roughness_map_texMatrix;\n uniform bool layered_roughness_map_invert;\n#endif\n#if defined( USE_LAYERED_ANISOTROPY_MAP )\n uniform sampler2D layered_anisotropy_map;\n uniform mat3 layered_anisotropy_map_texMatrix;\n uniform bool layered_anisotropy_map_invert;\n#endif\n#if defined( USE_LAYERED_ROTATION_MAP )\n uniform sampler2D layered_rotation_map;\n uniform mat3 layered_rotation_map_texMatrix;\n uniform bool layered_rotation_map_invert;\n#endif\n#if defined( USE_METAL_F0_MAP )\n uniform sampler2D metal_f0_map;\n uniform mat3 metal_f0_map_texMatrix;\n uniform bool metal_f0_map_invert;\n#endif\n#if defined( USE_GLAZING_F0_MAP )\n uniform sampler2D glazing_f0_map;\n uniform mat3 glazing_f0_map_texMatrix;\n uniform bool glazing_f0_map_invert;\n#endif\n#if defined( USE_GLAZING_TRANSMISSION_ROUGHNESS_MAP )\n uniform sampler2D glazing_transmission_roughness_map;\n uniform mat3 glazing_transmission_roughness_map_texMatrix;\n uniform bool glazing_transmission_roughness_map_invert;\n#endif\n#if defined( USE_GLAZING_TRANSMISSION_COLOR_MAP )\n uniform sampler2D glazing_transmission_color_map;\n uniform mat3 glazing_transmission_color_map_texMatrix;\n uniform bool glazing_transmission_color_map_invert;\n#endif\n#if defined( USE_WOOD_CURLY_DISTORTION_MAP )\n uniform sampler2D wood_curly_distortion_map;\n uniform mat3 wood_curly_distortion_map_texMatrix;\n uniform bool wood_curly_distortion_map_invert;\n#endif\n#if defined( USE_WOOD_CURLY_DISTORTION_MAP )\nuniform bool wood_curly_distortion_enable;\nuniform float wood_curly_distortion_scale;\n#endif\n#if defined( USE_SURFACE_NORMAL_MAP )\n uniform sampler2D surface_normal_map;\n uniform mat3 surface_normal_map_texMatrix;\n uniform vec2 surface_normal_map_bumpScale;\n uniform int surface_normal_map_bumpmapType;\n#endif\n#if defined( USE_LAYERED_NORMAL_MAP )\n uniform sampler2D layered_normal_map;\n uniform mat3 layered_normal_map_texMatrix;\n uniform vec2 layered_normal_map_bumpScale;\n uniform int layered_normal_map_bumpmapType;\n#endif\nfloat SRGBToLinearComponent(float color) {\n float result = color;\n if (result<=0.04045)\n result *= 0.07739938;\n else\n result = pow(abs((result+0.055)*0.947867298), 2.4);\n return result;\n}\nvec3 SRGBToLinear(vec3 color) {\n vec3 result = color;\n result.x = SRGBToLinearComponent(result.x);\n result.y = SRGBToLinearComponent(result.y);\n result.z = SRGBToLinearComponent(result.z);\n return result;\n}\n#if defined( USE_ENVMAP )\nuniform float envMapExposure;\nuniform samplerCube envMap;\n#endif\n#include \n#if !defined(USE_MAP) && (MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0) || defined ( PRISMWOODBUMP )\nin vec3 vTangent;\nin vec3 vBitangent;\n#if defined( PRISMWOODBUMP )\nin vec3 vtNormal;\nin mat3 mNormalMatrix;\n#endif\n#endif\n#if defined( USE_ENVMAP )\nvec3 sampleReflection(vec3 N, vec3 V, float mipIndex) {\n vec3 dir = (2.0 * dot(V, N)) * N - V;\n dir = adjustLookupVector(mat3(viewMatrixInverse) * dir);\n#ifdef ENV_GAMMA\n vec4 envTexColor = textureLod( envMap, dir, mipIndex );\n return GammaDecode(envTexColor, envMapExposure);\n#elif defined(ENV_RGBM)\n vec4 envTexColor = textureLod( envMap, dir, mipIndex );\n return RGBMDecode(envTexColor, envMapExposure);\n#else\n vec4 envTexColor = texture( envMap, dir );\n vec3 cubeColor = envTexColor.xyz;\n#ifdef GAMMA_INPUT\n cubeColor *= cubeColor;\n#endif\n return cubeColor;\n#endif\n}\n#endif\n#include \n#if defined( USE_ENVMAP ) && defined( USE_IRRADIANCEMAP )\nuniform samplerCube irradianceMap;\nvec3 sampleNormal(vec3 normal) {\n vec3 worldNormal = mat3(viewMatrixInverse) * normal;\n vec3 irradiance = sampleIrradianceMap(worldNormal, irradianceMap, envMapExposure);\n irradiance = applyEnvShadow(irradiance, worldNormal);\n return irradiance;\n}\n#endif\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#endif\n#if MAX_SPOT_LIGHTS > 0\nuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\nuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\nuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\nuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\nuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\nuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n#endif\nfloat sqr(float x) {return x*x;}\nfloat aSqrd(float maxAlphaSqr, float cosTheta)\n{\n if (abs(cosTheta) < 1e-10)\n {\n return 1e10;\n }\n float tan2 = 1.0/sqr(cosTheta) - 1.0;\n return maxAlphaSqr * tan2;\n}\nvec3 Fresnel_Schlick(vec3 f0, float cosAngle)\n{\n float x = 1.0 - cosAngle;\n float x2 = x * x;\n float x5 = x * x2 * x2;\n return f0 + (1.0 - f0) * x5;\n}\nvec3 Fresnel_Rough(vec3 f0, float cosAngle, float alpha)\n{\n float x = 1.0 - cosAngle;\n float x2 = x * x;\n float x5 = x * x2 * x2;\n vec3 maxReflectance = mix(vec3(1.0), f0, vec3(min(0.7, alpha)) / 0.7);\n return f0 + (maxReflectance - f0) * x5;\n}\nfloat IORToReflectance(float ior)\n{\n return sqr((1.0 - ior)/(1.0 + ior));\n}\nvec2 RoughnessToAlpha(float roughness, float anisotropy)\n{\n vec2 alpha = roughness * vec2(1.0, 1.0 - anisotropy);\n alpha = alpha * alpha;\n alpha = clamp(alpha, 0.001, 1.0);\n return alpha;\n}\nfloat AlphaToPhong(float alpha)\n{\n return max(0.0, 2.56/alpha - 7.0);\n}\nfloat ExponentToReflMipIndex(float exponent)\n{\n float targetLog = log2(exponent);\n float minLog = log2(envExponentMin);\n float maxLog = log2(envExponentMax);\n float deltaLog = clamp(targetLog - minLog, 0.0, maxLog - minLog);\n float level = clamp((1.0-(deltaLog + 0.5) / envExponentCount), 0.0, 1.0) * 6.0;\n return level;\n}\n#include \n#if defined( ENABLEIMPORTANTSAMPLING ) && (defined( USE_SURFACE_ROTATION_MAP ) || defined( USE_SURFACE_ANISOTROPY_MAP ) || defined( USE_LAYERED_ROTATION_MAP ) || defined( USE_LAYERED_ANISOTROPY_MAP ))\n#define IMPORTANTSAMPLING\n#endif\n#include \n#if MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0\nvec3 DiffuseLobe(vec3 diffuseColor)\n{\n return diffuseColor * RECIPROCAL_PI;\n}\nvec3 Rotate(vec3 vec, float angle)\n{\n float s = sin(angle);\n float c = cos(angle);\n return vec3(vec.x * c - vec.y * s, vec.x * s + vec.y * c, vec.z);\n}\nfloat NDF_GGX(float alphaU, float alphaV, vec3 normal)\n{\n float nx2 = sqr(normal.x);\n float ny2 = sqr(normal.y);\n float nz2 = sqr(normal.z);\n float scale = 1.0/(alphaU * alphaV * PI);\n return scale/sqr(nx2/sqr(alphaU) + ny2/sqr(alphaV) + nz2);\n}\nfloat G1_GGX(float aSqrd)\n{\n return 2.0 / (1.0 + sqrt(1.0 + aSqrd));\n}\nvec3 MicrofacetLobe(\n vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n float roughness, float anisotropy, float rotation, vec3 reflectance)\n{\n vec2 alpha = RoughnessToAlpha(roughness, anisotropy);\n Hlocal = Rotate(Hlocal, rotation);\n vec3 F = Fresnel_Schlick(reflectance, VdotH);\n float D = NDF_GGX(alpha.x, alpha.y, Hlocal);\n float alpha2 = max(sqr(alpha.x), sqr(alpha.y));\n float alpha2NL = aSqrd(alpha2, NdotL);\n float alpha2NV = aSqrd(alpha2, NdotV);\n float G = G1_GGX(alpha2NL) * G1_GGX(alpha2NV);\n return max(F * D * G / (4.0 * NdotL * NdotV), vec3(0.0));\n}\n#if defined( PRISMOPAQUE )\nvec3 BRDF_Opaque(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation,\n float opaqueF0, vec3 opaqueAlbedo)\n{\n vec3 diffuse = DiffuseLobe(opaqueAlbedo);\n vec3 specular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, surfaceAnisotropy, surfaceRotation, vec3(opaqueF0));\n return (specular+diffuse)*NdotL;\n}\n#elif defined( PRISMMETAL )\nvec3 BRDF_Metal(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation,\n vec3 metalF0)\n{\n vec3 specular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, surfaceAnisotropy, surfaceRotation, metalF0);\n return specular*NdotL;\n}\n#elif defined( PRISMLAYERED )\nvec3 BRDF_Layered(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 Hlocal2, float N2dotL, float N2dotH, float N2dotV,\n vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation,\n float layeredF0, vec3 layeredDiffuse, float layeredRoughness, float layeredAnisotropy,\n float layeredRotation, vec3 bottom_f0, float layeredFraction)\n{\n vec3 Fl = Fresnel_Schlick(vec3(layeredF0), NdotL);\n vec3 Fv = Fresnel_Schlick(vec3(layeredF0), NdotV);\n vec3 amount = (1.0 - Fl) * (1.0 - Fv);\n vec3 topSpecular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, surfaceAnisotropy, surfaceRotation,\n vec3(layeredF0));\n vec3 topDiffuse = DiffuseLobe(layeredDiffuse);\n vec3 botSpecular = MicrofacetLobe(\n Hlocal2, N2dotL, N2dotH, N2dotV, VdotH,\n layeredRoughness, layeredAnisotropy, layeredRotation,\n bottom_f0);\n return topSpecular*NdotL + amount * mix(topDiffuse*NdotL, botSpecular*N2dotL, layeredFraction);\n}\n#elif defined( PRISMTRANSPARENT )\nvec3 BRDF_Transparent(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation)\n{\n vec3 reflectance = vec3(IORToReflectance(transparent_ior));\n vec3 specular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, surfaceAnisotropy, surfaceRotation, reflectance);\n return specular*NdotL;\n}\n#elif defined( PRISMGLAZING )\nvec3 BRDF_Glazing(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation,\n vec3 glazingF0, vec3 glazingTransmissionColor, float glazingIlluminance)\n{\n vec3 diffuse = DiffuseLobe(glazingTransmissionColor - vec3(glazingIlluminance, glazingIlluminance, glazingIlluminance));\n vec3 specular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, surfaceAnisotropy, surfaceRotation, glazingF0);\n return (specular+diffuse)*NdotL;\n}\n#elif defined( PRISMWOOD )\nvec3 BRDF_Wood(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 surfaceAlbedo, float surfaceRoughness, vec3 woodDiffuse)\n{\n vec3 diffuse = DiffuseLobe(woodDiffuse);\n vec3 specular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, 0.0, 0.0, vec3(0.04));\n return (specular+diffuse)*NdotL;\n}\n#endif\n#endif\n#if defined( USE_ENVMAP )\n#if defined( PRISMOPAQUE )\nvec3 Environment_Opaque(vec3 N, vec3 V, float NdotV, vec3 surfaceAlbedo, float surfaceRoughness,\n float opaqueF0, vec3 opaqueAlbedo, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv)\n{\n float alpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n vec3 F = Fresnel_Rough(vec3(opaqueF0), NdotV, alpha);\n#if defined( IMPORTANTSAMPLING )\n vec3 specular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, vec3(opaqueF0), surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float exponent = AlphaToPhong(alpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 specular = F* surfaceAlbedo * envSpecular;\n#endif\n#if defined( USE_IRRADIANCEMAP )\n vec3 envIrradiance = sampleNormal(N);\n#else\n vec3 envIrradiance = vec3(1.0);\n#endif\n vec3 diffuse = (1.0 - F) * opaqueAlbedo * envIrradiance;\n return diffuse + specular;\n}\n#elif defined( PRISMMETAL )\nvec3 Environment_Metal(vec3 N, vec3 V, float NdotV, vec3 surfaceAlbedo, float surfaceRoughness, vec3 metalF0, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv)\n{\n#if defined( IMPORTANTSAMPLING )\n vec3 specular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, metalF0, surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float alpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n float exponent = AlphaToPhong(alpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 F = Fresnel_Rough(metalF0, NdotV, alpha);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 specular = F * surfaceAlbedo * envSpecular;\n#endif\n return specular;\n}\n#elif defined( PRISMLAYERED )\nvec3 Environment_Layered(vec3 N, vec3 V, float NdotV, vec3 N2, float N2dotV, vec3 surfaceAlbedo, float surfaceRoughness,\n float layeredF0, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv, vec3 layeredDiffuse, float layeredRoughness,\n float layeredAnisotropy, float layeredRotation, vec3 bottom_f0, float layeredFraction)\n{\n vec3 F = Fresnel_Schlick(vec3(layeredF0), NdotV);\n float alpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n#if defined( IMPORTANTSAMPLING )\n vec3 topSpecular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, vec3(layeredF0), surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float exponent = AlphaToPhong(alpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 topSpecular = F * surfaceAlbedo * envSpecular;\n#endif\n vec3 amount = (1.0 - F);\n#if defined( USE_IRRADIANCEMAP )\n vec3 envIrradiance = sampleNormal(N);\n#else\n vec3 envIrradiance = vec3(1.0);\n#endif\n vec3 topDiffuse = layeredDiffuse * envIrradiance;\n#if defined( IMPORTANTSAMPLING )\n vec3 botSpecular = ImportanceSamplingSpecular(layeredRotation, bottom_f0, layeredRoughness, layeredAnisotropy, V, N2, Tu, Tv);\n#else\n alpha = RoughnessToAlpha(layeredRoughness, 0.0).x;\n exponent = AlphaToPhong(alpha);\n reflMipIndex = ExponentToReflMipIndex(exponent);\n envSpecular = sampleReflection(N2, V, reflMipIndex);\n F = Fresnel_Rough(bottom_f0, N2dotV, alpha);\n vec3 botSpecular = F * envSpecular;\n#endif\n return topSpecular + amount * mix(topDiffuse, botSpecular, layeredFraction);\n}\n#elif defined( PRISMTRANSPARENT )\nvec3 Environment_Transparent(vec3 N, vec3 V, float NdotV, vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv)\n{\n vec3 reflectance = vec3(IORToReflectance(transparent_ior));\n float alpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n vec3 F = Fresnel_Rough(reflectance, NdotV, alpha);\n#if defined( IMPORTANTSAMPLING )\n vec3 specular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, reflectance, surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float exponent = AlphaToPhong(alpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 specular = F * surfaceAlbedo * envSpecular;\n#endif\n#if defined( USE_IRRADIANCEMAP )\n vec3 envIrradiance = sampleNormal(N);\n#else\n vec3 envIrradiance = vec3(1.0);\n#endif\n vec3 color = F * surfaceRoughness * transparent_color * envIrradiance;\n return specular + color;\n}\n#elif defined( PRISMGLAZING )\nvec3 Environment_Glazing(vec3 N, vec3 V, float NdotV, vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv,\n vec3 glazing_f0, vec3 transmissionF, float transmissionAlpha, vec3 glazingAdjustedColor, float glazingIlluminace)\n{\n float surfaceAlpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n vec3 surfaceF = Fresnel_Rough(glazing_f0, NdotV, surfaceAlpha);\n#if defined( IMPORTANTSAMPLING )\n vec3 specular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, glazing_f0, surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float exponent = AlphaToPhong(surfaceAlpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 specular = surfaceF * surfaceAlbedo * envSpecular;\n#endif\n#if defined( USE_IRRADIANCEMAP )\n vec3 envIrradiance = sampleNormal(N);\n#else\n vec3 envIrradiance = vec3(1.0);\n#endif\n vec3 color = 0.5 * (1.0 - transmissionF) * (glazingAdjustedColor - vec3(glazingIlluminace, glazingIlluminace, glazingIlluminace)) * envIrradiance; \n return specular + color;\n}\n#elif defined( PRISMWOOD )\nvec3 Environment_Wood(vec3 N, vec3 V, float NdotV, vec3 surfaceAlbedo, float surfaceRoughness, vec3 woodDiffuse, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv)\n{\n float alpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n vec3 F = Fresnel_Rough(vec3(0.04), NdotV, alpha);\n#if defined( IMPORTANTSAMPLING )\n vec3 specular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, vec3(0.04), surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float exponent = AlphaToPhong(alpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 specular = F * surfaceAlbedo * envSpecular;\n#endif\n#if defined( USE_IRRADIANCEMAP )\n vec3 envIrradiance = sampleNormal(N);\n#else\n vec3 envIrradiance = vec3(1.0);\n#endif\n vec3 diffuse = (1.0 - F) * woodDiffuse * envIrradiance;\n return diffuse + specular;\n}\n#endif\n#endif\n#if defined( PRISMTRANSPARENT )\n#include \n#elif defined( PRISMGLAZING )\n#include \n#endif\n#ifdef USE_TILING\nvec3 tilingTransform(vec2 uv, mat4 transform)\n{\n\treturn (transform * vec4(uv, 0.0, 1.0)).xyz;\n}\nvec4 tilingMapTest(sampler2D tilingSampler, mat3 transf, vec3 uv, vec4 uv2tile, vec4 tile2uv)\n{\n\tvec2 tileCoord = vec2(dot(uv2tile.xz, uv.xy), dot(uv2tile.yw, uv.xy));\n\tvec2 ijBase = floor(tileCoord);\n vec2 fracC = fract(tileCoord);\n\tvec2 st = vec2(dot(tile2uv.xz, fracC), dot(tile2uv.yw, fracC));\n\tvec4 tileInfo = vec4(0.0, 0.0, 2.0, 2.0);\n\tvec2 iOffset = float(TILE_RANGE_X_MIN) * tile2uv.xy;\n\tvec2 jBaseOffset = float(TILE_RANGE_Y_MIN) * tile2uv.zw;\n\tfor( int i = TILE_RANGE_X_MIN; i <= TILE_RANGE_X_MAX; i++)\n\t{\n\t\tvec2 jOffset = jBaseOffset;\n\t\tfor( int j = TILE_RANGE_Y_MIN; j <= TILE_RANGE_Y_MAX; j++)\n\t\t{\n\t\t\tvec2 sampleUV = st + iOffset + jOffset;\n\t\t\tjOffset += tile2uv.zw;\n\t\t\tsampleUV = (transf * vec3(sampleUV, 1.0)).xy;\n\t\t\tvec4 tex = texture(tilingSampler, sampleUV);\n\t\t\tfloat d = max( min(tex.r, tex.g), min( max(tex.r, tex.g), tex.b));\n if (d < tileInfo.z) {\n\t\t\t\ttileInfo.xy = vec2(float(i),float(j));\n\t\t\t\ttileInfo.w = tileInfo.z;\n\t\t\t\ttileInfo.z = d;\n\t\t\t} else {\n\t\t\t\ttileInfo.w = min(tileInfo.w, d);\n\t\t\t}\n\t\t}\n\t\tiOffset += tile2uv.xy;\n\t}\n\ttileInfo.zw = tileInfo.zw - 0.5;\n\tfloat w = clamp(tileInfo.z/max(fwidth(tileInfo.z), 0.000001) + 0.5, 0.0, 1.0);\n\tif ( w == 1.0 )\n\t\tdiscard;\n \tif (abs(tileInfo.w)<=abs(tileInfo.z))\n\t\tw = 0.0;\n\ttileInfo.w = 1.0 - w;\n\ttileInfo.xy -= ijBase;\n\treturn tileInfo;\n}\nvec2 tilingSubMaterialRelocate(vec3 uv, vec4 tileInfo, vec4 tile2uv)\n{\n\tvec2 offset = vec2(dot(tile2uv.xz, tileInfo.xy), dot(tile2uv.yw, tileInfo.xy));\n\treturn (uv.xy + offset);\n}\n#ifdef USE_TILING_RANDOM\nvec2 tilingRandom(vec2 uv, vec4 tileInfo, sampler2D randomSampler, mat3 transf, vec2 tileTextureAxisS, vec2 tileTextureAxisT, vec2 tile2TextureOffset)\n{\n vec2 xti = (vec3(tileInfo.xy, 1.0) * transf).xy;\n vec4 random = texture(randomSampler, xti);\n vec2 randomOffset = vec2(tileTextureAxisS.x*random.z + tileTextureAxisT.x*random.w,\n tileTextureAxisS.y*random.z + tileTextureAxisT.y*random.w) + tile2TextureOffset;\n return uv + randomOffset;\n}\n#endif\nvoid tilingNormalOffset(\n sampler2D bumpTexture,\n vec2 uv,\n mat3 transform,\n inout vec3 T,\n inout vec3 B,\n inout vec3 N\n) {\n vec2 st = (vec3(uv, 1.0) * transform).xy;\n vec3 distort = (2.0 * texture(bumpTexture, st).xyz - 1.0) - vec3(0.0,0.0,1.0);\n mat3 mat = mat3(\n T.x, B.x, N.x,\n T.y, B.y, N.y,\n T.z, B.z, N.z\n );\n N = normalize(N + (mat*distort));\n}\n#endif\nin vec3 vNormal;\nin vec3 vViewPosition;\n#include \nvoid main() {\n#if NUM_CUTPLANES > 0\n checkCutPlanes(vWorldPosition);\n#endif\n vec3 N = normalize(vNormal);\n vec3 Tu = vec3(0.0);\n vec3 Tv = vec3(0.0);\n#if defined(USE_MAP) || defined(USE_TILING)\n vec2 uv = vUv;\n#endif\n#ifdef USE_TILING\n vec3 v_tilingOverallTransf = tilingTransform( vUv, tilingOverallTransform );\n vec4 v_TilingMap = tilingMapTest( TilingMap, TilingMap_texMatrix, v_tilingOverallTransf, uv2tile, tile2uv );\n uv = tilingSubMaterialRelocate( v_tilingOverallTransf, v_TilingMap, tile2uv ) + tileAlignOffset;\n#ifdef USE_TILING_NORMAL\n vec2 uvNorm = uv;\n#endif\n#ifdef USE_TILING_RANDOM\n uv = tilingRandom( uv, v_TilingMap, TilingRandomMap, TilingRandomMap_texMatrix, tilingRandomAxisS, tilingRandomAxisT, tilingRandomAlignmentOffset );\n#endif\n uv = tilingTransform( uv, tilingUVTransform ).xy;\n#endif\n#if defined( USE_SURFACE_NORMAL_MAP ) || defined( USE_LAYERED_NORMAL_MAP ) || MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0 || defined( PRISMWOODBUMP ) || defined( IMPORTANTSAMPLING )\n#if !defined(USE_MAP) || defined( PRISMWOODBUMP )\n Tu = normalize(vTangent);\n Tv = normalize(vBitangent);\n#else\n vec3 q0 = dFdx( -vViewPosition );\n vec3 q1 = dFdy( -vViewPosition );\n vec2 st0 = dFdx( uv );\n vec2 st1 = dFdy( uv );\n Tu = normalize( q0 * st1.t - q1 * st0.t );\n Tv = normalize( -q0 * st1.s + q1 * st0.s );\n#endif\n#endif\n vec3 V;\n if (projectionMatrix[3][3] == 0.0) {\n V = normalize( vViewPosition );\n } else {\n V = vec3(0.0, 0.0, 1.0);\n }\n N = faceforward(N, -V, N);\n#if defined(PRISMLAYERED)\n vec3 N2 = N;\n#endif\n#ifndef FLAT_SHADED\n vec3 normal = normalize( vNormal );\n#ifdef DOUBLE_SIDED\n normal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n#endif\n#else\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n#endif\n vec3 geomNormal = normal;\n#if defined( USE_SURFACE_NORMAL_MAP )\n if (surface_normal_map_bumpmapType == 0)\n heightMapTransform(surface_normal_map, uv, surface_normal_map_texMatrix, surface_normal_map_bumpScale, Tu, Tv, N);\n else\n normalMapTransform(surface_normal_map, uv, surface_normal_map_texMatrix, surface_normal_map_bumpScale, Tu, Tv, N);\n#endif\n#if defined( USE_LAYERED_NORMAL_MAP )\n if (layered_normal_map_bumpmapType == 0)\n heightMapTransform(layered_normal_map, uv, layered_normal_map_texMatrix, layered_normal_map_bumpScale, Tu, Tv, N2);\n else\n normalMapTransform(layered_normal_map, uv, layered_normal_map_texMatrix, layered_normal_map_bumpScale, Tu, Tv, N2);\n#endif\n#ifdef USE_TILING_NORMAL\n tilingNormalOffset(TilingNormalMap, uvNorm, TilingNormalMap_texMatrix, Tu, Tv, N);\n#endif\n#if defined( PRISMWOOD )\n#ifdef NO_UVW\n vec3 p = vec3(0.0);\n#elif defined( USE_WOOD_CURLY_DISTORTION_MAP )\n vec3 p = DistortCurly(vUvw);\n#else\n vec3 p = vUvw;\n#endif\n#if !defined( NO_UVW ) && defined( PRISMWOODBUMP )\n getFinalWoodContext(\n N, V, Tu, Tv, p,\n normal, vtNormal, vNormalMatrix\n );\n#endif\n#endif\n float NdotV = clamp(dot(N, V), EPSILON, 1.0);\n#if defined(PRISMLAYERED)\n float N2dotV = clamp(dot(N2, V), EPSILON, 1.0);\n#endif\n vec3 surfaceAlbedo;\n #if defined( USE_SURFACE_ALBEDO_MAP )\n vec2 uv_surface_albedo_map = (surface_albedo_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_ALBEDO_CLAMP_TEST;\n surfaceAlbedo = texture(surface_albedo_map, uv_surface_albedo_map).xyz;\n surfaceAlbedo = SRGBToLinear(surfaceAlbedo);\n if(surface_albedo_map_invert) surfaceAlbedo = vec3(1.0) - surfaceAlbedo;\n #else\n surfaceAlbedo = surface_albedo;\n #endif\n float surfaceRoughness;\n #if defined( USE_SURFACE_ROUGHNESS_MAP )\n vec2 uv_surface_roughness_map = (surface_roughness_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_ROUGHNESS_CLAMP_TEST;\n vec3 surfaceRoughness_v3 = texture(surface_roughness_map, uv_surface_roughness_map).xyz;\n if(surface_roughness_map_invert) surfaceRoughness_v3 = vec3(1.0) - surfaceRoughness_v3;\n surfaceRoughness = average(surfaceRoughness_v3);\n #else\n surfaceRoughness = surface_roughness;\n #endif\n float surfaceAnisotropy;\n #if defined( USE_SURFACE_ANISOTROPY_MAP )\n vec2 uv_surface_anisotropy_map = (surface_anisotropy_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_ANISOTROPY_CLAMP_TEST;\n vec3 surfaceAnisotropy_v3 = texture(surface_anisotropy_map, uv_surface_anisotropy_map).xyz;\n if(surface_anisotropy_map_invert) surfaceAnisotropy_v3 = vec3(1.0) - surfaceAnisotropy_v3;\n surfaceAnisotropy = average(surfaceAnisotropy_v3);\n #else\n surfaceAnisotropy = surface_anisotropy;\n #endif\n float surfaceRotation;\n #if defined( USE_SURFACE_ROTATION_MAP )\n vec2 uv_surface_rotation_map = (surface_rotation_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_ROTATION_CLAMP_TEST;\n vec3 surfaceRotation_v3 = texture(surface_rotation_map, uv_surface_rotation_map).xyz;\n if(surface_rotation_map_invert) surfaceRotation_v3 = vec3(1.0) - surfaceRotation_v3;\n surfaceRotation = average(surfaceRotation_v3);\n #else\n surfaceRotation = surface_rotation;\n #endif\n #if defined(PRISMOPAQUE)\n float opaqueF0;\n #if defined( USE_OPAQUE_F0_MAP )\n vec2 uv_opaque_f0_map = (opaque_f0_map_texMatrix * vec3(uv, 1.0)).xy;\n OPAQUE_F0_CLAMP_TEST;\n vec3 opaqueF0_v3 = texture(opaque_f0_map, uv_opaque_f0_map).xyz;\n if(opaque_f0_map_invert) opaqueF0_v3 = vec3(1.0) - opaqueF0_v3;\n opaqueF0 = average(opaqueF0_v3);\n #else\n opaqueF0 = opaque_f0;\n #endif\n vec3 opaqueAlbedo;\n #if defined( USE_OPAQUE_ALBEDO_MAP )\n vec2 uv_opaque_albedo_map = (opaque_albedo_map_texMatrix * vec3(uv, 1.0)).xy;\n OPAQUE_ALBEDO_CLAMP_TEST;\n opaqueAlbedo = texture(opaque_albedo_map, uv_opaque_albedo_map).xyz;\n opaqueAlbedo = SRGBToLinear(opaqueAlbedo);\n if(opaque_albedo_map_invert) opaqueAlbedo = vec3(1.0) - opaqueAlbedo;\n #else\n opaqueAlbedo = opaque_albedo;\n #endif\n #elif defined(PRISMMETAL)\n vec3 metalF0;\n #if defined( USE_METAL_F0_MAP )\n vec2 uv_metal_f0_map = (metal_f0_map_texMatrix * vec3(uv, 1.0)).xy;\n METAL_F0_CLAMP_TEST;\n metalF0 = texture(metal_f0_map, uv_metal_f0_map).xyz;\n metalF0 = SRGBToLinear(metalF0);\n if(metal_f0_map_invert) metalF0 = vec3(1.0) - metalF0;\n #else\n metalF0 = metal_f0;\n #endif\n #elif defined(PRISMLAYERED)\n float layeredF0;\n #if defined( USE_LAYERED_F0_MAP )\n vec2 uv_layered_f0_map = (layered_f0_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_F0_CLAMP_TEST;\n vec3 layeredF0_v3 = texture(layered_f0_map, uv_layered_f0_map).xyz;\n if(layered_f0_map_invert) layeredF0_v3 = vec3(1.0) - layeredF0_v3;\n layeredF0 = average(layeredF0_v3);\n #else\n layeredF0 = layered_f0;\n #endif\n vec3 layeredDiffuse;\n #if defined( USE_LAYERED_DIFFUSE_MAP )\n vec2 uv_layered_diffuse_map = (layered_diffuse_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_DIFFUSE_CLAMP_TEST;\n layeredDiffuse = texture(layered_diffuse_map, uv_layered_diffuse_map).xyz;\n layeredDiffuse = SRGBToLinear(layeredDiffuse);\n if(layered_diffuse_map_invert) layeredDiffuse = vec3(1.0) - layeredDiffuse;\n #else\n layeredDiffuse = layered_diffuse;\n #endif\n float layeredRoughness;\n #if defined( USE_LAYERED_ROUGHNESS_MAP )\n vec2 uv_layered_roughness_map = (layered_roughness_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_ROUGHNESS_CLAMP_TEST;\n vec3 layeredRoughness_v3 = texture(layered_roughness_map, uv_layered_roughness_map).xyz;\n if(layered_roughness_map_invert) layeredRoughness_v3 = vec3(1.0) - layeredRoughness_v3;\n layeredRoughness = average(layeredRoughness_v3);\n #else\n layeredRoughness = layered_roughness;\n #endif\n float layeredAnisotropy;\n #if defined( USE_LAYERED_ANISOTROPY_MAP )\n vec2 uv_layered_anisotropy_map = (layered_anisotropy_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_ANISOTROPY_CLAMP_TEST;\n vec3 layeredAnisotropy_v3 = texture(layered_anisotropy_map, uv_layered_anisotropy_map).xyz;\n if(layered_anisotropy_map_invert) layeredAnisotropy_v3 = vec3(1.0) - layeredAnisotropy_v3;\n layeredAnisotropy = average(layeredAnisotropy_v3);\n #else\n layeredAnisotropy = layered_anisotropy;\n #endif\n float layeredRotation;\n #if defined( USE_LAYERED_ROTATION_MAP )\n vec2 uv_layered_rotation_map = (layered_rotation_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_ROTATION_CLAMP_TEST;\n vec3 layeredRotation_v3 = texture(layered_rotation_map, uv_layered_rotation_map).xyz;\n if(layered_rotation_map_invert) layeredRotation_v3 = vec3(1.0) - layeredRotation_v3;\n layeredRotation = average(layeredRotation_v3);\n #else\n layeredRotation = layered_rotation;\n #endif\n vec3 bottom_f0;\n #if defined( USE_LAYERED_BOTTOM_F0_MAP )\n vec2 uv_layered_bottom_f0_map = (layered_bottom_f0_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_BOTTOM_F0_CLAMP_TEST;\n bottom_f0 = texture(layered_bottom_f0_map, uv_layered_bottom_f0_map).xyz;\n bottom_f0 = SRGBToLinear(bottom_f0);\n if(layered_bottom_f0_map_invert) bottom_f0 = vec3(1.0) - bottom_f0;\n #else\n bottom_f0 = layered_bottom_f0;\n #endif\n float layeredFraction;\n #if defined( USE_LAYERED_FRACTION_MAP )\n vec2 uv_layered_fraction_map = (layered_fraction_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_FRACTION_CLAMP_TEST;\n vec3 layeredFraction_v3 = texture(layered_fraction_map, uv_layered_fraction_map).xyz;\n if(layered_fraction_map_invert) layeredFraction_v3 = vec3(1.0) - layeredFraction_v3;\n layeredFraction = average(layeredFraction_v3);\n #else\n layeredFraction = layered_fraction;\n #endif\n #elif defined( PRISMGLAZING )\n vec3 glazingTransmissionColor;\n #if defined( USE_GLAZING_TRANSMISSION_COLOR_MAP )\n vec2 uv_glazing_transmission_color_map = (glazing_transmission_color_map_texMatrix * vec3(uv, 1.0)).xy;\n GLAZING_TRANSMISSION_COLOR_CLAMP_TEST;\n glazingTransmissionColor = texture(glazing_transmission_color_map, uv_glazing_transmission_color_map).xyz;\n glazingTransmissionColor = SRGBToLinear(glazingTransmissionColor);\n if(glazing_transmission_color_map_invert) glazingTransmissionColor = vec3(1.0) - glazingTransmissionColor;\n #else\n glazingTransmissionColor = glazing_transmission_color;\n #endif\n vec3 glazingF0;\n #if defined( USE_GLAZING_F0_MAP )\n vec2 uv_glazing_f0_map = (glazing_f0_map_texMatrix * vec3(uv, 1.0)).xy;\n GLAZING_F0_CLAMP_TEST;\n glazingF0 = texture(glazing_f0_map, uv_glazing_f0_map).xyz;\n glazingF0 = SRGBToLinear(glazingF0);\n if(glazing_f0_map_invert) glazingF0 = vec3(1.0) - glazingF0;\n #else\n glazingF0 = glazing_f0;\n #endif\n float glazingTransmissionRoughness;\n #if defined( USE_GLAZING_TRANSMISSION_ROUGHNESS_MAP )\n vec2 uv_glazing_transmission_roughness_map = (glazing_transmission_roughness_map_texMatrix * vec3(uv, 1.0)).xy;\n GLAZING_TRANSMISSION_ROUGHNESS_CLAMP_TEST;\n vec3 glazingTransmissionRoughness_v3 = texture(glazing_transmission_roughness_map, uv_glazing_transmission_roughness_map).xyz;\n if(glazing_transmission_roughness_map_invert) glazingTransmissionRoughness_v3 = vec3(1.0) - glazingTransmissionRoughness_v3;\n glazingTransmissionRoughness = average(glazingTransmissionRoughness_v3);\n #else\n glazingTransmissionRoughness = glazing_transmission_roughness;\n #endif\n vec3 glazingAdjustedColor = TransmitAdjust(glazingTransmissionColor, glazingF0);\n float glazingIlluminace = ColorToIlluminance(glazingAdjustedColor);\n float transmissionAlpha = RoughnessToAlpha(glazingTransmissionRoughness, 0.0).x;\n vec3 transmissionF = Fresnel_Rough(glazingF0, NdotV, transmissionAlpha);\n#elif defined(PRISMWOOD)\n vec3 woodDiffuse = NoiseWood(p, surfaceRoughness);\n#endif\n vec3 outRadianceLight = vec3(0.0);\n#if MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0\n vec3 lightDirection[ MAX_DIR_LIGHTS + MAX_POINT_LIGHTS + MAX_SPOT_LIGHTS ];\n vec3 lightColor[ MAX_DIR_LIGHTS + MAX_POINT_LIGHTS + MAX_SPOT_LIGHTS ];\n#if MAX_DIR_LIGHTS > 0\n for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\n lightDirection[i] = normalize( lDirection.xyz );\n lightColor[i] = SRGBToLinear(directionalLightColor[ i ]);\n }\n#endif\n#if MAX_POINT_LIGHTS > 0\n for( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\n lightDirection[MAX_DIR_LIGHTS + i] = normalize( lVector );\n float lDistance = 1.0;\n if ( pointLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\n lightColor[MAX_DIR_LIGHTS + i] = SRGBToLinear(pointLightColor[ i ]) * lDistance;\n }\n#endif\n#if MAX_SPOT_LIGHTS > 0\n for( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\n lightDirection[MAX_DIR_LIGHTS + MAX_POINT_LIGHTS + i] = normalize( lVector );\n float lDistance = 1.0;\n if ( spotLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\n float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\n if ( spotEffect > spotLightAngleCos[ i ] ) {\n spotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );\n } else {\n spotEffect = 0.0;\n }\n lightColor[MAX_DIR_LIGHTS + MAX_POINT_LIGHTS + i] = SRGBToLinear(spotLightColor[ i ]) * lDistance * spotEffect;\n }\n#endif\n for( int i = 0; i < MAX_DIR_LIGHTS + MAX_POINT_LIGHTS + MAX_SPOT_LIGHTS; i ++ ) {\n vec3 L = lightDirection[i];\n float NdotL = max(EPSILON, dot(N, L));\n vec3 H = normalize(L + V);\n float NdotH = dot(N, H);\n float VdotH = dot(V, H);\n float Hu = dot(H, Tu);\n float Hv = dot(H, Tv);\n vec3 Hlocal = vec3(Hu, Hv, NdotH);\n#if defined(PRISMLAYERED)\n float N2dotL = dot(N2, L);\n float N2dotH = dot(N2, H);\n vec3 Hlocal2 = vec3(Hu, Hv, N2dotH);\n#endif\n vec3 brdf = lightColor[i] *\n#if defined(PRISMOPAQUE)\n BRDF_Opaque(Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation,\n opaqueF0, opaqueAlbedo);\n#elif defined(PRISMMETAL)\n BRDF_Metal(Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation,\n metalF0);\n#elif defined(PRISMLAYERED)\n BRDF_Layered(Hlocal, NdotL, NdotH, NdotV, VdotH, Hlocal2, N2dotL, N2dotH, N2dotV,\n surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation,\n layeredF0, layeredDiffuse, layeredRoughness, layeredAnisotropy,\n layeredRotation, bottom_f0, layeredFraction);\n#elif defined(PRISMTRANSPARENT)\n BRDF_Transparent(Hlocal, NdotL, NdotH, NdotV, VdotH, surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation);\n#elif defined(PRISMGLAZING)\n BRDF_Glazing(Hlocal, NdotL, NdotH, NdotV, VdotH, surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation,\n glazingF0, glazingTransmissionColor, glazingIlluminace);\n#elif defined(PRISMWOOD)\n BRDF_Wood(Hlocal, NdotL, NdotH, NdotV, VdotH, surfaceAlbedo, surfaceRoughness, woodDiffuse);\n#endif\n outRadianceLight += max(vec3(0.0), brdf);\n }\n#endif\n vec3 outRadianceEnv = vec3(0.0);\n#if defined( USE_ENVMAP )\n outRadianceEnv =\n#if defined(PRISMOPAQUE)\n Environment_Opaque(N, V, clamp(NdotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness,\n opaqueF0, opaqueAlbedo, surfaceAnisotropy, surfaceRotation, Tu, Tv);\n#elif defined(PRISMMETAL)\n Environment_Metal(N, V, clamp(NdotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness, metalF0, surfaceAnisotropy, surfaceRotation, Tu, Tv);\n#elif defined(PRISMLAYERED)\n Environment_Layered(N, V, clamp(NdotV, 0.0, 1.0), N2, clamp(N2dotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness,\n layeredF0, surfaceAnisotropy, surfaceRotation, Tu, Tv, layeredDiffuse, layeredRoughness, layeredAnisotropy,\n layeredRotation, bottom_f0, layeredFraction);\n#elif defined(PRISMTRANSPARENT)\n Environment_Transparent(N, V, clamp(NdotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation, Tu, Tv);\n#elif defined(PRISMGLAZING)\n Environment_Glazing(N, V, clamp(NdotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation, Tu, Tv,\n glazingF0, transmissionF, transmissionAlpha, glazingAdjustedColor, glazingIlluminace);\n#elif defined(PRISMWOOD)\n Environment_Wood(N, V, clamp(NdotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness, woodDiffuse, surfaceAnisotropy, surfaceRotation, Tu, Tv);\n#endif\n#endif\n#if defined(PRISMOPAQUE)\n vec3 luminanceModifier;\n #if defined( USE_OPAQUE_LUMINANCE_MODIFIER_MAP )\n vec2 uv_opaque_luminance_modifier_map = (opaque_luminance_modifier_map_texMatrix * vec3(uv, 1.0)).xy;\n OPAQUE_LUMINANCE_MODIFIER_CLAMP_TEST;\n luminanceModifier = texture(opaque_luminance_modifier_map, uv_opaque_luminance_modifier_map).xyz;\n luminanceModifier = SRGBToLinear(luminanceModifier);\n if(opaque_luminance_modifier_map_invert) luminanceModifier = vec3(1.0) - luminanceModifier;\n #else\n luminanceModifier = opaque_luminance_modifier;\n #endif\n outRadianceEnv += luminanceModifier * opaque_luminance;\n#endif\n float surface_cutout = 1.0;\n #if defined( USE_SURFACE_CUTOUT_MAP )\n vec2 uv_surface_cutout_map = (surface_cutout_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_CUTOUT_CLAMP_TEST;\n vec3 surface_cutout_v3 = texture(surface_cutout_map, uv_surface_cutout_map).xyz;\n if(surface_cutout_map_invert) surface_cutout_v3 = vec3(1.0) - surface_cutout_v3;\n surface_cutout = average(surface_cutout_v3);\n #else\n surface_cutout = surface_cutout;\n #endif\n#if defined( USE_SURFACE_CUTOUT_MAP )\n if(surface_cutout < 0.01) discard;\n#endif\n outFragColor = vec4( outRadianceLight + outRadianceEnv, opacity*surface_cutout );\n#if TONEMAP_OUTPUT == 1\n outFragColor.xyz = toneMapCanonOGS_WithGamma_WithColorPerserving(exposureBias * outFragColor.xyz);\n#elif TONEMAP_OUTPUT == 2\n outFragColor.xyz = toneMapCanonFilmic_WithGamma(exposureBias * outFragColor.xyz);\n#endif\n#ifdef USE_FOG\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n outFragColor = mix( outFragColor, vec4( fogColor, outFragColor.w ), fogFactor );\n#endif\n#if defined(PRISMTRANSPARENT)\n applyPrismTransparency(outFragColor, transparent_color, transparent_ior);\n outFragColor.a *= surface_cutout;\n#ifdef USE_TILING\n outFragColor.a *= v_TilingMap.a;\n#endif\n#elif defined( PRISMGLAZING )\n applyPrismGlazingOpacity(outFragColor, transmissionF, transmissionAlpha, NdotV, glazingIlluminace);\n#ifdef USE_TILING\n outFragColor.a *= v_TilingMap.a;\n#endif\n#endif\n#include \n#include \n#include \n}\n"},4086:e=>{e.exports="out vec3 vViewPosition;\nout vec3 vNormal;\n#if defined(PRISMWOOD) && !defined(NO_UVW)\nout vec3 vUvw;\n#if defined(PRISMWOODBUMP)\nout vec3 vtNormal;\nout mat3 mNormalMatrix;\n#endif\n#endif\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\n#if defined( USE_SURFACE_ALBEDO_MAP ) || defined( USE_SURFACE_ROUGHNESS_MAP ) || defined( USE_SURFACE_CUTOUT_MAP ) || defined( USE_SURFACE_ANISOTROPY_MAP ) || defined( USE_SURFACE_ROTATION_MAP ) || defined( USE_OPAQUE_ALBEDO_MAP ) || defined( USE_OPAQUE_F0_MAP ) || defined( USE_OPAQUE_LUMINANCE_MODIFIER_MAP ) || defined( USE_LAYERED_BOTTOM_F0_MAP ) || defined( USE_LAYERED_F0_MAP ) || defined( USE_LAYERED_DIFFUSE_MAP ) || defined( USE_LAYERED_FRACTION_MAP ) || defined( USE_LAYERED_ROUGHNESS_MAP ) || defined( USE_LAYERED_ANISOTROPY_MAP ) || defined( USE_LAYERED_ROTATION_MAP ) || defined( USE_METAL_F0_MAP ) || defined( USE_SURFACE_NORMAL_MAP ) || defined( USE_LAYERED_NORMAL_MAP )\n #define USE_MAP\n#endif\n#if defined(USE_MAP) || defined(USE_TILING)\nout vec2 vUv;\n#endif\n#ifdef MRT_NORMALS\nout float depth;\n#endif\n#include \n#include \n#include \n#include \n#include \n#if !defined(USE_MAP) && (MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0) || defined( PRISMWOODBUMP )\nout vec3 vTangent;\nout vec3 vBitangent;\nvoid ComputeTangents(vec3 normal, out vec3 u, out vec3 v)\n{\n float scale = normal.z < 0.0 ? -1.0 : 1.0;\n vec3 temp = scale * normal;\n float e = temp.z;\n float h = 1.0/(1.0 + e);\n float hvx = h * temp.y;\n float hvxy = hvx * -temp.x;\n u = vec3(e + hvx * temp.y, hvxy, -temp.x);\n v = vec3(hvxy, e + h * temp.x * temp.x, -temp.y);\n u *= scale;\n v *= scale;\n}\n#endif\nvoid main() {\n#if defined(USE_MAP) || defined(USE_TILING)\n vUv = uv;\n#endif\n#ifdef UNPACK_NORMALS\n vec3 objectNormal = decodeNormal(normal);\n#else\n vec3 objectNormal = normal;\n#endif\n#ifdef FLIP_SIDED\n objectNormal = -objectNormal;\n#endif\n objectNormal = getInstanceNormal(objectNormal);\n vec3 instPos = getInstancePos(position);\n#if defined(PRISMWOOD) && !defined(NO_UVW)\n#if defined(PRISMWOODBUMP)\n vUvw = instPos;\n vtNormal = normalize(objectNormal);\n mNormalMatrix = normalMatrix;\n#else\n vUvw = uvw;\n#endif\n#endif\n vec3 transformedNormal = normalMatrix * objectNormal;\n vNormal = normalize( transformedNormal );\n vec4 mvPosition = modelViewMatrix * vec4( instPos, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n#include \n vViewPosition = -mvPosition.xyz;\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( instPos, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n#if !defined(USE_MAP) && (MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0) || defined ( PRISMWOODBUMP )\n vec3 Tu, Tv;\n#if defined(PRISMWOODBUMP)\n ComputeTangents(vtNormal, Tu, Tv);\n#else\n ComputeTangents(vNormal, Tu, Tv);\n#endif\n vTangent = Tu;\n vBitangent = Tv;\n#endif\n#ifdef MRT_NORMALS\n depth = mvPosition.z;\n#endif\n#include \n#include \n}\n"}},n={};function o(a){var r=n[a];if(void 0!==r)return r.exports;var t=n[a]={exports:{}};return e[a](t,t.exports,o),t.exports}o.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return o.d(n,{a:n}),n},o.d=(e,n)=>{for(var a in n)o.o(n,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:n[a]})},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};(()=>{"use strict";o.r(a);var e={};o.r(e),o.d(e,{PrismShader:()=>c,clonePrismMaterial:()=>m,createPrismMaterial:()=>p});var n={};o.r(n),o.d(n,{GetPrismMapChunk:()=>E,PrismMaps:()=>y,PrismMaterial:()=>T});var r={};o.r(r),o.d(r,{convertPrismMaterial:()=>ae,convertPrismTexture:()=>ye,disposePrismWoodTextures:()=>ne,materialTilingPattern:()=>ie,swapPrismWoodTextures:()=>ee});var t=o(4086),i=o.n(t),l=o(9809),s=o.n(l);const _=Autodesk.Viewing.Private,d=_.ShaderChunks,{GetPrismMapUniforms:f}=_.PrismUtil;function u(e){var n=e+"_texMatrix",o=e+"_bumpScale",a=e+"_bumpmapType",r={};return r[e]={type:"t",value:null},r[n]={type:"m3",value:new THREE.Matrix3},r[o]={type:"v2",value:new THREE.Vector2(1,1)},r[a]={type:"i",value:0},r}let c={uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.lights,THREE.UniformsLib.fog,d.CutPlanesUniforms,d.IdUniforms,d.ThemingUniform,d.ShadowMapUniforms,f("surface_albedo_map"),f("surface_roughness_map"),f("surface_cutout_map"),f("surface_anisotropy_map"),f("surface_rotation_map"),f("opaque_albedo_map"),f("opaque_f0_map"),f("opaque_luminance_modifier_map"),f("layered_bottom_f0_map"),f("layered_f0_map"),f("layered_diffuse_map"),f("layered_fraction_map"),f("layered_roughness_map"),f("layered_anisotropy_map"),f("layered_rotation_map"),f("metal_f0_map"),f("wood_curly_distortion_map"),f("glazing_f0_map"),f("glazing_transmission_color_map"),f("glazing_transmission_roughness_map"),u("surface_normal_map"),u("layered_normal_map"),f("TilingMap"),f("TilingNormalMap"),f("TilingRandomMap"),{surface_albedo:{type:"c",value:new THREE.Color(1118481)},surface_roughness:{type:"f",value:1},surface_anisotropy:{type:"f",value:1},surface_rotation:{type:"f",value:1},opaque_albedo:{type:"c",value:new THREE.Color(1118481)},opaque_f0:{type:"f",value:1},opaque_luminance_modifier:{type:"c",value:new THREE.Color(1118481)},opaque_luminance:{type:"f",value:1},metal_f0:{type:"c",value:new THREE.Color(1118481)},layered_f0:{type:"f",value:1},layered_diffuse:{type:"c",value:new THREE.Color(0)},layered_fraction:{type:"f",value:1},layered_bottom_f0:{type:"c",value:new THREE.Color(1118481)},layered_roughness:{type:"f",value:1},layered_anisotropy:{type:"f",value:1},layered_rotation:{type:"f",value:1},transparent_ior:{type:"f",value:2},transparent_color:{type:"c",value:new THREE.Color(1118481)},transparent_distance:{type:"f",value:1},glazing_f0:{type:"c",value:new THREE.Color(16777215)},glazing_transmission_roughness:{type:"f",value:0},glazing_transmission_color:{type:"c",value:new THREE.Color(16777215)},wood_fiber_cosine_enable:{type:"i",value:1},wood_fiber_cosine_bands:{type:"i",value:2},wood_fiber_cosine_weights:{type:"v4",value:new THREE.Vector4(2.5,.5,1,1)},wood_fiber_cosine_frequencies:{type:"v4",value:new THREE.Vector4(15,4,1,1)},wood_fiber_perlin_enable:{type:"i",value:1},wood_fiber_perlin_bands:{type:"i",value:3},wood_fiber_perlin_weights:{type:"v4",value:new THREE.Vector4(3,1,.2,1)},wood_fiber_perlin_frequencies:{type:"v4",value:new THREE.Vector4(40,20,3.5,1)},wood_fiber_perlin_scale_z:{type:"f",value:.3},wood_growth_perlin_enable:{type:"i",value:1},wood_growth_perlin_bands:{type:"i",value:3},wood_growth_perlin_weights:{type:"v4",value:new THREE.Vector4(1,2,1,1)},wood_growth_perlin_frequencies:{type:"v4",value:new THREE.Vector4(1,5,13,1)},wood_latewood_ratio:{type:"f",value:.238},wood_earlywood_sharpness:{type:"f",value:.395},wood_latewood_sharpness:{type:"f",value:.109},wood_ring_thickness:{type:"f",value:.75},wood_earlycolor_perlin_enable:{type:"i",value:1},wood_earlycolor_perlin_bands:{type:"i",value:2},wood_earlycolor_perlin_weights:{type:"v4",value:new THREE.Vector4(.3,.5,.15,1)},wood_earlycolor_perlin_frequencies:{type:"v4",value:new THREE.Vector4(8,3,.35,1)},wood_early_color:{type:"c",value:new THREE.Color(.286,.157,.076)},wood_use_manual_late_color:{type:"i",value:0},wood_manual_late_color:{type:"c",value:new THREE.Color(.62,.35,.127)},wood_latecolor_perlin_enable:{type:"i",value:1},wood_latecolor_perlin_bands:{type:"i",value:1},wood_latecolor_perlin_weights:{type:"v4",value:new THREE.Vector4(.75,.55,1,1)},wood_latecolor_perlin_frequencies:{type:"v4",value:new THREE.Vector4(4.5,.05,1,1)},wood_late_color_power:{type:"f",value:1.25},wood_diffuse_perlin_enable:{type:"i",value:1},wood_diffuse_perlin_bands:{type:"i",value:3},wood_diffuse_perlin_weights:{type:"v4",value:new THREE.Vector4(.15,.2,.05,1)},wood_diffuse_perlin_frequencies:{type:"v4",value:new THREE.Vector4(.05,.1,3,1)},wood_diffuse_perlin_scale_z:{type:"f",value:.2},wood_use_pores:{type:"i",value:1},wood_pore_type:{type:"i",value:0},wood_pore_radius:{type:"f",value:.04},wood_pore_cell_dim:{type:"f",value:.15},wood_pore_color_power:{type:"f",value:1.45},wood_pore_depth:{type:"f",value:.02},wood_use_rays:{type:"i",value:1},wood_ray_color_power:{type:"f",value:1.1},wood_ray_seg_length_z:{type:"f",value:5},wood_ray_num_slices:{type:"f",value:160},wood_ray_ellipse_z2x:{type:"f",value:10},wood_ray_ellipse_radius_x:{type:"f",value:.2},wood_use_latewood_bump:{type:"i",value:1},wood_latewood_bump_depth:{type:"f",value:.01},wood_use_groove_roughness:{type:"i",value:1},wood_groove_roughness:{type:"f",value:.85},wood_diffuse_lobe_weight:{type:"f",value:.9},wood_curly_distortion_enable:{type:"i",value:0},wood_curly_distortion_scale:{type:"f",value:.25},wood_ring_fraction:{type:"v4",value:new THREE.Vector4(0,0,0,0)},wood_fall_rise:{type:"v2",value:new THREE.Vector2(0,0)},permutationMap:{type:"t",value:null},gradientMap:{type:"t",value:null},perm2DMap:{type:"t",value:null},permGradMap:{type:"t",value:null},importantSamplingRandomMap:{type:"t",value:null},importantSamplingSolidAngleMap:{type:"t",value:null},irradianceMap:{type:"t",value:null},envMap:{type:"t",value:null},exposureBias:{type:"f",value:1},envMapExposure:{type:"f",value:1},envRotationSin:{type:"f",value:0},envRotationCos:{type:"f",value:1},envExponentMin:{type:"f",value:1},envExponentMax:{type:"f",value:512},envExponentCount:{type:"f",value:10},tilingOverallTransform:{type:"m4",value:new THREE.Matrix4},uv2tile:{type:"v4",value:new THREE.Vector4(1,0,0,1)},tile2uv:{type:"v4",value:new THREE.Vector4(1,0,0,1)},tileAlignOffset:{type:"v2",value:new THREE.Vector2(0,0)},tilingUVTransform:{type:"m4",value:new THREE.Matrix4},tilingRandomAxisS:{type:"v2",value:new THREE.Vector2(0,0)},tilingRandomAxisT:{type:"v2",value:new THREE.Vector2(0,0)},tilingRandomAlignmentOffset:{type:"v2",value:new THREE.Vector2(0,0)}}]),vertexShader:i(),fragmentShader:s()};THREE.ShaderLib.prism=c;let p=function(){return console.warn("createPrismMaterial has been deprecated. Use new PrismMaterial instead"),new T},m=function(e){return console.warn("clonePrismMaterial has been deprecated. Use new PrismMaterial.clone instead"),e.clone()};function v(e,n,o){e[o].value=n[o],null!=n[o]&&(e[o+"_texMatrix"].value=n[o].matrix,e[o+"_invert"].value=n[o].invert)}function g(e,n,o){e[o].value=n[o],null!=n[o]&&(e[o+"_texMatrix"].value=n[o].matrix,e[o+"_bumpScale"].value=n[o].bumpScale,e[o+"_bumpmapType"].value=n[o].bumpmapType)}let E=function(e,n,o){var a="uv_"+e+"_map",r="";return n&&o?r="if ("+a+".x < 0.0 || "+a+".x > 1.0 || "+a+".y < 0.0 || "+a+".y > 1.0) { discard; }":n?r="if ("+a+".x < 0.0 || "+a+".x > 1.0) { discard; }":o&&(r="if ("+a+".y < 0.0 || "+a+".y > 1.0) { discard; }"),"#define "+e.toUpperCase()+"_CLAMP_TEST "+r},y=["opaque_luminance_modifier","surface_albedo","surface_roughness","surface_anisotropy","surface_rotation","opaque_f0","opaque_albedo","metal_f0","layered_f0","layered_diffuse","layered_roughness","layered_anisotropy","layered_rotation","layered_bottom_f0","layered_fraction","surface_cutout","glazing_transmission_color","glazing_f0","glazing_transmission_roughness","wood_curly_distortion"];var h=function(e){for(var n="\n",o=0;o0&&void 0!==arguments[0]?arguments[0]:{},...{vertexShader:c.vertexShader,fragmentShader:c.fragmentShader,uniforms:THREE.UniformsUtils.clone(c.uniforms)}}),this.type="PrismMaterial",this.defaultAttributeValues.uvw=[0,0,0],this.enable3DWoodBump=!1,this.enableImportantSampling=!1,this.mapList={},this.lights=!0}clone(){const e=new T;return e.copy(this),e}copy(e){switch(this.name=e.name,this.side=e.side,this.opacity=e.opacity,this.transparent=e.transparent,this.blending=e.blending,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.alphaTest=e.alphaTest,this.visible=e.visible,this.mapList=e.mapList,this.prismType=e.prismType,this.surface_albedo=e.surface_albedo,void 0!==e.surface_albedo_map&&(this.surface_albedo_map=e.surface_albedo_map),this.surface_roughness=e.surface_roughness,void 0!==e.surface_roughness_map&&(this.surface_roughness_map=e.surface_roughness_map),this.surface_anisotropy=e.surface_anisotropy,void 0!==e.surface_anisotropy_map&&(this.surface_anisotropy_map=e.surface_anisotropy_map),this.surface_rotation=e.surface_rotation,void 0!==e.surface_rotation_map&&(this.surface_rotation_map=e.surface_rotation_map),void 0!==e.surface_cutout_map&&(this.surface_cutout_map=e.surface_cutout_map),void 0!==e.surface_normal_map&&(this.surface_normal_map=e.surface_normal_map),this.uniforms.importantSamplingRandomMap.value=e.uniforms.importantSamplingRandomMap.value,this.uniforms.importantSamplingSolidAngleMap.value=e.uniforms.importantSamplingSolidAngleMap.value,this.prismType){case"PrismOpaque":this.opaque_albedo=(new THREE.Color).copy(e.opaque_albedo),this.opaque_luminance_modifier=(new THREE.Color).copy(e.opaque_luminance_modifier),this.opaque_f0=e.opaque_f0,this.opaque_luminance=e.opaque_luminance,void 0!==e.opaque_albedo_map&&(this.opaque_albedo_map=e.opaque_albedo_map),void 0!==e.opaque_luminance_modifier_map&&(this.opaque_luminance_modifier_map=e.opaque_luminance_modifier_map),void 0!==e.opaque_f0_map&&(this.opaque_f0_map=e.opaque_f0_map);break;case"PrismMetal":this.metal_f0=(new THREE.Color).copy(e.metal_f0),void 0!==e.metal_f0_map&&(this.metal_f0_map=e.metal_f0_map);break;case"PrismLayered":this.layered_f0=e.layered_f0,this.layered_diffuse=(new THREE.Color).copy(e.layered_diffuse),this.layered_fraction=e.layered_fraction,this.layered_bottom_f0=(new THREE.Color).copy(e.layered_bottom_f0),this.layered_roughness=e.layered_roughness,this.layered_anisotropy=e.layered_anisotropy,this.layered_rotation=e.layered_rotation,void 0!==e.layered_bottom_f0_map&&(this.layered_bottom_f0_map=e.layered_bottom_f0_map),void 0!==e.layered_f0_map&&(this.layered_f0_map=e.layered_f0_map),void 0!==e.layered_diffuse_map&&(this.layered_diffuse_map=e.layered_diffuse_map),void 0!==e.layered_fraction_map&&(this.layered_fraction_map=e.layered_fraction_map),void 0!==e.layered_rotationlayered_roughness_map&&(this.layered_rotationlayered_roughness_map=e.layered_rotationlayered_roughness_map),void 0!==e.layered_anisotropy_map&&(this.layered_anisotropy_map=e.layered_anisotropy_map),void 0!==e.layered_rotation_map&&(this.layered_rotation_map=e.layered_rotation_map),void 0!==e.layered_normal_map&&(this.layered_normal_map=e.layered_normal_map);break;case"PrismTransparent":this.transparent_color=(new THREE.Color).copy(e.transparent_color),this.transparent_distance=e.transparent_distance,this.transparent_ior=e.transparent_ior,this.transparent=e.transparent,this.twoPassTransparency=e.twoPassTransparency;break;case"PrismGlazing":this.glazing_f0=(new THREE.Color).copy(e.glazing_f0),this.glazing_transmission_color=(new THREE.Color).copy(e.glazing_transmission_color),this.glazing_transmission_roughness=e.glazing_transmission_roughness,void 0!==e.glazing_f0_map&&(this.glazing_f0_map=e.glazing_f0_map),void 0!==e.glazing_transmission_color_map&&(this.glazing_transmission_color_map=e.glazing_transmission_color_map),void 0!==e.glazing_transmission_roughness_map&&(this.glazing_transmission_roughness_map=e.glazing_transmission_roughness_map);break;case"PrismWood":this.wood_fiber_cosine_enable=e.wood_fiber_cosine_enable,this.wood_fiber_cosine_bands=e.wood_fiber_cosine_bands,this.wood_fiber_cosine_weights=(new THREE.Vector4).copy(e.wood_fiber_cosine_weights),this.wood_fiber_cosine_frequencies=(new THREE.Vector4).copy(e.wood_fiber_cosine_frequencies),this.wood_fiber_perlin_enable=e.wood_fiber_perlin_enable,this.wood_fiber_perlin_bands=e.wood_fiber_perlin_bands,this.wood_fiber_perlin_weights=(new THREE.Vector4).copy(e.wood_fiber_perlin_weights),this.wood_fiber_perlin_frequencies=(new THREE.Vector4).copy(e.wood_fiber_perlin_frequencies),this.wood_fiber_perlin_scale_z=e.wood_fiber_perlin_scale_z,this.wood_growth_perlin_enable=e.wood_growth_perlin_enable,this.wood_growth_perlin_bands=e.wood_growth_perlin_bands,this.wood_growth_perlin_weights=(new THREE.Vector4).copy(e.wood_growth_perlin_weights),this.wood_growth_perlin_frequencies=(new THREE.Vector4).copy(e.wood_growth_perlin_frequencies),this.wood_latewood_ratio=e.wood_latewood_ratio,this.wood_earlywood_sharpness=e.wood_earlywood_sharpness,this.wood_latewood_sharpness=e.wood_latewood_sharpness,this.wood_ring_thickness=e.wood_ring_thickness,this.wood_earlycolor_perlin_enable=e.wood_earlycolor_perlin_enable,this.wood_earlycolor_perlin_bands=e.wood_earlycolor_perlin_bands,this.wood_earlycolor_perlin_weights=(new THREE.Vector4).copy(e.wood_earlycolor_perlin_weights),this.wood_earlycolor_perlin_frequencies=(new THREE.Vector4).copy(e.wood_earlycolor_perlin_frequencies),this.wood_early_color=(new THREE.Color).copy(e.wood_early_color),this.wood_use_manual_late_color=e.wood_use_manual_late_color,this.wood_manual_late_color=(new THREE.Color).copy(e.wood_manual_late_color),this.wood_latecolor_perlin_enable=e.wood_latecolor_perlin_enable,this.wood_latecolor_perlin_bands=e.wood_latecolor_perlin_bands,this.wood_latecolor_perlin_weights=(new THREE.Vector4).copy(e.wood_latecolor_perlin_weights),this.wood_latecolor_perlin_frequencies=(new THREE.Vector4).copy(e.wood_latecolor_perlin_frequencies),this.wood_late_color_power=e.wood_late_color_power,this.wood_diffuse_perlin_enable=e.wood_diffuse_perlin_enable,this.wood_diffuse_perlin_bands=e.wood_diffuse_perlin_bands,this.wood_diffuse_perlin_weights=(new THREE.Vector4).copy(e.wood_diffuse_perlin_weights),this.wood_diffuse_perlin_frequencies=(new THREE.Vector4).copy(e.wood_diffuse_perlin_frequencies),this.wood_diffuse_perlin_scale_z=e.wood_diffuse_perlin_scale_z,this.wood_use_pores=e.wood_use_pores,this.wood_pore_type=e.wood_pore_type,this.wood_pore_radius=e.wood_pore_radius,this.wood_pore_cell_dim=e.wood_pore_cell_dim,this.wood_pore_color_power=e.wood_pore_color_power,this.wood_pore_depth=e.wood_pore_depth,this.wood_use_rays=e.wood_use_rays,this.wood_ray_color_power=e.wood_ray_color_power,this.wood_ray_seg_length_z=e.wood_ray_seg_length_z,this.wood_ray_num_slices=e.wood_ray_num_slices,this.wood_ray_ellipse_z2x=e.wood_ray_ellipse_z2x,this.wood_ray_ellipse_radius_x=e.wood_ray_ellipse_radius_x,this.wood_use_latewood_bump=e.wood_use_latewood_bump,this.wood_latewood_bump_depth=e.wood_latewood_bump_depth,this.wood_use_groove_roughness=e.wood_use_groove_roughness,this.wood_groove_roughness=e.wood_groove_roughness,this.wood_diffuse_lobe_weight=e.wood_diffuse_lobe_weight,this.uniforms.permutationMap.value=e.uniforms.permutationMap.value,this.uniforms.gradientMap.value=e.uniforms.gradientMap.value,this.uniforms.perm2DMap.value=e.uniforms.perm2DMap.value,this.uniforms.permGradMap.value=e.uniforms.permGradMap.value,void 0!==e.wood_curly_distortion_map&&(this.wood_curly_distortion_map=e.wood_curly_distortion_map,this.wood_curly_distortion_enable=e.wood_curly_distortion_enable,this.wood_curly_distortion_scale=e.wood_curly_distortion_scale),this.wood_ring_fraction=e.wood_ring_fraction,this.wood_fall_rise=e.wood_fall_rise;break;default:console.warn("Unknown prism type: "+e.prismType)}this.envExponentMin=e.envExponentMin,this.envExponentMax=e.envExponentMax,this.envExponentCount=e.envExponentCount,this.envMap=e.envMap,e.useTiling&&(this.useTiling=e.useTiling,this.tilingOverallTransform=(new THREE.Matrix4).copy(e.tilingOverallTransform),this.TilingMap=e.TilingMap,this.TilingMap_texMatrix=(new THREE.Matrix3).copy(e.TilingMap_texMatrix),this.hasRoundCorner=e.hasRoundCorner,this.hasRoundCorner&&(this.TilingNormalMap=e.TilingNormalMap,this.TilingNormalMap_texMatrix=(new THREE.Matrix3).copy(e.TilingNormalMap_texMatrix)),this.useRandomOffset=e.useRandomOffset,this.useRandomOffset&&(this.TilingRandomMap=e.TilingRandomMap,this.TilingRandomMap_texMatrix=(new THREE.Matrix3).copy(e.TilingRandomMap_texMatrix),this.tilingRandomAxisS=(new THREE.Vector2).copy(e.tilingRandomAxisS),this.tilingRandomAxisT=(new THREE.Vector2).copy(e.tilingRandomAxisT),this.tilingRandomAlignmentOffset=(new THREE.Vector2).copy(e.tilingRandomAlignmentOffset)),this.uv2tile=e.uv2tile,this.tile2uv=e.tile2uv,this.tilingRepeatRange=[e.tilingRepeatRange[0],e.tilingRepeatRange[1],e.tilingRepeatRange[2],e.tilingRepeatRange[3]],this.tileAlignOffset=(new THREE.Vector2).copy(e.tileAlignOffset),this.tilingUVTransform=(new THREE.Matrix4).copy(e.tilingUVTransform)),this.defines=e.defines}refreshUniforms(e){const n=this;switch(e.exposureBias.value=n.exposureBias,e.opacity.value=n.opacity,e.surface_albedo.value=n.surface_albedo,e.surface_roughness.value=n.surface_roughness,e.surface_anisotropy.value=n.surface_anisotropy,e.surface_rotation.value=n.surface_rotation,v(e,n,"surface_albedo_map"),v(e,n,"surface_roughness_map"),v(e,n,"surface_cutout_map"),v(e,n,"surface_anisotropy_map"),v(e,n,"surface_rotation_map"),g(e,n,"surface_normal_map"),n.prismType){case"PrismOpaque":e.opaque_albedo.value=n.opaque_albedo,e.opaque_luminance_modifier.value=n.opaque_luminance_modifier,e.opaque_f0.value=n.opaque_f0,e.opaque_luminance.value=n.opaque_luminance,v(e,n,"opaque_albedo_map"),v(e,n,"opaque_luminance_modifier_map"),v(e,n,"opaque_f0_map");break;case"PrismMetal":e.metal_f0.value=n.metal_f0,v(e,n,"metal_f0_map");break;case"PrismLayered":e.layered_f0.value=n.layered_f0,e.layered_diffuse.value=n.layered_diffuse,e.layered_fraction.value=n.layered_fraction,e.layered_bottom_f0.value=n.layered_bottom_f0,e.layered_roughness.value=n.layered_roughness,e.layered_anisotropy.value=n.layered_anisotropy,e.layered_rotation.value=n.layered_rotation,v(e,n,"layered_bottom_f0_map"),v(e,n,"layered_f0_map"),v(e,n,"layered_diffuse_map"),v(e,n,"layered_fraction_map"),v(e,n,"layered_roughness_map"),v(e,n,"layered_anisotropy_map"),v(e,n,"layered_rotation_map"),g(e,n,"layered_normal_map");break;case"PrismTransparent":e.transparent_color.value=n.transparent_color,e.transparent_distance.value=n.transparent_distance,e.transparent_ior.value=n.transparent_ior;break;case"PrismGlazing":e.glazing_f0.value=n.glazing_f0,e.glazing_transmission_color.value=n.glazing_transmission_color,e.glazing_transmission_roughness.value=n.glazing_transmission_roughness,v(e,n,"glazing_f0_map"),v(e,n,"glazing_transmission_color_map"),v(e,n,"glazing_transmission_roughness_map");break;case"PrismWood":e.wood_fiber_cosine_enable.value=n.wood_fiber_cosine_enable,e.wood_fiber_cosine_bands.value=n.wood_fiber_cosine_bands,e.wood_fiber_cosine_weights.value=n.wood_fiber_cosine_weights,e.wood_fiber_cosine_frequencies.value=n.wood_fiber_cosine_frequencies,e.wood_fiber_perlin_enable.value=n.wood_fiber_perlin_enable,e.wood_fiber_perlin_bands.value=n.wood_fiber_perlin_bands,e.wood_fiber_perlin_weights.value=n.wood_fiber_perlin_weights,e.wood_fiber_perlin_frequencies.value=n.wood_fiber_perlin_frequencies,e.wood_fiber_perlin_scale_z.value=n.wood_fiber_perlin_scale_z,e.wood_growth_perlin_enable.value=n.wood_growth_perlin_enable,e.wood_growth_perlin_bands.value=n.wood_growth_perlin_bands,e.wood_growth_perlin_weights.value=n.wood_growth_perlin_weights,e.wood_growth_perlin_frequencies.value=n.wood_growth_perlin_frequencies,e.wood_latewood_ratio.value=n.wood_latewood_ratio,e.wood_earlywood_sharpness.value=n.wood_earlywood_sharpness,e.wood_latewood_sharpness.value=n.wood_latewood_sharpness,e.wood_ring_thickness.value=n.wood_ring_thickness,e.wood_earlycolor_perlin_enable.value=n.wood_earlycolor_perlin_enable,e.wood_earlycolor_perlin_bands.value=n.wood_earlycolor_perlin_bands,e.wood_earlycolor_perlin_weights.value=n.wood_earlycolor_perlin_weights,e.wood_earlycolor_perlin_frequencies.value=n.wood_earlycolor_perlin_frequencies,e.wood_early_color.value=n.wood_early_color,e.wood_use_manual_late_color.value=n.wood_use_manual_late_color,e.wood_manual_late_color.value=n.wood_manual_late_color,e.wood_latecolor_perlin_enable.value=n.wood_latecolor_perlin_enable,e.wood_latecolor_perlin_bands.value=n.wood_latecolor_perlin_bands,e.wood_latecolor_perlin_weights.value=n.wood_latecolor_perlin_weights,e.wood_latecolor_perlin_frequencies.value=n.wood_latecolor_perlin_frequencies,e.wood_late_color_power.value=n.wood_late_color_power,e.wood_diffuse_perlin_enable.value=n.wood_diffuse_perlin_enable,e.wood_diffuse_perlin_bands.value=n.wood_diffuse_perlin_bands,e.wood_diffuse_perlin_weights.value=n.wood_diffuse_perlin_weights,e.wood_diffuse_perlin_frequencies.value=n.wood_diffuse_perlin_frequencies,e.wood_diffuse_perlin_scale_z.value=n.wood_diffuse_perlin_scale_z,e.wood_use_pores.value=n.wood_use_pores,e.wood_pore_type.value=n.wood_pore_type,e.wood_pore_radius.value=n.wood_pore_radius,e.wood_pore_cell_dim.value=n.wood_pore_cell_dim,e.wood_pore_color_power.value=n.wood_pore_color_power,e.wood_pore_depth.value=n.wood_pore_depth,e.wood_use_rays.value=n.wood_use_rays,e.wood_ray_color_power.value=n.wood_ray_color_power,e.wood_ray_seg_length_z.value=n.wood_ray_seg_length_z,e.wood_ray_num_slices.value=n.wood_ray_num_slices,e.wood_ray_ellipse_z2x.value=n.wood_ray_ellipse_z2x,e.wood_ray_ellipse_radius_x.value=n.wood_ray_ellipse_radius_x,e.wood_use_latewood_bump.value=n.wood_use_latewood_bump,e.wood_latewood_bump_depth.value=n.wood_latewood_bump_depth,e.wood_use_groove_roughness.value=n.wood_use_groove_roughness,e.wood_groove_roughness.value=n.wood_groove_roughness,e.wood_diffuse_lobe_weight.value=n.wood_diffuse_lobe_weight,v(e,n,"wood_curly_distortion_map"),null!=e.wood_curly_distortion_map.value&&(e.wood_curly_distortion_map.value.minFilter=THREE.NearestFilter,e.wood_curly_distortion_map.value.magFilter=THREE.NearestFilter,e.wood_curly_distortion_enable.value=n.wood_curly_distortion_enable,e.wood_curly_distortion_scale.value=n.wood_curly_distortion_scale);var o=1-n.wood_latewood_ratio,a=n.wood_earlywood_sharpness*o,r=n.wood_latewood_sharpness*n.wood_latewood_ratio,t=o+r;e.wood_ring_fraction.value=new THREE.Vector4(o,a,r,t),e.wood_fall_rise.value=new THREE.Vector2(o-a,n.wood_latewood_ratio-r);break;default:console.warn("Unknown prism type: "+n.prismType)}n.useTiling&&(e.tilingOverallTransform.value=n.tilingOverallTransform,e.TilingMap.value=n.TilingMap,e.TilingMap_texMatrix.value=n.TilingMap_texMatrix,n.hasRoundCorner&&(e.TilingNormalMap.value=n.TilingNormalMap,e.TilingNormalMap_texMatrix.value=n.TilingNormalMap_texMatrix),n.useRandomOffset&&(e.TilingRandomMap.value=n.TilingRandomMap,e.TilingRandomMap_texMatrix.value=n.TilingRandomMap_texMatrix,e.tilingRandomAxisS.value=n.tilingRandomAxisS,e.tilingRandomAxisT.value=n.tilingRandomAxisT,e.tilingRandomAlignmentOffset.value=n.tilingRandomAlignmentOffset),e.uv2tile.value=n.uv2tile,e.tile2uv.value=n.tile2uv,e.tileAlignOffset.value=n.tileAlignOffset,e.tilingUVTransform.value=n.tilingUVTransform),e.envExponentMin.value=n.envExponentMin,e.envExponentMax.value=n.envExponentMax,e.envExponentCount.value=n.envExponentCount,function(e,n){e.envMap&&(e.envMap.value=n.envMap),e.irradianceMap&&(e.irradianceMap.value=n.irradianceMap),e.envMapExposure&&(e.envMapExposure.value=n.envMapExposure),e.envRotationSin&&e.envRotationCos&&(e.envRotationSin.value=n.envRotationSin,e.envRotationCos.value=n.envRotationCos)}(e,n)}onBeforeCompile(e,n){super.onBeforeCompile(e,n),function(e,n){if(n.textureMaps)for(var o=0;oMath.abs(e.distance)||Math.abs(this.distance)===Math.abs(e.distance)&&this.dot>e.dot},lessThanOrEquals:function(e){return Math.abs(this.distance)Math.abs(e.distance)||Math.abs(this.distance)==Math.abs(e.distance)&&this.dot>=e.dot}};const A=0,S=1,b=2,N=3,P=4,I=5,H=6,L=7;function O(e,n,o){this.p=[],this.p[0]=e.clone(),this.p[1]=n.clone(),this.color=o}function U(e,n){return(n.x-e.x)*(e.y+n.y)}function D(){this.edges=[]}function V(e,n,o){return e.dot(n)<=0||Math.abs(M(e,n))>o}function z(e,n){return F(e,n,A)}function F(e,n,o){let a=e&o;if(a==S||a==b||a==P)return[e=a^L,n];if(e==A||e==L){return[e=[H,I,N][n%3],n=Math.floor(n/3)]}let r=e<<1+(1&n);return[e=(r|r>>3)&L,n>>=1]}function C(){this.minDistance=new w,this.nearEdge=null,this.nearParam=0}function G(e,n,o){return Math.max(Math.min(e,n),Math.min(Math.max(e,n),o))}function q(e,n){let o=n.point(0),a=n.point(1),r=e,t=e.clone().sub(o),i=a.clone().sub(o),l=t.dot(i)/i.dot(i);return l<0?t.length():l>1?r.clone().sub(a).length():Math.abs(x(i,!1,!1).dot(t))}function B(){this.contours=[],this.windings=[],this.inverseYAxis=!1}O.prototype={constructor:O,set:function(e){return this.color=e,this},clone:function(){return new this.constructor(this.p[0],this.p[1],this.color)},point:function(e){return this.p[0].clone().lerp(this.p[1],e)},direction:function(){return this.p[1].clone().sub(this.p[0])},signedDistance:function(e){let n=e.clone().sub(this.p[0]),o=this.direction(),a=n.dot(o)/o.dot(o),r=this.p[a>.5?1:0].clone().sub(e),t=r.length();if(a>0&&a<1){let e=x(o,!1,!1).dot(n);if(Math.abs(e)0?1:0)-1,l=new w;return l.set(i*t,Math.abs(o.normalize().dot(r.normalize(r)))),[l,a]},distanceToPseudoDistance:function(e,n,o){let a,r,t;if(o<0){r=this.direction().normalize();let o=n.clone().sub(this.p[0]);t=o.dot(r),t<0&&(a=M(o,r),Math.abs(a)<=Math.abs(e.distance)&&(e.distance=a,e.dot=0))}else if(o>1){r=this.direction().normalize();let o=n.clone().sub(this.p[1]);t=o.dot(r),t>0&&(a=M(o,r),Math.abs(a)<=Math.abs(e.distance)&&(e.distance=a,e.dot=0))}},moveStartPoint:function(e){this.p[0].copy(e)},moveEndPoint:function(e){this.p[1].copy(e)},splitInThirds:function(e,n,o){let a=this.point(1/3),r=this.point(2/3);new O(this.p[0],a,this.color),new O(a,r,this.color),new O(r,this.p[1],this.color)}},D.prototype={constructor:D,addEdge:function(e){this.edges.push(e)},winding:function(){if(0===this.edges.length)return 0;let e,n,o,a,r=0;if(1==this.edges.length)e=new THREE.Vector2,n=new THREE.Vector2,o=new THREE.Vector2,e.copy(this.edges[0].point(0)),n.copy(this.edges[0].point(1/3)),o.copy(this.edges[0].point(2/3)),r+=U(e,n),r+=U(n,o),r+=U(o,e);else if(2==this.edges.length)e=new THREE.Vector2,n=new THREE.Vector2,o=new THREE.Vector2,a=new THREE.Vector2,e.copy(this.edges[0].point(0)),n.copy(this.edges[0].point(.5)),o.copy(this.edges[1].point(0)),a.copy(this.edges[1].point(.5)),r+=U(e,n),r+=U(n,o),r+=U(o,a),r+=U(a,e);else{let e=new THREE.Vector2,n=new THREE.Vector2;e=this.edges[this.edges.length-1].point(0);for(let o=0;o0?1:t<0?-1:0;var t}},C.prototype={constructor:C,clear:function(){this.nearEdge=null,this.nearParam=0},copy:function(e){this.minDistance.copy(e.minDistance),this.nearEdge=e.nearEdge,this.nearParam=e.nearParam}},B.prototype={constructor:B,addContour:function(e){this.contours.push(e)},addBlankContour:function(){let e=new D;return this.contours.push(e),e},initialize:function(){for(let e=0;e0){let e=a.edges[a.edges.length-1].direction(1);for(let n=0;n=3){let n=a.edges.length;for(let o=0;o=1){let n=[];a.edges[0].splitInThirds(n[0+3*t],n[1+3*t],n[2+3*t]),a.edges.length>=2?(a.edges[1].splitInThirds(n[3-3*t],n[4-3*t],n[5-3*t]),n[0].color=n[1].color=e[0],n[2].color=n[3].color=e[1],n[4].color=n[5].color=e[2]):(n[0].color=e[0],n[1].color=e[1],n[2].color=e[2]),a.edges.clear();for(let e=0;e0&&r.lessThan(d.minDistance)&&(d.minDistance.copy(r),d.nearEdge=o,d.nearParam=t),(o.color&b)>0&&r.lessThan(f.minDistance)&&(f.minDistance.copy(r),f.nearEdge=o,f.nearParam=t),(o.color&P)>0&&r.lessThan(u.minDistance)&&(u.minDistance.copy(r),u.nearEdge=o,u.nearParam=t)}d.minDistance.lessThan(a.minDistance)&&a.copy(d),f.minDistance.lessThan(r.minDistance)&&r.copy(f),u.minDistance.lessThan(t.minDistance)&&t.copy(u);let p=Math.abs(G(d.minDistance.distance,f.minDistance.distance,u.minDistance.distance));p0&&p>=0&&Math.abs(p)=0&&Math.abs(s)<=Math.abs(l)){c.med=R,_=1;for(let e=0;e0&&o[e].med>c.med&&Math.abs(o[e].med)0&&s.cornerRoundingSize>0;let c=[];for(i=0,l=o.length;i=i){return new THREE.Vector2(e).sub(o).length()}return Math.sqrt(Math.max(r.dot(r)-t*t/i,0))}function se(e,n){let o=1e11,a=o,r=-1;for(let t=0;t=o||e[r].y=o)&&e[i].x+(o-e[i].y)/(e[r].y-e[i].y)*(e[r].x-e[i].x)>>32-n}function ue(e,n){let o,a,r;return o=a=r=3735928567+n,a+=e.y,o+=e.x,function(e,n,o){let a=4294967296;return o=((o^=n)-fe(n,14)+a)%a,o=((o^=n=((n^=e=((e^=o)-fe(o,11)+a)%a)-fe(e,25)+a)%a)-fe(n,16)+a)%a,((o^=n=((n^=e=((e^=o)-fe(o,4)+a)%a)-fe(e,14)+a)%a)-fe(n,24)+a)%a}(o,a,r)}function ce(e,n){let o=ue(e,33);n.x=(65535&o)>>>8,n.y=o>>>16>>>8}function pe(e,n){let o=512,a=512,r=new Uint8Array(1048576),t=new THREE.Vector2,i=new THREE.Vector2(107021*n,n),l=new THREE.Vector2,s=new THREE.Vector2,_=0;for(let e=0;eo?o:e{var e={8070:e=>{e.exports.l="mouseTracking"},9556:e=>{"use strict";var t=e.exports;t.ESCAPE_EVENT="escape",t.PROGRESS_UPDATE_EVENT="progress",t.FULLSCREEN_MODE_EVENT="fullScreenMode",t.NAVIGATION_MODE_CHANGED_EVENT="navmode",t.VIEWER_STATE_RESTORED_EVENT="viewerStateRestored",t.VIEWER_RESIZE_EVENT="viewerResize",t.VIEWER_INITIALIZED="viewerInitialized",t.VIEWER_UNINITIALIZED="viewerUninitialized",t.LOADER_LOAD_FILE_EVENT="loaderLoadFile",t.LOADER_LOAD_ERROR_EVENT="loaderLoadError",t.LOADER_REPAINT_REQUEST_EVENT="loaderRepaint",t.MODEL_ROOT_LOADED_EVENT="svfLoaded",t.GEOMETRY_LOADED_EVENT="geometryLoaded",t.TEXTURES_LOADED_EVENT="texturesLoaded",t.OBJECT_TREE_CREATED_EVENT="propertyDbLoaded",t.OBJECT_TREE_UNAVAILABLE_EVENT="propertyDbUnavailable",t.OBJECT_TREE_LOAD_PROGRESS_EVENT="propertyDbLoadProgress",t.MODEL_UNLOADED_EVENT="modelUnloaded",t.BEFORE_MODEL_UNLOAD_EVENT="beforeModelUnload",t.MODEL_ADDED_EVENT="modelAdded",t.MODEL_REMOVED_EVENT="modelRemoved",t.MODEL_LAYERS_LOADED_EVENT="modelLayersLoaded",t.MODEL_TRANSFORM_CHANGED_EVENT="modelTransformChanged",t.MODEL_PLACEMENT_CHANGED_EVENT="placementTransformChanged",t.MODEL_VIEWPORT_BOUNDS_CHANGED_EVENT="viewportBoundsChanged",t.MODEL_FRAGMENT_BOUNDING_BOXES_SET_EVENT="fragmentBoundingBoxesSet",t.EXTENSION_PRE_LOADED_EVENT="extensionPreLoaded",t.EXTENSION_LOADED_EVENT="extensionLoaded",t.EXTENSION_PRE_UNLOADED_EVENT="extensionPreUnloaded",t.EXTENSION_UNLOADED_EVENT="extensionUnloaded",t.EXTENSION_PRE_ACTIVATED_EVENT="extensionPreActivated",t.EXTENSION_ACTIVATED_EVENT="extensionActivated",t.EXTENSION_PRE_DEACTIVATED_EVENT="extensionPreDeactivated",t.EXTENSION_DEACTIVATED_EVENT="extensionDeactivated",t.SELECTION_CHANGED_EVENT="selection",t.AGGREGATE_SELECTION_CHANGED_EVENT="aggregateSelection",t.ISOLATE_EVENT="isolate",t.AGGREGATE_ISOLATION_CHANGED_EVENT="aggregateIsolation",t.HIDE_EVENT="hide",t.AGGREGATE_HIDDEN_CHANGED_EVENT="aggregateHidden",t.SHOW_EVENT="show",t.SHOW_PROPERTIES_EVENT="showProperties",t.SHOW_ALL_EVENT="showAll",t.HIDE_ALL_EVENT="hideAll",t.CAMERA_CHANGE_EVENT="cameraChanged",t.EXPLODE_CHANGE_EVENT="explodeChanged",t.FIT_TO_VIEW_EVENT="fitToView",t.AGGREGATE_FIT_TO_VIEW_EVENT="aggregateFitToView",t.CUTPLANES_CHANGE_EVENT="cutplanesChanged",t.TOOL_CHANGE_EVENT="toolChanged",t.RENDER_OPTION_CHANGED_EVENT="renderOptionChanged",t.FINAL_FRAME_RENDERED_CHANGED_EVENT="finalFrameRenderedChanged",t.RENDER_PRESENTED_EVENT="renderPresented",t.LAYER_VISIBILITY_CHANGED_EVENT="layerVisibility",t.PREF_CHANGED_EVENT="PrefChanged",t.PREF_RESET_EVENT="PrefReset",t.RESTORE_DEFAULT_SETTINGS_EVENT="restoreDefaultSettings",t.ANIMATION_READY_EVENT="animationReady",t.CAMERA_TRANSITION_COMPLETED="cameraTransitionCompleted",t.HYPERLINK_EVENT="hyperlink",t.HYPERLINK_NAVIGATE="hyperlink_navigate",t.LOAD_GEOMETRY_EVENT="load_geometry",t.LOAD_MISSING_GEOMETRY="loadMissingGeometry",t.WEBGL_CONTEXT_LOST_EVENT="webglcontextlost",t.WEBGL_CONTEXT_RESTORED_EVENT="webglcontextrestored",t.CANCEL_LEAFLET_SCREENSHOT="cancelLeafletScreenshot",t.SET_VIEW_EVENT="setView",t.RENDER_FIRST_PIXEL="renderFirstPixel",t.PROFILE_CHANGE_EVENT="profileChanged",t.RENDER_SCENE_PART="renderScenePart",t.OBJECT_UNDER_MOUSE_CHANGED="hoverObjectChanged",t.ANIM_ENDED="animEnded",t.TRANSITION_STARTED="transitionStarted",t.TRANSITION_ENDED="transitionEnded",t.FRAGMENTS_LOADED_EVENT="fragmentsLoaded",t.FRAGMENTS_UNLOADED_EVENT="fragmentsUnloaded",t.SCENE_UPDATED_EVENT="sceneUpdated",t.REFRESH_CUSTOM_PROPERTIES="refreshCustomProperties",t.REFRESH_CUSTOM_PROPERTIES_VALUES="refreshCustomPropertiesValues"},2240:(e,t,i)=>{"use strict";i.d(t,{A:()=>r});var n=i(1354),a=i.n(n),s=i(6314),o=i.n(s)()(a());o.push([e.id,'@font-face{font-family:"calibration-icon";src:url("data:application/octet-stream;base64,d09GRgABAAAAAAtYAA8AAAAAE7QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIwleU9TLzIAAAGUAAAAQgAAAFZWgGFpY21hcAAAAdgAAABOAAABcAGIBM1jdnQgAAACKAAAABMAAAAgBtX/BGZwZ20AAAI8AAAFkAAAC3CKkZBZZ2FzcAAAB8wAAAAIAAAACAAAABBnbHlmAAAH1AAAAOQAAADkZyzZ8WhlYWQAAAi4AAAAMQAAADYL0YfIaGhlYQAACOwAAAAcAAAAJAc7A1VobXR4AAAJCAAAAAgAAAAIBvL//2xvY2EAAAkQAAAABgAAAAYAcgAAbWF4cAAACRgAAAAgAAAAIADpC8puYW1lAAAJOAAAAXcAAALNzJ0cHnBvc3QAAAqwAAAAKgAAADsMvKbDcHJlcAAACtwAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYMpJLMlj4HNx8wlhkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAKVkFSAB4nGNgZK5knMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDA4MiQyJzEH/sxiimIMYpgGFGUFyAM95CpgAAHicY2BgYGVgYGAGYh0gZmFgYAxhYGQAAT+gKCNYnJmBCyzOwqAEVsMCFk/8/x9OMoJ0gkQZ2RhoDxjpYAclgAdMykB54LCCYkYA4LUHVgAAeJxjYEADEhDIHPQ/C4QBEmwD3QB4nK1WaXfTRhQdeUmchCwlCy1qYcTEabBGJmzBgAlBsmMgXZytlaCLFDvpvvGJ3+Bf82Tac+g3flrvGy8kkLTncJqTo3fnzdXM22USWpLYC+uRlJsvxdTWJo3sPAnphk3LUXwoO3shZYrJ3wVREK2W2rcdh0REIlC1rrBEEPseWZpkfOhRRsu2pFdNyi096S5b40G9Vd9+GjrKsTuhpGYzdGg9siVVGFWiSKY9UtKmZaj6K0krvL/CzFfNUMKITiJpvBnG0EjeG2e0ymg1tuMoimyy3ChSJJrhQRR5lNUS5+SKCQzKB82Q8sqnEeXD/Iis2KOcVrBLttP8vi95p3c5P7Ffb1G25EAfyI7s4Ox0JV+EW1th3LST7ShUEXbXd0Js2exU/2aP8ppGA7crMr3QjGCpfIUQKz+hzP4hWS2cT/mSR6NaspETQetlTuxLPoHW44gpcc0YWdDd0QkR1P2SMwz2mD4e/PHeKZYLEwJ4HMt6RyWcCBMpYXM0SdowcmAlZYsqqfWumDjldVrEW8J+7drRl85o41B3YjxbDx1bOVHJ8WhSp5lMndpJzaMpDaKUdCZ4zK8DKD+iSV5tYzWJlUfTOGbGhEQiAi3cS1NBLDuxpCkEzaMZvbkbprl2LVqkyQP13KP39OZWuLnTU9oO9LNGf1anYjrYC9PpaeQv8Wna5SJF6frpGX5M4kHWAjKRLTbDlIMHb/0O0svXlhyF1wbY7u3zK6h91kTwpAH7G9AeT9UpCUyFmFWIVkBirWtZlsnVrBapyNR3Q5pWvqzTBIpyHBfHvoxx/V8zM5aYEr7fidOzIy49c+1LCNMcfJt1PZrXqcVyAXFmeU6nWZbv6zTH8gOd5lme1+kIS1unoyw/1GmB5Uc6HWN5QQuadN/BkIsw5AIOkDCEpQNDWF6CISwVDGG5CENYFmEIyyUYwvJjGMJyGYawvKxl1dRTSePamVgGbEJgYo4eucxF5WoquVRCu2hUakOeEm6VVBTPqn9loF488oY5sBZIl8iaXzHOlY9G5fjWFS1vGjtXwLHqbx+O9jnxUtaLhT8F/9XWVCW9Ys3Dk6vwG4aebCeqNql4dE2Xz1U9uv5fVFRYC/QbSIVYKMqybHBnIoSPOp2GaqCVQ8xszDy063XLmp/D/TcxQhZQ/fg3FBoL3INOWUlZ7eCs1dfbstw7g3I4EyxJMTfz+lb4IiOz0n6RWcqej3wecAWMSmXYagOtFbzZJzEPmd4kzwRxW1E2SNrYzgSJDRzzgHnznQQmYeqqDeRO4YYN+AVhbsF5J1yieqMsh+5F7PMopPxbp+JE9qhojMCz2Rthr+9Cym9xDCQ0+aV+DFQVoakYNRXQNFJuqAZfxtm6bULGDvQjKnbDsqziw8cW95WSbRmEfKSI1aOjn9Zeok6q3H5mFJfvnb4FwSA1MX9733RxkMq7WskyR20DU7calVPXmkPjVYfq5lH1vePsEzlrmm66Jx56X9Oq28HFXCyw9m0O0lImF9T1YYUNosvFpVDqZTRJ77gHGBYY0O9Qio3/q/rYfJ4rVYXRcSTfTtS30edgDPwP2H9H9QPQ92Pocg0uz/eaE59u9OFsma6iF+un6Dcwa625WboG3NB0A+IhR62OuMoNfKcGcXqkuRzpIeBj3RXiAcAmgMXgE921jOZTAKP5jDk+wOfMYdBkDoMt5jDYZs4awA5zGOwyh8Eecxh8wZx1gC+ZwyBkDoOIOQyeMCcAeMocBl8xh8HXzGHwDXPuA3zLHAYxcxgkzGGwr+nWMMwtXtBdoLZBVaADU09Y3MPiUFNlyP6OF4b9vUHM/sEgpv6o6faQ+hMvDPVng5j6i0FM/VXTnSH1N14Y6u8GMfUPg5j6TL8Yy2UGv4x8lwoHlF1sPufvifcP28VAuQABAAH//wAPAAP///+TAwoDUgAlAC4AMQBJQEYkAQIGBQFHFhUQDwQBRAAHBgAGBwBtCAQCAAMCAgEAAVwKAQYGBVYJAQUFDAZJJyYAADEwKyomLicuACUAJSMkFCQXCwUZKwEVDgEVFBcDIw4BHgE7AQcXPwEhHwE3JzMyNjQmKwEDNjU0Jic1BzIWFAYiJjQ2FxMhAVgoNA7ANAoNAg0KHh4LXEABjUBbDB4eCQ4OCTLADTMoLhMbGyYaGhOw/qEDUm8ORyweHP5EAQ0UDERnLn19LmdEDRQNAbwaICxHDm/CGyYaGiYbzv6qeJxjYGRgYABiNfd3DvH8Nl8ZuJlfAEUYrqQu/A+jgWAy8wvmICCXg4EJJAoAgCEOvwAAAHicY2BkYGAO+p8FJF/8/w8iGYAiKIAJAIvHBZcD6AAAAwr//wAAAAAAcgAAAAEAAAACADIAAwAAAAAAAgAWACYAcwAAAFoLcAAAAAB4nHWQy07CQBSG/5GLCokaTdw6KwMxlksiCxISEgxsdEMMW1NKaUtKh0wHEl7Dd/BhfAmfxZ92MAZim+l855szZ04HwDW+IZA/Txw5C5wxyvkEp+hZLtA/Wy6SXyyXUMWb5TL9u+UKHhBYruIGH6wgiueMFvi0LHAlLi2f4ELcWS7QP1ouknuWS7gVr5bL9J7lCiYitVzFvfgaqNVWR0FoZG1Ql+1mqyOnW6moosSNpbs2odKp7Mu5Sowfx8rx1HLPYz9Yx67eh/t54us0UolsOc29GvmJr13jz3bV003QNmYu51ot5dBmyJVWC98zTmjMqtto/D0PAyissIVGxKsKYSBRo61zbqOJFjqkKTMkM/OsCAlcxDQu1twRZisp4z7HnFFC6zMjJjvw+F0e+TEp4P6YVfTR6mE8Ie3OiDIv2ZfD7g6zRqQky3QzO/vtPcWGp7VpDXftutRZVxLDgxqS97FbW9B49E52K4a2iwbff/7vB+NphE8AeJxjYGKAAC4G7ICJkYmRmUEwOTEnM6kosSQzPy++PCOzJJWBAQBRdwcvAAB4nGPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGVidNjEwMmiBGJu5mBg5ICw+BjCLzWkX0wGgNCeQze60i8EBwmZmcNmowtgRGLHBoSNiI3OKy0Y1EG8XRwMDI4tDR3JIBEhJJBBs5mFi5NHawfi/dQNL70YmBhcADHYj9AAA") format("woff");font-weight:normal;font-style:normal}[class^=calibration-icon],[class*=" calibration-icon"]{font-family:"calibration-icon";font-style:normal;font-weight:normal;font-variant:normal;line-height:1;padding-top:2px;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.adsk-viewing-viewer .calibration-icon:before{content:"a"}.adsk-viewing-viewer .calibration-panel{left:calc(50% - 190px);top:calc(50% - 145px);width:380px;height:auto;z-index:4}.adsk-viewing-viewer .calibration-panel .calibration-table{padding-left:24px;padding-right:24px;margin-top:12px;margin-bottom:12px;box-sizing:border-box}.adsk-viewing-viewer .measure-settings-popup .option-drop-down,.adsk-viewing-viewer .calibration-panel .option-drop-down{width:100%;padding-right:0px;box-sizing:border-box}.adsk-viewing-viewer .measure-settings-popup .adsk-lmv-tftable tr td,.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td{width:auto;padding:2px 0px 2px 0px;height:56px;font-size:14px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td div{padding:0px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td input{margin:0px;box-sizing:border-box;width:100%;height:36px;font-size:14px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td select{height:36px;font-size:14px}.adsk-viewing-viewer .measure-settings-popup .switch{margin-left:25px}.adsk-viewing-viewer .measure-settings-popup .switch .slider{width:26px}.adsk-viewing-viewer .calibration-textbox::-webkit-inner-spin-button,.adsk-viewing-viewer .calibration-textbox::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.adsk-viewing-viewer .calibration-text{text-align:left;padding:6px 10px 6px 10px;margin:20px 20px 14px 20px;font-size:14px;-webkit-font-smoothing:antialiased}.adsk-viewing-viewer .calibration-button{margin-top:15px}.adsk-viewing-viewer .calibration-button-left{width:calc(50% - 15px);margin-right:5px !important;display:inline-block}.adsk-viewing-viewer .calibration-button-right{width:calc(50% - 15px);margin-left:5px !important;display:inline-block}.adsk-viewing-viewer .calibration-line{position:absolute;display:block;top:0;left:0;pointer-events:none;z-index:0}.adsk-viewing-viewer .calibration-label{display:none;position:absolute;pointer-events:none;text-align:"center";vertical-align:middle;cursor:default;padding:2px;color:#000;background:#fff;border-radius:10px;-webkit-transform-origin:50% 53%}.adsk-viewing-viewer .calibration-label-text{display:inline-block;pointer-events:none;text-align:"center";vertical-align:middle;font-size:12px;cursor:default;padding:2px;color:#000;background:#fff;border-bottom:1px dashed #000;text-decoration:none;text-transform:uppercase;-webkit-font-smoothing:antialiased}.adsk-viewing-viewer .calibration-label-text:hover{color:#039be5;border-bottom:1px dashed #039be5}.adsk-viewing-viewer .calibration-label.visible{display:block}.adsk-viewing-viewer .calibration-endpoint:hover.calibration-endpoint.enable-hover,.adsk-viewing-viewer .calibration-endpoint.edit{background-color:#039be5}.adsk-viewing-viewer .calibration-endpoint:hover.calibration-endpoint.enable-hover>*,.adsk-viewing-viewer .calibration-endpoint.edit>*{color:#fff}.adsk-viewing-viewer .calibration-endpoint.editable{pointer-events:all}.adsk-viewing-viewer .calibration-endpoint{display:none;position:absolute;cursor:move;pointer-events:none;width:30px;height:30px;background-color:#fff;box-shadow:0 4px 8px 0 rgba(0,0,0,.24),0 0 8px 0 rgba(0,0,0,.12);-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;justify-content:center;align-items:center;text-align:center}.adsk-viewing-viewer .calibration-endpoint.visible{display:block}.adsk-viewing-viewer .calibration-endpoint-text{display:inline-block;font-size:14px;vertical-align:middle;cursor:default;margin:5px 5px 5px 5px;vertical-align:middle;text-align:center;color:#039be5;text-decoration:none;text-transform:uppercase;pointer-events:none}.adsk-viewing-viewer .calibration-panel .docking-panel-footer{padding:16px 24px;display:flex;justify-content:flex-end;text-align:center;position:relative;height:auto}.adsk-viewing-viewer .calibration-panel .docking-panel-footer .docking-panel-secondary-button,.adsk-viewing-viewer .calibration-panel .docking-panel-footer .docking-panel-primary-button{padding:0px 16px;margin:0px 0px 0px 8px;font-size:14px}.adsk-viewing-viewer .calibration-panel .docking-panel-title{padding-top:19px;padding-bottom:19px}.adsk-viewing-viewer .calibration-panel .docking-panel-close{margin-top:7.5px}',"",{version:3,sources:["webpack://./extensions/Measure/Calibration.css"],names:[],mappings:"AAAA,WAAW,8BAA8B,CAAC,+1HAA+1H,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,uDAAuD,8BAA8B,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,iCAAiC,CAAC,8CAA8C,WAAW,CAAC,wCAAwC,sBAAsB,CAAC,qBAAqB,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,2DAA2D,iBAAiB,CAAC,kBAAkB,CAAC,eAAe,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,yHAAyH,UAAU,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,qIAAqI,UAAU,CAAC,uBAAuB,CAAC,WAAW,CAAC,cAAc,CAAC,oEAAoE,WAAW,CAAC,sEAAsE,UAAU,CAAC,qBAAqB,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,uEAAuE,WAAW,CAAC,cAAc,CAAC,qDAAqD,gBAAgB,CAAC,6DAA6D,UAAU,CAAC,0IAA0I,uBAAuB,CAAC,QAAQ,CAAC,uCAAuC,eAAe,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,cAAc,CAAC,kCAAkC,CAAC,yCAAyC,eAAe,CAAC,8CAA8C,sBAAsB,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,+CAA+C,sBAAsB,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,uCAAuC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,wCAAwC,YAAY,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,kBAAkB,CAAC,gCAAgC,CAAC,6CAA6C,oBAAoB,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,6BAA6B,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,kCAAkC,CAAC,mDAAmD,aAAa,CAAC,gCAAgC,CAAC,gDAAgD,aAAa,CAAC,mIAAmI,wBAAwB,CAAC,uIAAuI,UAAU,CAAC,oDAAoD,kBAAkB,CAAC,2CAA2C,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,qBAAqB,CAAC,gEAAgE,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,mDAAmD,aAAa,CAAC,gDAAgD,oBAAoB,CAAC,cAAc,CAAC,qBAAqB,CAAC,cAAc,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,aAAa,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,8DAA8D,iBAAiB,CAAC,YAAY,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,0LAA0L,gBAAgB,CAAC,sBAAsB,CAAC,cAAc,CAAC,6DAA6D,gBAAgB,CAAC,mBAAmB,CAAC,6DAA6D,gBAAgB",sourcesContent:['@font-face{font-family:"calibration-icon";src:url("data:application/octet-stream;base64,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") format("woff");font-weight:normal;font-style:normal}[class^=calibration-icon],[class*=" calibration-icon"]{font-family:"calibration-icon";font-style:normal;font-weight:normal;font-variant:normal;line-height:1;padding-top:2px;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.adsk-viewing-viewer .calibration-icon:before{content:"a"}.adsk-viewing-viewer .calibration-panel{left:calc(50% - 190px);top:calc(50% - 145px);width:380px;height:auto;z-index:4}.adsk-viewing-viewer .calibration-panel .calibration-table{padding-left:24px;padding-right:24px;margin-top:12px;margin-bottom:12px;box-sizing:border-box}.adsk-viewing-viewer .measure-settings-popup .option-drop-down,.adsk-viewing-viewer .calibration-panel .option-drop-down{width:100%;padding-right:0px;box-sizing:border-box}.adsk-viewing-viewer .measure-settings-popup .adsk-lmv-tftable tr td,.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td{width:auto;padding:2px 0px 2px 0px;height:56px;font-size:14px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td div{padding:0px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td input{margin:0px;box-sizing:border-box;width:100%;height:36px;font-size:14px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td select{height:36px;font-size:14px}.adsk-viewing-viewer .measure-settings-popup .switch{margin-left:25px}.adsk-viewing-viewer .measure-settings-popup .switch .slider{width:26px}.adsk-viewing-viewer .calibration-textbox::-webkit-inner-spin-button,.adsk-viewing-viewer .calibration-textbox::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.adsk-viewing-viewer .calibration-text{text-align:left;padding:6px 10px 6px 10px;margin:20px 20px 14px 20px;font-size:14px;-webkit-font-smoothing:antialiased}.adsk-viewing-viewer .calibration-button{margin-top:15px}.adsk-viewing-viewer .calibration-button-left{width:calc(50% - 15px);margin-right:5px !important;display:inline-block}.adsk-viewing-viewer .calibration-button-right{width:calc(50% - 15px);margin-left:5px !important;display:inline-block}.adsk-viewing-viewer .calibration-line{position:absolute;display:block;top:0;left:0;pointer-events:none;z-index:0}.adsk-viewing-viewer .calibration-label{display:none;position:absolute;pointer-events:none;text-align:"center";vertical-align:middle;cursor:default;padding:2px;color:#000;background:#fff;border-radius:10px;-webkit-transform-origin:50% 53%}.adsk-viewing-viewer .calibration-label-text{display:inline-block;pointer-events:none;text-align:"center";vertical-align:middle;font-size:12px;cursor:default;padding:2px;color:#000;background:#fff;border-bottom:1px dashed #000;text-decoration:none;text-transform:uppercase;-webkit-font-smoothing:antialiased}.adsk-viewing-viewer .calibration-label-text:hover{color:#039be5;border-bottom:1px dashed #039be5}.adsk-viewing-viewer .calibration-label.visible{display:block}.adsk-viewing-viewer .calibration-endpoint:hover.calibration-endpoint.enable-hover,.adsk-viewing-viewer .calibration-endpoint.edit{background-color:#039be5}.adsk-viewing-viewer .calibration-endpoint:hover.calibration-endpoint.enable-hover>*,.adsk-viewing-viewer .calibration-endpoint.edit>*{color:#fff}.adsk-viewing-viewer .calibration-endpoint.editable{pointer-events:all}.adsk-viewing-viewer .calibration-endpoint{display:none;position:absolute;cursor:move;pointer-events:none;width:30px;height:30px;background-color:#fff;box-shadow:0 4px 8px 0 rgba(0,0,0,.24),0 0 8px 0 rgba(0,0,0,.12);-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;justify-content:center;align-items:center;text-align:center}.adsk-viewing-viewer .calibration-endpoint.visible{display:block}.adsk-viewing-viewer .calibration-endpoint-text{display:inline-block;font-size:14px;vertical-align:middle;cursor:default;margin:5px 5px 5px 5px;vertical-align:middle;text-align:center;color:#039be5;text-decoration:none;text-transform:uppercase;pointer-events:none}.adsk-viewing-viewer .calibration-panel .docking-panel-footer{padding:16px 24px;display:flex;justify-content:flex-end;text-align:center;position:relative;height:auto}.adsk-viewing-viewer .calibration-panel .docking-panel-footer .docking-panel-secondary-button,.adsk-viewing-viewer .calibration-panel .docking-panel-footer .docking-panel-primary-button{padding:0px 16px;margin:0px 0px 0px 8px;font-size:14px}.adsk-viewing-viewer .calibration-panel .docking-panel-title{padding-top:19px;padding-bottom:19px}.adsk-viewing-viewer .calibration-panel .docking-panel-close{margin-top:7.5px}'],sourceRoot:""}]);const r=o},4660:(e,t,i)=>{"use strict";i.d(t,{A:()=>r});var n=i(1354),a=i.n(n),s=i(6314),o=i.n(s)()(a());o.push([e.id,'.adsk-viewing-viewer .measure-length:hover.measure-length.enable-hover{box-shadow:0 0 16px 3px rgba(0,117,210,.7);-webkit-box-shadow:0 0 16px 3px rgba(0,117,210,.7);-moz-box-shadow:0 0 16px 3px rgba(0,117,210,.7)}.adsk-viewing-viewer .measure-length{display:none;position:absolute;height:19px;left:0px;top:0px;padding:2px 0 2px 0;background-color:#009bea;box-shadow:0px 1px 3px 1px rgba(0,0,0,.25);color:#f4f4f4;font-size:12px;text-align:center;line-height:1.2;white-space:nowrap;border-radius:8px;pointer-events:none;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0)}.adsk-viewing-viewer .measure-length.visible{display:block}.adsk-viewing-viewer .measure-length.fetching-topology{background-color:rgba(34,34,34,.8);box-shadow:0 .5px 1.5px 0 rgba(0,0,0,.3)}.adsk-viewing-viewer .measure-length-text{display:inline-block;margin:0 5px 0 5px;vertical-align:middle;font-size:16px;pointer-events:none}.adsk-viewing-viewer .measure-delta-text{margin:0 5px 0 5px;align-self:center;font-size:14px;overflow:hidden;white-space:nowrap;height:16px;line-height:16px;vertical-align:middle;pointer-events:none}.adsk-viewing-viewer .measure-length-button{display:inline-block;width:16px;height:16px;font-size:16px;float:right;color:#fff;opacity:.7}.adsk-viewing-viewer .measure-length-button:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-label:hover.measure-label.enable-hover,.adsk-viewing-viewer .measure-label.on-edit{box-shadow:0 0 4px 4px #0d69ca;-webkit-box-shadow:0 0 4px 4px #0d69ca;-moz-box-shadow:0 0 4px 4px #0d69ca}.adsk-viewing-viewer .measure-label.editable{pointer-events:all}.adsk-viewing-viewer .measure-label{display:none;position:absolute;width:7px;height:7px;cursor:move;pointer-events:none;border-radius:100px}.adsk-viewing-viewer .measure-label-hit-area{display:inline-block;position:absolute;width:44px;height:44px;left:-22px;top:-22px;border-radius:100px;z-index:2}.adsk-viewing-viewer .measure-label-icon{display:inline-block;position:absolute;width:7px;height:7px;left:-2px;top:-2px;background-color:#009bea;border-style:solid;border-width:2px;border-color:#fff;border-radius:100px;box-shadow:0 2px 5px 0 #182a3d;z-index:2}.adsk-viewing-viewer .measure-label.visible{display:block}.adsk-viewing-viewer .measure-label-text{display:inline-block;margin:0px 5px 0px 5px;vertical-align:middle}.adsk-viewing-viewer .measure-horizontal-divider{height:1px;border-top:1px solid rgba(200,200,200,.8)}.adsk-viewing-viewer .measure-submenu-select{display:block;position:relative;width:calc(100% - 40px);padding:10px 20px 0px 20px;opacity:.3}.adsk-viewing-viewer .option-drop-down:disabled{opacity:.3}.adsk-viewing-viewer .measure-submenu-selectlabel{position:relative;display:inline-block;padding-right:20px;padding-bottom:4px}.adsk-viewing-viewer .measure-results{position:relative;display:block;padding:5px 0px 10px 30px}.adsk-viewing-viewer .measure-result-label{display:inline-block;padding-right:10px}.adsk-viewing-viewer .measure-result-number{display:inline-block}.adsk-viewing-viewer .measure-delta-collapse{position:absolute;right:20px;display:inline-block;background-color:rgba(255,255,255,.12);margin:0px 4px 0px 4px;padding:0px 4px 0px 4px;cursor:pointer;text-align:center}.adsk-viewing-viewer .measure-delta-collapse:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-selection-repick{position:absolute;right:20px;display:inline-block;background-color:rgba(255,255,255,.12);margin:4px 4px 4px 4px;padding:4px 4px 4px 4px;cursor:pointer;text-align:center}.adsk-viewing-viewer .measure-selection-repick:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-restart{margin:10px 20px 15px 20px;padding:6px 10px 6px 10px;width:calc(100% - 55px);cursor:pointer;text-align:center;border-style:solid;border-width:1px;border-color:rgba(255,255,255,.2);border-radius:3px}.adsk-viewing-viewer .docking-panel:hover .measure-restart{background-color:rgba(255,255,255,.12)}.adsk-viewing-viewer .docking-panel .measure-restart:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-panel-title{padding-top:0px;padding-left:20px;margin-top:10px}.adsk-viewing-viewer .measure-panel-title:hover{cursor:pointer}.adsk-viewing-viewer .measure-panel-title.collapsed{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEwMDhBMzY4QTYyODExRTM5REY0Q0MwMTM3MTVFOTMzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEwMDhBMzY5QTYyODExRTM5REY0Q0MwMTM3MTVFOTMzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTAwOEEzNjZBNjI4MTFFMzlERjRDQzAxMzcxNUU5MzMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTAwOEEzNjdBNjI4MTFFMzlERjRDQzAxMzcxNUU5MzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6WHWu4AAAAcElEQVR42mL8//8/AzmAiYFMgEtjGSFDcUmGAfEEIOYix6lWQLwUiGXJ8SNI00IgNiIncPiAeCoQ+5ITqsxQA+CAhQhN34C4AoiPkaLxGRAXAfEdUvx4DohjsGkCA1CSw4LrgZgVhxwYM9I9rQIEGACZNDs01yUXlAAAAABJRU5ErkJggg==);background-repeat:no-repeat}.adsk-viewing-viewer .measure-panel-title.expanded{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkE3QzFFQUQ1QTYyODExRTM5NzE2RjcyN0QxQjg0QTREIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkE3QzFFQUQ2QTYyODExRTM5NzE2RjcyN0QxQjg0QTREIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTdDMUVBRDNBNjI4MTFFMzk3MTZGNzI3RDFCODRBNEQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTdDMUVBRDRBNjI4MTFFMzk3MTZGNzI3RDFCODRBNEQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6XuY60AAAARklEQVR42mL8//8/AzmAiYFMQBeNqSg8kB+JwKlAfAZZjIlIm9JJdSpWTYQ04tSETyNeTbg0EtSETSNRmkCAcegkOYAAAwDGjDZHvY373AAAAABJRU5ErkJggg==);background-repeat:no-repeat}.adsk-viewing-viewer .adsk-viewing-viewer .measure-table td{padding:10px 0px 10px 20px}.adsk-viewing-viewer .measure-selection-one-label{display:inline-block;margin:18px 18px 18px 18px;width:16px;height:16px;font-size:16px;float:left;padding:2px;background-color:#03f;border-radius:10px;opacity:.6}.adsk-viewing-viewer .measure-selection-two-label{display:inline-block;margin:18px 18px 18px 18px;width:16px;height:16px;font-size:16px;float:left;padding:2px;background-color:#03f;border-radius:10px;opacity:.6}.adsk-viewing-viewer .measure-repick{display:inline-block;cursor:default;margin:20px 20px 20px 20px;width:16px;height:16px;font-size:16px;float:right;opacity:.5}.adsk-viewing-viewer .measure-repick:hover{opacity:1}.adsk-viewing-viewer .measure-selection-result{display:inline-block;margin:21px 0px 21px 0px}.adsk-viewing-viewer .measure-distance-icon{display:inline-block;margin:20px 2px 20px 2px;font-size:52px;color:#f90;float:left}.adsk-viewing-viewer .measure-angle-icon{display:inline-block;margin:20px 2px 20px 2px;font-size:52px;color:#f90;float:left}.adsk-viewing-viewer .adsk-viewing-viewer .measure-result{font-size:20px;color:#f90;display:inline-block;margin:38px 0px 38px 0px}.adsk-viewing-viewer .measure-initial{font-size:20px;display:inline-block;margin:38px 0px 38px 56px}.adsk-viewing-viewer .measure-settings-button{cursor:default;position:relative;top:20px;right:20px;width:16px;height:16px;font-size:18px;float:right;opacity:.5}.adsk-viewing-viewer .measure-settings-button:hover{opacity:1}.adsk-viewing-viewer .measure-delta-button{position:relative;top:56px;right:4px;width:16px;height:16px;font-size:16px;float:right;opacity:.5;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.adsk-viewing-viewer .measure-delta-button.rotated{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.adsk-viewing-viewer .measure-delta-button:hover{opacity:1}.adsk-viewing-viewer .measure-delta-result{display:inline-block;margin:0px 0px 20px 0px;padding:0px 0px 0px 56px}.adsk-viewing-viewer .measure-label-axis{display:none;position:absolute;width:16px;height:16px;left:0px;top:0px;background-color:#f4f4f4;border-radius:8px;pointer-events:none}.adsk-viewing-viewer .measure-label-axis-icon.X{background-color:#f12c2c}.adsk-viewing-viewer .measure-label-axis-icon.Y{background-color:#0bb80b}.adsk-viewing-viewer .measure-label-axis-icon.Z{background-color:#2c2cf1}.adsk-viewing-viewer .measure-label-axis-icon{width:20px;height:18px;color:#f4f4f4;border-radius:8px 0 0 8px;font-size:12px;padding-top:4px;line-height:15px;text-align:center;margin-left:-2px}.adsk-viewing-viewer .measure-label-axis-delta.enableTransition{transition:opacity .1s linear}.adsk-viewing-viewer .measure-label-axis-delta{display:none;position:absolute;font-size:18px;left:0px;top:0px;background-color:#fff;pointer-events:none;opacity:0;border-radius:8px;box-shadow:0px 1px 3px 1px rgba(0,0,0,.25)}.adsk-viewing-viewer .measure-label-axis.visible{display:block}.adsk-viewing-viewer .measure-label-axis-delta.visible{display:flex}.adsk-viewing-viewer .measure-label-axis-x{color:#f12c2c}.adsk-viewing-viewer .measure-label-axis-y{color:#0bb80b}.adsk-viewing-viewer .measure-label-axis-z{color:#2c2cf1}.adsk-viewing-viewer .magnifying-glass.visible{display:block}.adsk-viewing-viewer .magnifying-glass{position:absolute;display:none;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;background:rgba(0,0,0,0);box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);-webkit-box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);-moz-box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);z-index:4}.adsk-viewing-viewer .measure-fetching-topology{display:inline-block;width:10px;height:10px;background:url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 width%3D%2210%22 height%3D%2210%22 viewBox%3D%220 0 10 10%22%3E %3Cdefs%3E %3ClinearGradient id%3D%22linear-gradient%22 y1%3D%225%22 x2%3D%2210%22 y2%3D%225%22 gradientUnits%3D%22userSpaceOnUse%22%3E %3Cstop offset%3D%220%22 stop-color%3D%22%23fff%22 stop-opacity%3D%220%22%2F%3E %3Cstop offset%3D%221%22 stop-color%3D%22%23fff%22%2F%3E %3C%2FlinearGradient%3E %3C%2Fdefs%3E %3Ctitle%3EAsset 6%3C%2Ftitle%3E %3Cg id%3D%22Layer_2%22 data-name%3D%22Layer 2%22%3E %3Cg id%3D%22finals_24px%22%3E %3Cpath d%3D%22M5%2C10A5%2C5%2C0%2C0%2C1%2C0%2C5%2C1.2%2C1.2%2C0%2C0%2C1%2C2.3%2C5%2C2.7%2C2.7%2C0%2C1%2C0%2C5%2C2.3%2C1.2%2C1.2%2C0%2C0%2C1%2C5%2C0%2C5%2C5%2C0%2C0%2C1%2C5%2C10Z%22 fill%3D%22url(%23linear-gradient)%22%2F%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E");margin:3px 0px -2px 3px;animation:measure-topology-fetching-anim 1.4s infinite linear;-webkit-animation:measure-topology-fetching-anim 1.4s infinite linear}@keyframes measure-topology-fetching-anim{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes measure-topology-fetching-anim{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.adsk-viewing-viewer .docking-panel.measure-settings-popup{display:flex;justify-content:center;flex-direction:column;bottom:120%;box-sizing:border-box;text-align:left;position:absolute;padding-top:15px;padding-bottom:15px}.adsk-viewing-viewer .adsk-toolbar-vertical .docking-panel.measure-settings-popup{right:120%;bottom:unset;height:max-content;width:max-content}.adsk-viewing-viewer .docking-panel.measure-settings-popup .adsk-lmv-tftable tr.switch-slider-row td{width:auto;padding-bottom:0px;padding-top:0px;vertical-align:inherit}.adsk-viewing-viewer .docking-panel.measure-settings-popup.hide{display:none}.adsk-viewing-viewer .measure-settings-popup tbody{top:15px}.adsk-toolbar .measure-toolbar-seperator{height:18px;width:1px;background-color:#999;float:left;margin:16px 5px}.adsk-toolbar.adsk-toolbar-vertical .measure-toolbar-seperator{height:1px;width:18px;margin:5px 16px}.adsk-viewing-viewer .measure-selection-area{display:block;position:absolute;cursor:pointer;z-index:1;-webkit-tap-highlight-color:rgba(0,0,0,0)}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button{padding:0px;width:40px}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button>label{padding:10px 0px}',"",{version:3,sources:["webpack://./extensions/Measure/Measure.css"],names:[],mappings:"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",sourcesContent:[".adsk-viewing-viewer .measure-length:hover.measure-length.enable-hover{box-shadow:0 0 16px 3px rgba(0,117,210,.7);-webkit-box-shadow:0 0 16px 3px rgba(0,117,210,.7);-moz-box-shadow:0 0 16px 3px rgba(0,117,210,.7)}.adsk-viewing-viewer .measure-length{display:none;position:absolute;height:19px;left:0px;top:0px;padding:2px 0 2px 0;background-color:#009bea;box-shadow:0px 1px 3px 1px rgba(0,0,0,.25);color:#f4f4f4;font-size:12px;text-align:center;line-height:1.2;white-space:nowrap;border-radius:8px;pointer-events:none;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0)}.adsk-viewing-viewer .measure-length.visible{display:block}.adsk-viewing-viewer .measure-length.fetching-topology{background-color:rgba(34,34,34,.8);box-shadow:0 .5px 1.5px 0 rgba(0,0,0,.3)}.adsk-viewing-viewer .measure-length-text{display:inline-block;margin:0 5px 0 5px;vertical-align:middle;font-size:16px;pointer-events:none}.adsk-viewing-viewer .measure-delta-text{margin:0 5px 0 5px;align-self:center;font-size:14px;overflow:hidden;white-space:nowrap;height:16px;line-height:16px;vertical-align:middle;pointer-events:none}.adsk-viewing-viewer .measure-length-button{display:inline-block;width:16px;height:16px;font-size:16px;float:right;color:#fff;opacity:.7}.adsk-viewing-viewer .measure-length-button:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-label:hover.measure-label.enable-hover,.adsk-viewing-viewer .measure-label.on-edit{box-shadow:0 0 4px 4px #0d69ca;-webkit-box-shadow:0 0 4px 4px #0d69ca;-moz-box-shadow:0 0 4px 4px #0d69ca}.adsk-viewing-viewer .measure-label.editable{pointer-events:all}.adsk-viewing-viewer .measure-label{display:none;position:absolute;width:7px;height:7px;cursor:move;pointer-events:none;border-radius:100px}.adsk-viewing-viewer .measure-label-hit-area{display:inline-block;position:absolute;width:44px;height:44px;left:-22px;top:-22px;border-radius:100px;z-index:2}.adsk-viewing-viewer .measure-label-icon{display:inline-block;position:absolute;width:7px;height:7px;left:-2px;top:-2px;background-color:#009bea;border-style:solid;border-width:2px;border-color:#fff;border-radius:100px;box-shadow:0 2px 5px 0 #182a3d;z-index:2}.adsk-viewing-viewer .measure-label.visible{display:block}.adsk-viewing-viewer .measure-label-text{display:inline-block;margin:0px 5px 0px 5px;vertical-align:middle}.adsk-viewing-viewer .measure-horizontal-divider{height:1px;border-top:1px solid rgba(200,200,200,.8)}.adsk-viewing-viewer .measure-submenu-select{display:block;position:relative;width:calc(100% - 40px);padding:10px 20px 0px 20px;opacity:.3}.adsk-viewing-viewer .option-drop-down:disabled{opacity:.3}.adsk-viewing-viewer .measure-submenu-selectlabel{position:relative;display:inline-block;padding-right:20px;padding-bottom:4px}.adsk-viewing-viewer .measure-results{position:relative;display:block;padding:5px 0px 10px 30px}.adsk-viewing-viewer .measure-result-label{display:inline-block;padding-right:10px}.adsk-viewing-viewer .measure-result-number{display:inline-block}.adsk-viewing-viewer .measure-delta-collapse{position:absolute;right:20px;display:inline-block;background-color:rgba(255,255,255,.12);margin:0px 4px 0px 4px;padding:0px 4px 0px 4px;cursor:pointer;text-align:center}.adsk-viewing-viewer .measure-delta-collapse:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-selection-repick{position:absolute;right:20px;display:inline-block;background-color:rgba(255,255,255,.12);margin:4px 4px 4px 4px;padding:4px 4px 4px 4px;cursor:pointer;text-align:center}.adsk-viewing-viewer .measure-selection-repick:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-restart{margin:10px 20px 15px 20px;padding:6px 10px 6px 10px;width:calc(100% - 55px);cursor:pointer;text-align:center;border-style:solid;border-width:1px;border-color:rgba(255,255,255,.2);border-radius:3px}.adsk-viewing-viewer .docking-panel:hover .measure-restart{background-color:rgba(255,255,255,.12)}.adsk-viewing-viewer .docking-panel .measure-restart:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-panel-title{padding-top:0px;padding-left:20px;margin-top:10px}.adsk-viewing-viewer .measure-panel-title:hover{cursor:pointer}.adsk-viewing-viewer .measure-panel-title.collapsed{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEwMDhBMzY4QTYyODExRTM5REY0Q0MwMTM3MTVFOTMzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEwMDhBMzY5QTYyODExRTM5REY0Q0MwMTM3MTVFOTMzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTAwOEEzNjZBNjI4MTFFMzlERjRDQzAxMzcxNUU5MzMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTAwOEEzNjdBNjI4MTFFMzlERjRDQzAxMzcxNUU5MzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6WHWu4AAAAcElEQVR42mL8//8/AzmAiYFMgEtjGSFDcUmGAfEEIOYix6lWQLwUiGXJ8SNI00IgNiIncPiAeCoQ+5ITqsxQA+CAhQhN34C4AoiPkaLxGRAXAfEdUvx4DohjsGkCA1CSw4LrgZgVhxwYM9I9rQIEGACZNDs01yUXlAAAAABJRU5ErkJggg==);background-repeat:no-repeat}.adsk-viewing-viewer .measure-panel-title.expanded{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkE3QzFFQUQ1QTYyODExRTM5NzE2RjcyN0QxQjg0QTREIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkE3QzFFQUQ2QTYyODExRTM5NzE2RjcyN0QxQjg0QTREIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTdDMUVBRDNBNjI4MTFFMzk3MTZGNzI3RDFCODRBNEQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTdDMUVBRDRBNjI4MTFFMzk3MTZGNzI3RDFCODRBNEQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6XuY60AAAARklEQVR42mL8//8/AzmAiYFMQBeNqSg8kB+JwKlAfAZZjIlIm9JJdSpWTYQ04tSETyNeTbg0EtSETSNRmkCAcegkOYAAAwDGjDZHvY373AAAAABJRU5ErkJggg==);background-repeat:no-repeat}.adsk-viewing-viewer .adsk-viewing-viewer .measure-table td{padding:10px 0px 10px 20px}.adsk-viewing-viewer .measure-selection-one-label{display:inline-block;margin:18px 18px 18px 18px;width:16px;height:16px;font-size:16px;float:left;padding:2px;background-color:#03f;border-radius:10px;opacity:.6}.adsk-viewing-viewer .measure-selection-two-label{display:inline-block;margin:18px 18px 18px 18px;width:16px;height:16px;font-size:16px;float:left;padding:2px;background-color:#03f;border-radius:10px;opacity:.6}.adsk-viewing-viewer .measure-repick{display:inline-block;cursor:default;margin:20px 20px 20px 20px;width:16px;height:16px;font-size:16px;float:right;opacity:.5}.adsk-viewing-viewer .measure-repick:hover{opacity:1}.adsk-viewing-viewer .measure-selection-result{display:inline-block;margin:21px 0px 21px 0px}.adsk-viewing-viewer .measure-distance-icon{display:inline-block;margin:20px 2px 20px 2px;font-size:52px;color:#f90;float:left}.adsk-viewing-viewer .measure-angle-icon{display:inline-block;margin:20px 2px 20px 2px;font-size:52px;color:#f90;float:left}.adsk-viewing-viewer .adsk-viewing-viewer .measure-result{font-size:20px;color:#f90;display:inline-block;margin:38px 0px 38px 0px}.adsk-viewing-viewer .measure-initial{font-size:20px;display:inline-block;margin:38px 0px 38px 56px}.adsk-viewing-viewer .measure-settings-button{cursor:default;position:relative;top:20px;right:20px;width:16px;height:16px;font-size:18px;float:right;opacity:.5}.adsk-viewing-viewer .measure-settings-button:hover{opacity:1}.adsk-viewing-viewer .measure-delta-button{position:relative;top:56px;right:4px;width:16px;height:16px;font-size:16px;float:right;opacity:.5;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.adsk-viewing-viewer .measure-delta-button.rotated{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.adsk-viewing-viewer .measure-delta-button:hover{opacity:1}.adsk-viewing-viewer .measure-delta-result{display:inline-block;margin:0px 0px 20px 0px;padding:0px 0px 0px 56px}.adsk-viewing-viewer .measure-label-axis{display:none;position:absolute;width:16px;height:16px;left:0px;top:0px;background-color:#f4f4f4;border-radius:8px;pointer-events:none}.adsk-viewing-viewer .measure-label-axis-icon.X{background-color:#f12c2c}.adsk-viewing-viewer .measure-label-axis-icon.Y{background-color:#0bb80b}.adsk-viewing-viewer .measure-label-axis-icon.Z{background-color:#2c2cf1}.adsk-viewing-viewer .measure-label-axis-icon{width:20px;height:18px;color:#f4f4f4;border-radius:8px 0 0 8px;font-size:12px;padding-top:4px;line-height:15px;text-align:center;margin-left:-2px}.adsk-viewing-viewer .measure-label-axis-delta.enableTransition{transition:opacity .1s linear}.adsk-viewing-viewer .measure-label-axis-delta{display:none;position:absolute;font-size:18px;left:0px;top:0px;background-color:#fff;pointer-events:none;opacity:0;border-radius:8px;box-shadow:0px 1px 3px 1px rgba(0,0,0,.25)}.adsk-viewing-viewer .measure-label-axis.visible{display:block}.adsk-viewing-viewer .measure-label-axis-delta.visible{display:flex}.adsk-viewing-viewer .measure-label-axis-x{color:#f12c2c}.adsk-viewing-viewer .measure-label-axis-y{color:#0bb80b}.adsk-viewing-viewer .measure-label-axis-z{color:#2c2cf1}.adsk-viewing-viewer .magnifying-glass.visible{display:block}.adsk-viewing-viewer .magnifying-glass{position:absolute;display:none;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;background:rgba(0,0,0,0);box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);-webkit-box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);-moz-box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);z-index:4}.adsk-viewing-viewer .measure-fetching-topology{display:inline-block;width:10px;height:10px;background:url(res/icon-spinner-sm.svg);margin:3px 0px -2px 3px;animation:measure-topology-fetching-anim 1.4s infinite linear;-webkit-animation:measure-topology-fetching-anim 1.4s infinite linear}@keyframes measure-topology-fetching-anim{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes measure-topology-fetching-anim{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.adsk-viewing-viewer .docking-panel.measure-settings-popup{display:flex;justify-content:center;flex-direction:column;bottom:120%;box-sizing:border-box;text-align:left;position:absolute;padding-top:15px;padding-bottom:15px}.adsk-viewing-viewer .adsk-toolbar-vertical .docking-panel.measure-settings-popup{right:120%;bottom:unset;height:max-content;width:max-content}.adsk-viewing-viewer .docking-panel.measure-settings-popup .adsk-lmv-tftable tr.switch-slider-row td{width:auto;padding-bottom:0px;padding-top:0px;vertical-align:inherit}.adsk-viewing-viewer .docking-panel.measure-settings-popup.hide{display:none}.adsk-viewing-viewer .measure-settings-popup tbody{top:15px}.adsk-toolbar .measure-toolbar-seperator{height:18px;width:1px;background-color:#999;float:left;margin:16px 5px}.adsk-toolbar.adsk-toolbar-vertical .measure-toolbar-seperator{height:1px;width:18px;margin:5px 16px}.adsk-viewing-viewer .measure-selection-area{display:block;position:absolute;cursor:pointer;z-index:1;-webkit-tap-highlight-color:rgba(0,0,0,0)}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button{padding:0px;width:40px}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button>label{padding:10px 0px}"],sourceRoot:""}]);const r=o},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i="",n=void 0!==t[5];return t[4]&&(i+="@supports (".concat(t[4],") {")),t[2]&&(i+="@media ".concat(t[2]," {")),n&&(i+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),i+=e(t),n&&(i+="}"),t[2]&&(i+="}"),t[4]&&(i+="}"),i})).join("")},t.i=function(e,i,n,a,s){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(n)for(var r=0;r0?" ".concat(A[5]):""," {").concat(A[1],"}")),A[5]=s),i&&(A[2]?(A[1]="@media ".concat(A[2]," {").concat(A[1],"}"),A[2]=i):A[2]=i),a&&(A[4]?(A[1]="@supports (".concat(A[4],") {").concat(A[1],"}"),A[4]=a):A[4]="".concat(a)),t.push(A))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],i=e[3];if(!i)return t;if("function"==typeof btoa){var n=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),a="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(n),s="/*# ".concat(a," */");return[t].concat([s]).join("\n")}return[t].join("\n")}},5072:e=>{"use strict";var t=[];function i(e){for(var i=-1,n=0;n{"use strict";var t={};e.exports=function(e,i){var n=function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}t[e]=i}return t[e]}(e);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(i)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,i)=>{"use strict";e.exports=function(e){var t=i.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(i){!function(e,t,i){var n="";i.supports&&(n+="@supports (".concat(i.supports,") {")),i.media&&(n+="@media ".concat(i.media," {"));var a=void 0!==i.layer;a&&(n+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),n+=i.css,a&&(n+="}"),i.media&&(n+="}"),i.supports&&(n+="}");var s=i.sourceMap;s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleTagTransform(n,e,t.options)}(t,e,i)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function i(n){var a=t[n];if(void 0!==a)return a.exports;var s=t[n]={id:n,exports:{}};return e[n](s,s.exports,i),s.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{MeasureExtension:()=>Ve});var e=Autodesk.Viewing.MeasureCommon;function t(e){this.viewer=e,this.init(),this.restoredMeasurementData=[]}var a=t.prototype;a.getCurrentMeasurement=function(){return this.currentMeasurement},a.getRestoredMeasurementData=function(){return this.restoredMeasurementData.slice()},a.selectMeasurementById=function(e){var t=this.measurementsList[e];return!!t&&(this.changeCurrentMeasurement(t),this.currentMeasurement)},a.createMeasurement=function(t,i){var n=this.measurementsCounter,a=new e.Measurement(t,n,i);return this.measurementsList[n]=a,this.measurementsCounter++,this.changeCurrentMeasurement(a),this.currentMeasurement},a.createMeasurementFromData=function(t,i,n,a){let s=t.options;if(s){s=JSON.parse(JSON.stringify(s));const e=Object.prototype.hasOwnProperty.call(s,"modelId")&&s.modelId?this.viewer.impl.findModel(s.modelId):this.viewer.model,t=e&&e.getData().globalOffset;if(t&&(0!==t.x||0!==t.y||0!==t.z)){const e=e=>{if(e)for(let i=0;i{const e=this.restoredMeasurementData[this.currentMeasurement.id],t=Object.keys(e),i=[];for(let n=0;n0&&delete this.measurementsList[this.currentMeasurement.id]},a.init=function(){this.reset()},a.destroy=function(){this.reset()},a.reset=function(){this.currentMeasurement=null,this.measurementsList={},this.measurementsCounter=0};var s=Autodesk.Viewing,o=s.MeasureCommon,r=function(e,t,i){this.viewer=e,this.setGlobalManager(e.globalManager),this.measurement=t,this.tool=i,this.snapper=i.getSnapper(),this.materialExtensionLine=null,this.materialExtensionFace=null,this.extensionLines=[],this.extensionFaces=[],this.grayOutPlane=[],this.materialPoint=null,this.materialLine=null,this.materialAngle=null,this.materialAngleOutline=null,this.materialGreyOutPlane=null,this.materialFace=null,this.angleArc=null,this.angleOutline=[],this.arcOutline=[],this.arcTip=[],this.showMeasureResult=!1,this.visibleLabels=[],this.overlayName="measure-indicator-overlay-"+(t.id||""),this.xAxis=this.viewer.autocam.getWorldRightVector(),this.yAxis=this.viewer.autocam.getWorldUpVector(),this.zAxis=this.viewer.autocam.getWorldFrontVector()},l=r.prototype;function c(e){function t(e,t,n,a){this.x=e,this.y=t,this.h=n,this.d=function(e,t,n){for(var a=!1,s=1/0,o=0;ot!=d.y>t&&e<(d.x-h.x)*(t-h.y)/(d.y-h.y)+h.x&&(a=!a),s=Math.min(s,i(e,t,h,d))}return(a?1:-1)*Math.sqrt(s)}(e,t,a),this.max=this.d+this.h*Math.SQRT2}function i(e,t,i,n){var a=i.x,s=i.y,o=n.x-a,r=n.y-s;if(0!==o||0!==r){var l=((e-a)*o+(t-s)*r)/(o*o+r*r);l>1?(a=n.x,s=n.y):l>0&&(a+=o*l,s+=r*l)}return(o=e-a)*o+(r=t-s)*r}function n(e,t){if(!(this instanceof n))return new n(e,t);if(this.data=e||[],this.length=this.data.length,this.compare=t||function(e,t){return et?1:0},this.length>0)for(var i=this.length>>1;i>=0;i--)this._down(i)}if(n.prototype={push:function(e){this.data.push(e),this.length++,this._up(this.length-1)},pop:function(){if(0!==this.length){var e=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),e}},peek:function(){return this.data[0]},_up:function(e){for(var t=this.data,i=this.compare,n=t[e];e>0;){var a=e-1>>1,s=t[a];if(i(n,s)>=0)break;t[e]=s,e=a}t[e]=n},_down:function(e){for(var t=this.data,i=this.compare,n=this.length>>1,a=t[e];e=0)break;t[e]=r,e=s}t[e]=a}},3===e.length)return function(e){for(var t=new THREE.Vector3,i=e.length,n=0;no)&&(o=c.x),(!l||c.y>r)&&(r=c.y)}var A=o-a,h=r-s,d=Math.min(A,h),u=d/2,p=new n(null,(function(e,t){return t.max-e.max}));if(0===d)return[a,s];for(var m=a;mb.d&&(b=C);p.length;){var v=p.pop();v.d>b.d&&(b=v),v.max-b.d<=.01||(u=v.h/2,p.push(new t(v.x-u,v.y-u,u,e)),p.push(new t(v.x+u,v.y-u,u,e)),p.push(new t(v.x-u,v.y+u,u,e)),p.push(new t(v.x+u,v.y+u,u,e)))}return{x:b.x,y:b.y}}s.GlobalManagerMixin.call(l),l.init=function(){return!1},l.updateDistance=function(){return!1},l.updateAngle=function(){return!1},l.clear=function(){return!1},l.updateLabelsPosition=function(){return!1},l.renderFromPoints=function(e,t){this.showMeasureResult=t,this.clear();for(var i=1;i<=Object.keys(e).length;i++){const t=e[i].intersection;this.endpoints[i]||this.createEndpoint(i),this.endpoints[i].position=new THREE.Vector3(t.x,t.y,t.z),this.showClick(i)}this.renderRubberbandFromPoints(e),this.updateLabelsPosition()},l.render=function(e,t){this.showMeasureResult=t,this.clear();for(var i=1;i<=Object.keys(e).length;i++)this.measurement.hasPick(i)&&this.renderPick(i);this.renderRubberband(e),this.updateLabelsPosition()},l.changeEndpointOnEditStyle=function(e,t){return!1},l.handleResize=function(){return!1},l.setNoTopology=function(){return!1},l.setFetchingTopology=function(){return!1},l.setTopologyAvailable=function(){return!1},l.clientToCanvasCoords=function(e){var t=this.viewer.impl.getCanvasBoundingClientRect(),i={};return Object.prototype.hasOwnProperty.call(e,"center")?(e.canvasX=i.x=e.center.x-t.left,e.canvasY=i.y=e.center.y-t.top):(e.canvasX=i.x=e.pointers[0].clientX-t.left,e.canvasY=i.y=e.pointers[0].clientY-t.top),i},l.initLabelMobileGestures=function(e,t){var i=this.viewer.toolController.getTool("magnifyingGlass");this.hammer=new s.Hammer.Manager(e,{recognizers:[s.GestureRecognizers.drag,s.GestureRecognizers.singletap],handlePointerEventMouse:!1,inputClass:s.Hammer.TouchInput}),this.onSingleTapBinded=function(e){var i=this.clientToCanvasCoords(e);this.snapper.onMouseDown(i),this.tool.editEndpoint(e,t,this.measurement.id)}.bind(this),this.onDragStartBinded=function(e){var n=this.clientToCanvasCoords(e);this.snapper.onMouseDown(n),this.tool.editEndpoint(e,t,this.measurement.id),this.tool.editByDrag=!0,e.type="press",i.handlePressHold(e),this.tool.handlePressHold(e),e.type="dragstart",i.handleGesture(e),this.tool.handleGesture(e)}.bind(this),this.onDragMoveBinded=function(e){var t=this.clientToCanvasCoords(e);this.snapper.onMouseDown(t),i.handleGesture(e),this.tool.handleGesture(e)}.bind(this),this.onDragEndBinded=function(e){var t=this.clientToCanvasCoords(e);this.snapper.onMouseDown(t),i.handleGesture(e),this.tool.handleGesture(e),e.type="pressup",i.handlePressHold(e),this.tool.handlePressHold(e),this.tool.handleButtonUp(e)}.bind(this),this.hammer.on("singletap",this.onSingleTapBinded),this.hammer.on("dragstart",this.onDragStartBinded),this.hammer.on("dragmove",this.onDragMoveBinded),this.hammer.on("dragend",this.onDragEndBinded)},l.clearLabelMobileGestures=function(){this.hammer&&(this.hammer.off("singletap",this.onSingleTapBinded),this.hammer.off("dragstart",this.onDragStartBinded),this.hammer.off("dragmove",this.onDragMoveBinded),this.hammer.off("dragend",this.onDragEndBinded),this.hammer=null)},l.updateVisibleLabelsArray=function(e,t){if(t)this.visibleLabels.indexOf(e)>-1||this.visibleLabels.push(e);else{var i=this.visibleLabels.indexOf(e);i>-1&&this.visibleLabels.splice(i,1)}},l.hideEndpoints=function(){for(var e in this.endpoints)if(Object.prototype.hasOwnProperty.call(this.endpoints,e)){var t=this.endpoints[e];t.label&&this.hideLabel(t.label)}},l.showEndpoints=function(){for(var e in this.endpoints)if(Object.prototype.hasOwnProperty.call(this.endpoints,e)){var t=this.endpoints[e];this.measurement.hasPick(e)&&t.label&&this.showLabel(t.label)}},l.hideLabel=function(e){e&&(o.safeToggle(e,"visible",!1),this.updateVisibleLabelsArray(e,!1))},l.showLabel=function(e){e&&(o.safeToggle(e,"visible",!0),this.updateVisibleLabelsArray(e,!0))},l.changeEndpointOnEditStyle=function(e,t){this.endpoints[e]&&this.endpoints[e].label&&o.safeToggle(this.endpoints[e].label,"on-edit",t)},l.changeEndpointEditableStyle=function(e,t){this.endpoints[e]&&this.endpoints[e].label&&o.safeToggle(this.endpoints[e].label,"editable",t)},l.changeAllEndpointsEditableStyle=function(e){for(var t in this.endpoints)Object.prototype.hasOwnProperty.call(this.endpoints,t)&&this.changeEndpointEditableStyle(t,e)},l.changeAllEndpointsOnEditStyle=function(e){for(var t in this.endpoints)Object.prototype.hasOwnProperty.call(this.endpoints,t)&&this.changeEndpointOnEditStyle(t,e)},l.hideLabelsOutsideOfView=function(){this.viewer.model&&!this.viewer.model.is2d()&&this.visibleLabels.forEach(function(e){if(e.point){var t=this.viewer.navigation.isPointVisible(e.point);(e.classList.contains("visible")&&!t||!e.classList.contains("visible")&&t)&&e.classList.toggle("visible",t)}}.bind(this))},l.showClick=function(e){this.tool.getActivePointIndex()!==e&&this.showLabel(this.endpoints[e].label)},l.hideClick=function(e){this.endpoints[e]&&this.hideLabel(this.endpoints[e].label)},l.renderPick=function(e){this.endpoints[e]||this.createEndpoint(e),this.renderEndpointGeometry(e),this.showClick(e)},l.renderEndpointGeometry=function(e){var t=o.getSnapResultPosition(this.measurement.getPick(e),this.viewer);null!==t&&(this.endpoints[e].position=t.clone())},l.drawEdgeAsCylinder=function(e,t,i,n,a){var s,o=[];const r=e.getAttribute("position"),l=new THREE.Vector3,c=new THREE.Vector3;if(1==n)for(let e=0;e=0?o:-o;var r=null,l=t.x-i.x,c=t.y-i.y;r=-((r=t.x90&&(r+=180),e.style.transform="rotate("+r+"deg) translate(0px, "+n+"px)"},l.destroy=function(){for(var e in this.materialPoint=null,this.materialFace=null,this.materialLine=null,this.materialAngle=null,s.isTouchDevice()&&this.clearLabelMobileGestures(),this.endpoints)if(Object.prototype.hasOwnProperty.call(this.endpoints,e)){var t=this.endpoints[e];t.label&&(t.label.removeEventListener(s.isSafari()?"mousedown":"pointerdown",this.onMouseClickBinded),t.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),t.label.parentNode.removeChild(t.label),t.label=null)}this.visibleLabels=[]},l.renderRubberbandFromPoints=function(e){const t=Object.keys(e),i=[];for(let n=0;n>>8).getHexString()}function C(e,t,i){r.call(this,e,t,i),this.measureTool=i,this.endpoints=[],this.lines={xyz:{axis:!1,material:this._createLineMaterial(d),className:"adsk-icon-axis-delta-xyz measure-label-axis-delta measure-label-axis-xyz"},x:{axis:!0,material:this._createLineMaterial(u),className:"adsk-icon-axis-delta-x measure-label-axis-delta measure-label-axis-x",iconText:"X"},y:{axis:!0,material:this._createLineMaterial(p),className:"adsk-icon-axis-delta-y measure-label-axis-delta measure-label-axis-y",iconText:"Y"},z:{axis:!0,material:this._createLineMaterial(m),className:"adsk-icon-axis-delta-z measure-label-axis-delta measure-label-axis-z",iconText:"Z"}},this.applyLineColor(this.lines.xyz.material),this.segments=[],this.dashedLines=[],this.simple=!1,this.angleLabel={},this.areaLabel={},this.arcLabel={},this.locationLabel={},this.calloutLabel={},this.labels=[],this.isLeaflet=!1,this.topologyStatus=f,this.tmpVector=new THREE.Vector3,this.surfaceColor=new THREE.MeshBasicMaterial({color:parseInt(d,16),opacity:.15,transparent:!0,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide}),this.applyLineColor(this.surfaceColor)}C.prototype=Object.create(r.prototype),C.prototype.constructor=C;var v=C.prototype,f=0;function E(e){return e.classList.contains("visible")}function w(e,t){return e.right>=t.left&&e.right<=t.right}function y(e,t){return e.left>=t.left&&e.left<=t.right}function x(e,t){return e.left<=t.left&&e.right>=t.right}function k(e,t,i){e.style.left=parseInt(e.style.left,10)+(i.right-t.left)+"px"}function T(e,t,i){e.style.top=parseInt(e.style.top,10)+(i.bottom-t.top)+"px"}function M(e,t){if(e){var i=e.querySelector(".measure-length-text");i&&(i.textContent=t)}}function B(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\n/g,"
")}function L(e){if("string"==typeof e)return B(e);let t="",i=e.fontSize;void 0!==e.fontSize&&10!==e.fontSize?(i=`font-size: ${0|10*i}%;`,t=" "):i="";let n=e.bold;n=void 0!==n?`${t}font-weight: ${n?"bold":"normal"};`:"";const a=B(e.text);return n||i?`${a}`:a}function S(e,t){if(e){var i=e.querySelector(".measure-delta-text");i&&(i.textContent=t)}}function R(e,t,i){if(e){var n=e.querySelector(".measure-fetching-topology");n&&(n.style.display=t&&1===i?"inline-block":"none")}}v.init=function(){var e;switch(this.isLeaflet=this.viewer.model.isLeaflet(),this.onSelectionAreaClickedBinded=this.onSelectionAreaClicked.bind(this),this.lines.xyz.label||((e=this.lines.xyz.label=this.createMeasurementLabel()).addEventListener("mousewheel",this.viewer.toolController.mousewheel),e.addEventListener("click",this.onSelectionAreaClickedBinded),this.viewer.container.appendChild(e)),this.topologyStatus){case 1:this.setFetchingTopology();break;case 2:this.setTopologyAvailable();break;case f:this.setNoTopology()}this.showMeasureResult=!1,this.onCameraChangeBinded=this.onCameraChange.bind(this),this.viewer.addEventListener(A.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded),this.handleButtonUpBinded=this.measureTool.handleButtonUp.bind(this.measureTool),this.addWindowEventListener("mouseup",this.handleButtonUpBinded)},v._hexToCorrectedColor=function(e){return g.set(parseInt(e,16)),this.viewer.impl.is2d||g.multiply(g),g},v._createLineMaterial=function(e){const t=this._hexToCorrectedColor(e);return new THREE.MeshBasicMaterial({color:t.getHex(),depthTest:!1,depthWrite:!1,side:THREE.DoubleSide})},v.createEndpoint=function(e){if(this.endpoints[e]={},2!==e||this.measurement.measurementType!==h.MeasurementTypes.MEASUREMENT_LOCATION&&this.measurement.measurementType!==h.MeasurementTypes.MEASUREMENT_CALLOUT){var t=this.endpoints[e].label=this.createSnapResultLabel(e);this.viewer.container.appendChild(t)}},v.applyLineColor=function(e){if(!e)return;const t=this.measurement.options&&this.measurement.options.format&&this.measurement.options.format.TEXTCOLOR&&"true"===this.measurement.options.format.TEXTCOLOR.Enabled&&this.measurement.options.format.FILLCOLOR&&"true"===this.measurement.options.format.FILLCOLOR.Enabled&&this.measurement.options.format.LINECOLOR&&"true"===this.measurement.options.format.LINECOLOR.Enabled?b(this.measurement.options.format.LINECOLOR.UIntValue):d,i=this._hexToCorrectedColor(t);e.color.set(i)},v.applyLabelColors=function(e){if(!e)return;const t=this.measurement.options&&this.measurement.options.format&&this.measurement.options.format.TEXTCOLOR&&"true"===this.measurement.options.format.TEXTCOLOR.Enabled&&this.measurement.options.format.FILLCOLOR&&"true"===this.measurement.options.format.FILLCOLOR.Enabled&&this.measurement.options.format.LINECOLOR&&"true"===this.measurement.options.format.LINECOLOR.Enabled,i=t?`#${b(this.measurement.options.format.TEXTCOLOR.UIntValue)}`:`#${d}`,n=t?`#${b(this.measurement.options.format.FILLCOLOR.UIntValue)}`:"#f4f4f4";e.style.color=i,e.style.backgroundColor=n},v.updateLabelsPosition=function(){var e,t,i,n;const a=(n,a)=>{t=h.project(e,this.viewer),i.style.top=t.y-a+"px",i.style.left=t.x-n+"px",i.point=e,this.applyLabelColors(i),this.labels.push(i)};for(n in this.endpoints)Object.prototype.hasOwnProperty.call(this.endpoints,n)&&(i=this.endpoints[n].label,e=this.endpoints[n].position,i&&e&&E(i)&&(t=h.project(e,this.viewer),a(i.getBoundingClientRect().width/2,i.getBoundingClientRect().height/2)));for(var s in this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,s)){var o=this.lines[s];if((i=o.label)&&o.p1&&o.p2&&E(i)){if(o.line.visible=o.visible,e={x:(o.p1.x+o.p2.x)/2,y:(o.p1.y+o.p2.y)/2,z:(o.p1.z+o.p2.z)/2},t=h.project(e,this.viewer),i.style.top=t.y-Math.floor(i.clientHeight/2)+"px",i.style.left=t.x-Math.floor(i.clientWidth/2)+"px",this.viewer.model&&this.viewer.model.is2d()){var r=o===this.lines.xyz?0:i.clientHeight,l=h.project(o.p1,this.viewer),c=h.project(o.p2,this.viewer);if(i.clientWidth>=l.distanceTo(c)-this.endpoints[1].label.clientWidth){if(o!==this.lines.xyz){for(s in this.lines.x.line.visible=!1,this.lines.y.line.visible=!1,this.viewer.impl.invalidate(!1,!1,!0),this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,s)&&this.lines[s]!==this.lines.xyz){var A=this.lines[s].label;A&&(A.style.opacity=0)}break}r=i.clientHeight}if(o!==this.lines.xyz){var d=new THREE.Vector3,u=new THREE.Vector3;d.subVectors(this.lines.xyz.p1,this.lines.xyz.p2).normalize(),u.subVectors(o.p1,o.p2).normalize(),d.cross(this.viewer.navigation.getEyeVector()).normalize().dot(u)<0&&(r=-r)}this.alignLabelWithLine(i,o.p1,o.p2,r,this.viewer)}i.style.opacity=1,i.point=e,this.applyLabelColors(i),this.labels.push(i)}}if(this.angleLabel&&(i=this.angleLabel.label)&&this.angleLabel.p1&&this.angleLabel.p2&&E(i)&&(e={x:(this.angleLabel.p1.x+this.angleLabel.p2.x)/2,y:(this.angleLabel.p1.y+this.angleLabel.p2.y)/2,z:(this.angleLabel.p1.z+this.angleLabel.p2.z)/2},t=h.project(e,this.viewer,5),a(Math.floor(i.clientWidth/2),Math.floor(i.clientHeight/2))),this.arcLabel&&(r=0,(i=this.arcLabel.label)&&this.arcLabel.p1&&this.arcLabel.p2&&E(i))){e={x:(this.arcLabel.p1.x+this.arcLabel.p2.x)/2,y:(this.arcLabel.p1.y+this.arcLabel.p2.y)/2,z:(this.arcLabel.p1.z+this.arcLabel.p2.z)/2},t=h.project(e,this.viewer,i.clientHeight),a(Math.floor(i.clientWidth/2),Math.floor(i.clientHeight/2));let n=h.project(this.arcLabel.point1Relative,this.viewer),s=h.project(this.arcLabel.point2Relative,this.viewer);if(i.clientWidth>=n.distanceTo(s)-this.endpoints[1].label.clientWidth){var p=h.project(this.arcLabel.midPointRelative,this.viewer),m=h.project(new THREE.Vector3,this.viewer);r=p.y>m.y?i.clientHeight:-i.clientHeight}this.alignLabelWithLine(i,this.arcLabel.point1Relative,this.arcLabel.point2Relative,r,this.viewer)}if(this.locationLabel&&(i=this.locationLabel.label)&&this.locationLabel.p&&E(i)&&(t=h.project(this.locationLabel.p,this.viewer),a(Math.floor(i.clientWidth/2),Math.floor(i.clientHeight/2))),this.calloutLabel&&(i=this.calloutLabel.label)&&this.calloutLabel.p&&E(i)&&(t=h.project(this.calloutLabel.p,this.viewer),a(Math.floor(i.clientWidth/2),Math.floor(i.clientHeight/2))),this.areaLabel&&(i=this.areaLabel.label)&&this.areaLabel.p1&&this.areaLabel.p2&&E(i)&&(e={x:(this.areaLabel.p1.x+this.areaLabel.p2.x)/2,y:(this.areaLabel.p1.y+this.areaLabel.p2.y)/2,z:(this.areaLabel.p1.z+this.areaLabel.p2.z)/2},t=h.project(e,this.viewer),a(Math.floor(i.clientWidth/2),Math.floor(i.clientHeight/2))),this.viewer.model&&!this.viewer.model.is2d()){var g,b,C=!1;this.labelsStacked=!1;var v=[];for(b=0;bo.top&&(w(d,h)?(n=d,a=h,(i=c).style.left=parseInt(i.style.left,10)-(n.right-a.left)+"px",A=!0):y(d,h)?(k(c,d,h),A=!0):x(d,h)&&(T(c,d,h),A=!0),A)){var u=t.slice(0);u.splice(u.indexOf(e),1),this.labelsOverlapDetection(c,u),c.causeStacking&&e.causeStacking&&(r=!0),c.causeStacking&&this.labelsStacked&&this.stackLabels(this.labels)}}}return r},v.stackLabels=function(e){for(var t=this.lines.xyz.label,i=1;i2&&(this.drawSegmentAndPush(n,i,!this.measurement.closedArea),h.isEqualVectors(n,i,h.EPSILON)||a.push(i),0!==this.measurement.area&&this.drawSurface(a)&&(this.showAreaLabel(c(a)),this.updateArea()))},v.renderAreaMeasurement=function(e){for(var t,i,n=this.measurement.countPicks(),a=[],s=1;s2&&(t=h.getSnapResultPosition(e[1],this.viewer),this.drawSegmentAndPush(t,i,!this.measurement.closedArea),h.isEqualVectors(t,i,h.EPSILON)||a.push(i),0!==this.measurement.area&&this.drawSurface(a)&&(this.showAreaLabel(c(a)),this.updateArea()))},v.clearAngleMeshes=function(){this.angleArc&&(this.viewer.impl.removeOverlay(this.overlayName,this.angleArc,!0),this.angleArc=null),this.angleOutline.length>0&&(this.viewer.impl.removeMultipleOverlays(this.overlayName,this.angleOutline,!0),this.angleOutline.length=0)},v.drawAngle=function(e,t,i,n,a,s,o){var r=.001;this.materialAngle||(this.materialAngle=new THREE.MeshPhongMaterial({color:10066329,opacity:.5,transparent:!0,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide}),this.materialAngleOutline=new THREE.MeshBasicMaterial({color:16750848,depthTest:!1,depthWrite:!1})),this.applyLineColor(this.lines.xyz.material),this.applyLineColor(this.surfaceColor),h.createCommonOverlay(this.viewer,this.overlayName),this.clearAngleMeshes();var l=o||Math.min(e.distanceTo(t),e.distanceTo(i))/4,c=new THREE.CircleBufferGeometry(l,100,0,a*Math.PI/180),A=new THREE.Mesh(c,this.surfaceColor);this.applyLineColor(this.surfaceColor);const d=A.geometry.getAttribute("position");{const e=Array.from(d.array),t=e.slice(0,d.itemSize);d.array=Float32Array.from(e.concat(t)),d.count++,d.needsUpdate=!0}A.position.set(e.x,e.y,e.z);var u=A.position.clone();u.add(n),A.lookAt(u),A.updateMatrixWorld();let p=(new THREE.Vector3).fromBufferAttribute(d,1),m=(new THREE.Vector3).fromBufferAttribute(d,d.count-2);p.applyMatrix4(A.matrixWorld),m.applyMatrix4(A.matrixWorld);var g=new THREE.Vector3,b=new THREE.Vector3,C=new THREE.Vector3,v=new THREE.Vector3;g.subVectors(p,e),b.subVectors(m,e),C.subVectors(t,e),v.subVectors(i,e);var f,E=g.angleTo(C),w=g.angleTo(v),y=b.angleTo(C),x=b.angleTo(v);f=(E<=r&&E>=-.001||w<=r&&w>=-.001)&&(y<=r&&y>=-.001||x<=r&&x>=-.001)?0:(E<=Math.PI+r&&E>=Math.PI-r||w<=Math.PI+r&&w>=Math.PI-r)&&(y<=Math.PI+r&&y>=Math.PI-r||x<=Math.PI+r&&x>=Math.PI-r)?Math.PI:E<=y+r&&E>=y-r||E<=x+r&&E>=x-r?E:w;var k=new THREE.Matrix4;k.makeRotationAxis(n,f),k.multiply(A.matrix),A.matrix=k,A.rotation.setFromRotationMatrix(A.matrix),A.updateMatrixWorld(),p=(new THREE.Vector3).fromBufferAttribute(d,1),m=(new THREE.Vector3).fromBufferAttribute(d,d.count-2),p.applyMatrix4(A.matrixWorld),m.applyMatrix4(A.matrixWorld),g.subVectors(p,e),b.subVectors(m,e),E=g.angleTo(C),w=g.angleTo(v),y=b.angleTo(C),x=b.angleTo(v),E>=r&&w>=r&&((k=new THREE.Matrix4).makeRotationAxis(n,2*-f),k.multiply(A.matrix),A.matrix=k,A.rotation.setFromRotationMatrix(A.matrix));const T=new THREE.CircleBufferGeometry(l,100,0,a*Math.PI/180);{const e=T.getAttribute("position");e.array=e.array.slice(e.itemSize),e.count--,e.needsUpdate=!0}if(A.updateMatrixWorld(),T.applyMatrix4(A.matrixWorld),this.angleOutline=this.drawEdgeAsCylinder(T,this.lines.xyz.material,2,0,this.getNewCylinderGeometry()),this.angleArc=A,this.viewer.impl.addOverlay(this.overlayName,this.angleArc),this.viewer.impl.addMultipleOverlays(this.overlayName,this.angleOutline),s.fromBufferAttribute(d,Math.round(d.count/2)-1),s.applyMatrix4(A.matrixWorld),!o){var M=new THREE.Vector3;M.subVectors(s,e).normalize(),M.multiplyScalar(l/2),s.add(M)}},v.createArcLabel=function(){var e=this.createMeasurementLabel();return this.viewer.container.appendChild(e),e.addEventListener("mousewheel",this.viewer.toolController.mousewheel),e.addEventListener("click",this.onSelectionAreaClickedBinded),e},v.clearArcMeshes=function(){this.arcOutline&&this.arcOutline.length>0&&(this.viewer.impl.removeMultipleOverlays(this.overlayName,this.arcOutline,!0),this.arcOutline.length=0)},v.drawCircularArc=function(e,t,i,n){let a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];var s=new THREE.BufferGeometry;const o=[new THREE.Vector3,new THREE.Vector3];var r=h.nearestPointInPointToSegment(this.viewer.navigation.getPosition(),e,t),l=this.setScale(r),c=new THREE.Vector3;c.subVectors(e,i);var A=Math.atan2(c.y,c.x),d=new THREE.Vector3;d.subVectors(t,i);var u=Math.atan2(d.y,d.x);this.arcLabel.point1Relative=c.clone(),this.arcLabel.point2Relative=d.clone().normalize().multiplyScalar(n);var p=u-A;p>Math.PI?p-=2*Math.PI:p<-Math.PI&&(p+=2*Math.PI);var m=new THREE.CircleBufferGeometry(n,100,A,p),g=new THREE.Mesh(m,this.lines.xyz.material);g.position.set(i.x,i.y,i.z);{const e=m.getAttribute("position");e.array=e.array.slice(e.itemSize),e.count--,e.needsUpdate=!0}function b(e,t){o[0].addVectors(e,t.clone().multiplyScalar(2*l)),o[1].subVectors(e,t.clone().multiplyScalar(2*l)),s.setFromPoints(o);var i=this.drawLineAsCylinder(s,this.lines.xyz.material,3,this.overlayName);this.arcTip.push(i)}g.updateMatrixWorld(),m.applyMatrix4(g.matrixWorld),h.createCommonOverlay(this.viewer,this.overlayName),this.clearArcMeshes(),this.arcOutline=this.drawEdgeAsCylinder(m,this.lines.xyz.material,4,0,this.getNewCylinderGeometry()),this.viewer.impl.addMultipleOverlays(this.overlayName,this.arcOutline),a&&(b.call(this,e,c.normalize()),b.call(this,t,d.normalize()));var C=new THREE.Vector3,v=A+.5*p;C.x=Math.cos(v)*n,C.y=Math.sin(v)*n,this.arcLabel.midPointRelative=C.clone(),C.applyMatrix4(g.matrixWorld),this.showArcLabel(C)},v.renderAngleMeasurementFromPoints=function(e){var t=[];const i=Object.keys(e);for(var n=0;nd.x||e===this.lines.y&&u.y>d.y||e===this.lines.z&&u.z>d.z)&&(l=d.clone(),d=u.clone(),u=l.clone()),e.line=null,A?this.hideLabel(A):A=this.createDistanceLabel(e),(this.isLeaflet&&e!==this.lines.z||d.distanceTo(u)>=h.EPSILON)&&r)if(e.p1=d,e.p2=u,e===this.lines.xyz)this.drawXYZLine(e),this.showLabel(A),this.updateDistance();else{c=e.line=this.drawLineSegment(d,u,2,e.material);var p=!this.simple&&this.showMeasureResult;c.visible=p,e.visible=p,p?this.showLabel(A):this.hideLabel(A)}},v.renderDistanceMeasurementFromPoints=function(e,t){this.updateLine(this.lines.xyz,e.x,e.y,e.z,t.x,t.y,t.z,!0);var i=this.viewer.navigation.getAlignedUpVector(),n=Math.abs(i.x),a=Math.abs(i.y),s=Math.abs(i.z),o=!1;s>n&&s>a?(this.updateLine(this.lines.x,e.x,e.y,e.z,t.x,e.y,e.z,o),this.updateLine(this.lines.y,t.x,e.y,e.z,t.x,t.y,e.z,o),this.updateLine(this.lines.z,t.x,t.y,e.z,t.x,t.y,t.z,o)):a>n&&a>s?(this.updateLine(this.lines.x,e.x,e.y,e.z,t.x,e.y,e.z,o),this.updateLine(this.lines.z,t.x,e.y,e.z,t.x,e.y,t.z,o),this.updateLine(this.lines.y,t.x,e.y,t.z,t.x,t.y,t.z,o)):(this.updateLine(this.lines.y,e.x,e.y,e.z,e.x,t.y,e.z,o),this.updateLine(this.lines.z,e.x,t.y,e.z,e.x,t.y,t.z,o),this.updateLine(this.lines.x,e.x,t.y,t.z,t.x,t.y,t.z,o))},v.renderDistanceMeasurement=function(e,t){var i=this;this.updateLine(this.lines.xyz,e.x,e.y,e.z,t.x,t.y,t.z,!0);var n=this.viewer.navigation.getAlignedUpVector(),a=Math.abs(n.x),s=Math.abs(n.y),o=Math.abs(n.z),r=function(e,t){return i.tmpVector.subVectors(e,t),i.tmpVector.normalize(),!h.isParallel(i.tmpVector,i.xAxis)&&!h.isParallel(i.tmpVector,i.yAxis)&&!h.isParallel(i.tmpVector,i.zAxis)}(e,t);o>a&&o>s?(this.updateLine(this.lines.x,e.x,e.y,e.z,t.x,e.y,e.z,r),this.updateLine(this.lines.y,t.x,e.y,e.z,t.x,t.y,e.z,r),this.updateLine(this.lines.z,t.x,t.y,e.z,t.x,t.y,t.z,r)):s>a&&s>o?(this.updateLine(this.lines.x,e.x,e.y,e.z,t.x,e.y,e.z,r),this.updateLine(this.lines.z,t.x,e.y,e.z,t.x,e.y,t.z,r),this.updateLine(this.lines.y,t.x,e.y,t.z,t.x,t.y,t.z,r)):(this.updateLine(this.lines.y,e.x,e.y,e.z,e.x,t.y,e.z,r),this.updateLine(this.lines.z,e.x,t.y,e.z,e.x,t.y,t.z,r),this.updateLine(this.lines.x,e.x,t.y,t.z,t.x,t.y,t.z,r))},v.updateResults=function(){this.updateDistance(),this.updateAngle(),this.updateArea(),this.updateArcLength(),setTimeout(function(){this.viewer.impl&&this.updateLabelsPosition()}.bind(this),0)},v.updateDistance=function(){function e(e,t){e&&(e.style.width=t)}function t(e){return e?e.clientWidth:0}Object.keys(this.lines).forEach(function(t){e(this.lines[t].label,"")}.bind(this)),S(this.lines.x.label,"~ "+this.measureTool.getDistanceX(this.measurement)),S(this.lines.y.label,"~ "+this.measureTool.getDistanceY(this.measurement)),S(this.lines.z.label,"~ "+this.measureTool.getDistanceZ(this.measurement)),M(this.lines.xyz.label,"~ "+this.measureTool.getDistanceXYZ(this.measurement)),this.viewer.model&&this.viewer.model.is3d()&&setTimeout(function(){var i=Math.max(t(this.lines.x.label),t(this.lines.y.label),t(this.lines.z.label),t(this.lines.xyz.label));Object.keys(this.lines).forEach(function(t){e(this.lines[t].label,i+"px")}.bind(this))}.bind(this),0)},v.updateAngle=function(){M(this.angleLabel.label,"~ "+this.measureTool.getAngle(this.measurement))},v.updateLocation=function(){M(this.locationLabel.label,("~ "+this.measureTool.getLocation(this.measurement)).split("\n").join("\n~ "))},v.updateCallout=function(){!function(e,t){if("string"==typeof t)return void M(e,t);var i=e.querySelector(".measure-length-text");i&&(Array.isArray(t)?i.innerHTML=t.map(L).join(""):i.innerHTML=L(t))}(this.calloutLabel.label,this.measureTool.getCallout(this.measurement))},v.updateArea=function(){M(this.areaLabel.label,"~ "+this.measureTool.getArea(this.measurement))},v.updateArcLength=function(){M(this.arcLabel.label,"~ "+this.measureTool.getArc(this.measurement))},v.setSimple=function(e){if(this.simple!=e){this.simple=e;var t=!e;this.setLineVisible(this.lines.x,t),this.setLineVisible(this.lines.y,t),this.setLineVisible(this.lines.z,t),this.updateLabelsPosition(),this.viewer.impl.invalidate(!1,!1,!0)}},v.setLineVisible=function(e,t){e.line&&(e.line.visible=t,e.visible=t,e.label&&(t?this.showLabel(e.label):(this.hideLabel(e.label),e.label.style.opacity=0)))},v.enableLabelsTouchEvents=function(e){var t=e?"all":"none";this.lines.xyz.label&&(this.lines.xyz.label.style.pointerEvents=t),this.angleLabel.label&&(this.angleLabel.label.style.pointerEvents=t),this.areaLabel.label&&(this.areaLabel.label.style.pointerEvents=t),this.arcLabel.label&&(this.arcLabel.label.style.pointerEvents=t)},v.setLabelsZIndex=function(e){for(var t in this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,t)){var i=this.lines[t];i.label&&(i.label.style.zIndex=e)}for(t in this.angleLabel&&this.angleLabel.label&&(this.angleLabel.label.style.zIndex=e),this.locationLabel&&this.locationLabel.label&&(this.locationLabel.label.style.zIndex=e),this.calloutLabel&&this.calloutLabel.label&&(this.calloutLabel.label.style.zIndex=e),this.areaLabel&&this.areaLabel.label&&(this.areaLabel.label.style.zIndex=e),this.arcLabel&&this.arcLabel.label&&(this.arcLabel.label.style.zIndex=e),this.endpoints)if(Object.prototype.hasOwnProperty.call(this.endpoints,t)){var n=this.endpoints[t];n.label&&(n.label.style.zIndex=e-1)}},v.focusLabels=function(){this.setLabelsZIndex(3)},v.unfocusLabels=function(){this.setLabelsZIndex(2)},v.clear=function(){var e;for(e in this.endpoints)if(Object.prototype.hasOwnProperty.call(this.endpoints,e)){var t=this.endpoints[e];t.label&&this.hideLabel(t.label)}for(e in this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,e)){var i=this.lines[e];i.line&&(i.line.visible=!1,i.visible=!1,i.tips&&i.tips.forEach((function(e){e.visible=!1}))),i.label&&(this.hideLabel(i.label),i.label.style.opacity=0,i.label.style.zIndex=2)}this.angleLabel&&this.angleLabel.label&&this.hideLabel(this.angleLabel.label),this.locationLabel&&this.locationLabel.label&&this.hideLabel(this.locationLabel.label),this.calloutLabel&&this.calloutLabel.label&&this.hideLabel(this.calloutLabel.label),this.areaLabel&&this.areaLabel.label&&this.hideLabel(this.areaLabel.label),this.arcLabel&&this.arcLabel.label&&this.hideLabel(this.arcLabel.label),this.clearSelectionAreas(),this.segments=[],this.dashedLines=[],this.viewer.impl.clearOverlay(this.overlayName,!0),h.createCommonOverlay(this.viewer,this.overlayName)},v.hideClick=function(e){for(var t in r.prototype.hideClick.call(this,e),this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,t)){var i=this.lines[t];i.line&&(i.line.visible=!1,i.visible=!1,i.tips&&i.tips.forEach((function(e){e.visible=!1}))),i.label&&(this.hideLabel(i.label),i.label.style.opacity=0)}this.angleLabel&&this.angleLabel.label&&this.hideLabel(this.angleLabel.label),this.areaLabel&&this.areaLabel.label&&this.hideLabel(this.areaLabel.label),this.arcLabel&&this.arcLabel.label&&this.hideLabel(this.arcLabel.label),this.enableSelectionAreas(i.selectionArea,!1)},v.destroy=function(){var e;for(e in r.prototype.destroy.call(this),this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,e)){var t=this.lines[e];t.line&&(this.viewer.impl.clearOverlay(self.overlayName,!0),t.material=t.line=t.geometry=null),t.label&&("xyz"===e&&(t.label.addEventListener("mousewheel",this.viewer.toolController.mousewheel),t.label.removeEventListener("click",this.onSelectionAreaClickedBinded)),t.label.parentNode.removeChild(t.label),t.label=null),t.material=t.line=t.geometry=t.label=t.p1=t.p2=null}this.clearAngleMeshes(),this.angleLabel&&this.angleLabel.label&&(this.angleLabel.label.parentNode.removeChild(this.angleLabel.label),this.angleLabel.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.angleLabel.label.removeEventListener("click",this.onSelectionAreaClickedBinded),this.angleLabel.label=this.angleLabel.p1=this.angleLabel.p2=null),this.clearArcMeshes(),this.arcLabel&&this.arcLabel.label&&(this.arcLabel.label.parentNode.removeChild(this.arcLabel.label),this.arcLabel.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.arcLabel.label.removeEventListener("click",this.onSelectionAreaClickedBinded),this.arcLabel.label=this.arcLabel.midPoint=null),this.locationLabel&&this.locationLabel.label&&(this.locationLabel.label.parentNode.removeChild(this.locationLabel.label),this.locationLabel.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.locationLabel.label=this.locationLabel.p=null),this.calloutLabel&&this.calloutLabel.label&&(this.calloutLabel.label.parentNode.removeChild(this.calloutLabel.label),this.calloutLabel.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.calloutLabel.label=this.calloutLabel.p=null),this.areaLabel&&this.areaLabel.label&&(this.areaLabel.label.parentNode.removeChild(this.areaLabel.label),this.areaLabel.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.areaLabel.label.removeEventListener("click",this.onSelectionAreaClickedBinded),this.areaLabel.label=this.areaLabel.p1=this.areaLabel.p2=null),this.viewer.impl.overlayScenes[this.overlayName]&&this.viewer.impl.removeOverlayScene(this.overlayName),this.viewer.removeEventListener(A.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded),this.removeWindowEventListener("mouseup",this.handleButtonUpBinded)},v.clearXYZLine=function(){this.viewer.impl.removeOverlay(this.overlayName,this.lines.xyz.line,!0),this.lines.xyz.tips&&this.lines.xyz.tips.forEach(function(e){this.viewer.impl.removeOverlay(this.overlayName,e,!0)}.bind(this))},v.updateScale=function(){var e;for(e in this.angleOutline.forEach((e=>this.setCylinderScale(e))),this.arcOutline.forEach((e=>this.setCylinderScale(e))),this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,e)){var t=this.lines[e];t.line&&t!==this.lines.xyz&&this.setCylinderScale(t.line,t.p1,t.p2)}for(e in this.segments)if(Object.prototype.hasOwnProperty.call(this.segments,e)){var i=this.segments[e];i.line&&this.setCylinderScale(i.line,i.p1,i.p2)}this.measurement.measurementType===h.MeasurementTypes.MEASUREMENT_DISTANCE&&this.measurement.isComplete()&&(this.clearXYZLine(),this.drawXYZLine(this.lines.xyz)),this.measurement.measurementType===h.MeasurementTypes.MEASUREMENT_ARC&&this.arcTip.forEach((e=>{var t=this.setScale(e.position);if(Object.prototype.hasOwnProperty.call(e,"lmv_line_width")){var i=t*e.lmv_line_width;e.scale.x=i,e.scale.z=i}var n=4*t;e.scale.y=n}))},v.setNoTopology=function(){this.topologyStatus=f,this.lines.xyz.label&&(R(this.lines.xyz.label,!1,this.topologyStatus),this.lines.xyz.label.classList.remove("fetching-topology"))},v.setFetchingTopology=function(){this.topologyStatus=1,this.lines.xyz.label&&(R(this.lines.xyz.label,!0,this.topologyStatus),this.lines.xyz.label.classList.add("fetching-topology"))},v.setTopologyAvailable=function(){this.topologyStatus=2,this.lines.xyz.label&&(R(this.lines.xyz.label,!1,this.topologyStatus),this.lines.xyz.label.classList.remove("fetching-topology"))},v.createMeasurementLabel=function(){const e=this.getDocument();var t=e.createElement("div");t.className="measure-length";var i=e.createElement("div");i.className="measure-fetching-topology",i.style.display="none",t.appendChild(i);var n=e.createElement("div");n.className="measure-length-text",t.appendChild(n);var a=e.createElement("div");return a.className="measure-delta-text",t.appendChild(a),t.causeStacking=!0,A.isMobileDevice()||h.safeToggle(t,"enable-hover",!0),t},v.createSnapResultLabel=function(e){const t=this.getDocument();var i=t.createElement("div");i.className="measure-label";var n=t.createElement("div");if(n.className="measure-label-icon",i.appendChild(n),A.isTouchDevice()){this.initLabelMobileGestures(i,e,this.measureTool);var a=t.createElement("div");a.className="measure-label-hit-area",i.appendChild(a)}return A.isMobileDevice()||(this.initMouseEvent(i,e),i.addEventListener("mousewheel",this.viewer.toolController.mousewheel),h.safeToggle(i,"enable-hover",!0)),i.causeStacking=!1,i},v.showAngleLabel=function(e){var t=this.angleLabel.label;t||(t=this.angleLabel.label=this.createMeasurementLabel(),this.viewer.container.appendChild(t),t.addEventListener("mousewheel",this.viewer.toolController.mousewheel),t.addEventListener("click",this.onSelectionAreaClickedBinded)),this.updateAngle(),this.showLabel(t),this.angleLabel.p1=e.clone(),this.angleLabel.p2=e.clone()},v.showArcLabel=function(e){var t=this.arcLabel.label;t?this.hideLabel(t):this.arcLabel.label=t=this.createArcLabel(),this.updateArcLength(),this.showLabel(t),this.arcLabel.p1=e.clone(),this.arcLabel.p2=e.clone()},v.showLocationLabel=function(e){var t=this.locationLabel.label;t||((t=this.locationLabel.label=this.createMeasurementLabel()).style.whiteSpace="pre-line",t.style.height="auto",t.style.textAlign="start",t.querySelector(".measure-delta-text").style.display="none",this.viewer.container.appendChild(t),t.addEventListener("mousewheel",this.viewer.toolController.mousewheel)),this.updateLocation(),this.showLabel(t),this.locationLabel.p=e.clone()},v.showCalloutLabel=function(e){var t=this.calloutLabel.label;t||((t=this.calloutLabel.label=this.createMeasurementLabel()).style.whiteSpace="pre-line",t.style.height="auto",t.style.textAlign="start",this.measurement.options&&this.measurement.options.width&&(t.style.width=this.measurement.options.width+"px"),t.querySelector(".measure-delta-text").style.display="none",this.viewer.container.appendChild(t),t.addEventListener("mousewheel",this.viewer.toolController.mousewheel)),this.updateCallout(),this.showLabel(t),this.calloutLabel.p=e.clone()},v.showAreaLabel=function(e){var t=this.areaLabel.label;t||(t=this.areaLabel.label=this.createMeasurementLabel(),this.viewer.container.appendChild(t),t.addEventListener("mousewheel",this.viewer.toolController.mousewheel),t.addEventListener("click",this.onSelectionAreaClickedBinded)),this.updateArea(),this.showLabel(t),this.areaLabel.p1=e,this.areaLabel.p2=e},v.onSelectionAreaClicked=function(){this.viewer.dispatchEvent({type:h.Events.SELECT_MEASUREMENT,data:{id:this.measurement.id}}),this.measureTool.selectMeasurementById(this.measurement.id)},v.createSelectionArea=function(){var e=this.getDocument().createElement("div");return e.id="measurement-selection-area-"+this.measurement.id,this.viewer.container.appendChild(e),e.className="measure-selection-area",e.style.display="none",e.addEventListener("mousewheel",this.viewer.toolController.mousewheel),e.addEventListener("click",this.onSelectionAreaClickedBinded),e},v.updateSelectionArea=function(){this.segments.forEach(function(e){if(e.p1&&e.p2){var t=h.project(e.p1,this.viewer),i=h.project(e.p2,this.viewer);e.selectionArea||(e.selectionArea=this.createSelectionArea());var n=e.selectionArea,a=new THREE.Vector2;n.style.top=t.y-7.5+"px",n.style.left=t.x+"px",n.style.width=a.subVectors(t,i).length()+"px",n.style.height="15px";var s,o=t.x-i.x,r=t.y-i.y;s=180*Math.atan2(-r,-o)/Math.PI,n.style.transform="rotate("+s+"deg)",n.style.transformOrigin="0px 7.5px"}}.bind(this)),this.measureTool.areAllPicksSet()&&this.enableSelectionAreas(!0)},v.clearSelectionAreas=function(){const e=this.getDocument();this.segments.forEach(function(t){if(t.selectionArea){t.selectionArea.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),t.selectionArea.removeEventListener("click",this.onSelectionAreaClickedBinded);var i=e.getElementById("measurement-selection-area-"+this.measurement.id);i&&i.parentNode.removeChild(i),t.selectionArea=null}}.bind(this))},v.enableSelectionAreas=function(e){this.segments.forEach(function(t){t.selectionArea&&(t.selectionArea.style.display=e?"block":"none")}.bind(this))},v.render=function(e,t){r.prototype.render.call(this,e,t),this.updateSelectionArea()},v.renderFromPoints=function(e,t){r.prototype.renderFromPoints.call(this,e,t),this.updateSelectionArea()},v.onCameraChange=function(){this.redrawDashedLines(),this.updateSelectionArea(),this.hideLabelsOutsideOfView(),this.updateLabelsPosition()},v.handleResize=function(){this.redrawDashedLines(),this.updateSelectionArea(),this.updateLabelsPosition()};var D=i(8070),N=i(9556);const P=THREE,I=Autodesk.Viewing,O=Autodesk.Viewing.Private;function V(e,i,n,a){var s=e,o=["measure"];this.setGlobalManager(e.globalManager);var r=n,l=Autodesk.Viewing,c=Autodesk.Viewing.MeasureCommon,A=!1,h=!1,d=!1,u=0,p=!1,m=!1,g=null,b=null,v=!1,f=new t(s),E=null,w=null,y=[],x=null,k=!1,T=a,M=!1,B=[],L=null,S=null,R=c.MeasurementTypes.MEASUREMENT_DISTANCE,I=!0,V=null,z=!1;function U(e){const t=(e=e||E).clonePicks(),i=[];for(let n=0;n0;)E=f.measurementsList[Object.keys(f.measurementsList)[0]],f.changeCurrentMeasurement(E),this.clearCurrentMeasurement(),E=null;T&&T.isActive()&&s.toolController.deactivateTool("snapper"),s.toolController.deactivateTool("magnifyingGlass"),s.impl.pauseHighlight(!1),f.destroy(),s.removeEventListener(l.CAMERA_CHANGE_EVENT,this.onCameraChange),s.removeEventListener(c.Events.MEASUREMENT_CHANGED_EVENT,this.onMeasurementChangedBinded),s.removeEventListener(l.SHOW_ALL_EVENT,this.onShowAllEvent)},this.clearIncompleteMeasurement=function(){this.areAllPicksSet()||(this.isEditingEndpoint?this.undoEditEndpoint():this.clearCurrentMeasurement())},this.update=function(){return!1},this.getUnits=function(){return r.units},this.setUnits=function(e){if(r.units!==e)for(var t in r.units=e,f.measurementsList)if(Object.prototype.hasOwnProperty.call(f.measurementsList,t)){var i=f.measurementsList[t];i.indicator&&i.indicator.updateResults()}},this.getPrecision=function(){return r.precision},this.setPrecision=function(e){if(Number.isInteger(e)&&!(e<0)&&r.precision!==e)for(var t in r.precision=e,f.measurementsList)if(Object.prototype.hasOwnProperty.call(f.measurementsList,t)){var i=f.measurementsList[t];i.indicator&&i.indicator.updateResults()}},this.getDistanceXYZ=function(e){var t;return e||(e=E),this.getDistanceAux(e.distanceXYZ,null===(t=e.result)||void 0===t?void 0:t.units)},this.getDistanceX=function(e){var t;return e||(e=E),this.getDistanceAux(e.distanceX,null===(t=e.result)||void 0===t?void 0:t.units)},this.getDistanceY=function(e){var t;return e||(e=E),this.getDistanceAux(e.distanceY,null===(t=e.result)||void 0===t?void 0:t.units)},this.getDistanceZ=function(e){var t;return e||(e=E),this.getDistanceAux(e.distanceZ,null===(t=e.result)||void 0===t?void 0:t.units)},this.getDistanceAux=function(e,t){if(s.model){let i=s.model.getUnitString();r.useViewportInfo&&t&&null===r.calibrationFactor&&(i=t);const n=Autodesk.Viewing.Private.convertUnits(i,r.units,r.calibrationFactor,e||0);return Autodesk.Viewing.Private.formatValueWithUnits(n,r.units,3,r.precision)}},this.getAngle=function(e){e||(e=E);var t=e.angle;return Autodesk.Viewing.Private.formatValueWithUnits(t,String.fromCharCode(176),3,r.precision)},this.getArc=function(e){if(s.model){e||(e=E);let i=s.model.getUnitString();var t=e.arc;const n=Autodesk.Viewing.Private.convertUnits(i,r.units,r.calibrationFactor,t||0);return Autodesk.Viewing.Private.formatValueWithUnits(n,r.units,3,r.precision)}},this.getLocation=function(e){e||(e=E);var t=e.location||{x:0,y:0,z:0};return"X: "+this.getDistanceAux(t.x)+"\nY: "+this.getDistanceAux(t.y)+"\nZ: "+this.getDistanceAux(t.z)},this.getCallout=function(e){return e||(e=E),e.text||""},this.getArea=function(e){if(s.model){var t;e||(e=E);let i=s.model.getUnitString();const n=null===(t=e.result)||void 0===t?void 0:t.units;r.useViewportInfo&&n&&null===r.calibrationFactor&&(i=n);const a=Autodesk.Viewing.Private.convertUnits(i,r.units,r.calibrationFactor,e.area,"square");return r.units?Autodesk.Viewing.Private.formatValueWithUnits(a,r.units+"^2",3,r.precision):Autodesk.Viewing.Private.formatValueWithUnits(a,null,3,r.precision)}},this.snapToFirstPick=function(t,i){if(E.hasPick(1)&&u>3&&!E.closedArea){var n=E.getPick(1),a=c.getSnapResultPosition(n,s),o=c.project(a,e),r=c.getSnapResultPosition(t,s),l=c.project(r,e);(i||l.distanceTo(o)<25)&&(T.onMouseMove(o),n.copyTo(t))}},this.render=function(e){this.isCalibrationSetOnPage()?G(0,!0):k&&x&&x.picks.length>0&&G(x.picks[0].viewportIndex2d);var t=E.computeResult(E.picks,s,T);return E.indicator.render(E.picks,p||!!e),t},this.setUseLastViewport=function(e){k=e},this.getUseLastViewport=function(){return k},this.setMeasurements=function(e){if(e&&0!==(e=Array.isArray(e)?e:[e]).length){for(let i=0;i{E=e,e.attachIndicator(s,this,C),w instanceof Function&&(w(),w=null),H(!1)},r=()=>{const e=f.getRestoredMeasurementData()[E.id];u=e.length};f.createMeasurementFromData(n,a,o,r)}this.deselectAllMeasurements()}function t(e){let t;switch(e.type){case"Distance":t=c.MeasurementTypes.MEASUREMENT_DISTANCE;break;case"Angle":t=c.MeasurementTypes.MEASUREMENT_ANGLE;break;case"Area":t=c.MeasurementTypes.MEASUREMENT_AREA;break;case"Arc":t=c.MeasurementTypes.MEASUREMENT_ARC;break;case"Location":t=c.MeasurementTypes.MEASUREMENT_LOCATION;break;case"Callout":t=c.MeasurementTypes.MEASUREMENT_CALLOUT;break;default:return}return t}},this.getMeasurement=function(e,t){if(!E)return null;r.units=e||r.units,r.precision=t||r.precision;var i=["Vertex","Edge","Face","Circular Arc","Curved Edge","Curved Face"],n=U(),a=Y();return{from:i[E.getGeometry(1).type],to:i[E.getGeometry(2).type],distance:this.getDistanceXYZ(),deltaX:this.getDistanceX(),deltaY:this.getDistanceY(),deltaZ:this.getDistanceZ(),angle:this.getAngle(),area:this.getArea(),arc:this.getArc(),location:this.getLocation(),text:this.getCallout(),unitType:r.units,precision:r.precision,picks:n,type:a}},this.getMeasurementPoints=function(){return E.clonePicks()},this.getMeasurementList=function(e,t){var i=[],n=null,a=["Vertex","Edge","Face","Circular Arc","Curved Edge","Curved Face"],o=Object.keys(f.measurementsList);for(let h=0;h{if(e)for(let t=0;t3},this.undoEditEndpoint=function(){for(var e in E.indicator.clear(),E.picks)Object.prototype.hasOwnProperty.call(E.picks,e)&&E.setPick(e,B[e].clone());E.indicator.changeEndpointOnEditStyle(u,!1),this.isEditingEndpoint=!1,this.updateViewportId(!0),this.allPicksSet(),this.render(!0)},this.updateResults=function(){E.indicator.updateResults(),E.indicator.showEndpoints(),E.indicator.focusLabels(),E.isComplete()&&this.isolateMeasurement()},this.deleteMeasurements=function(){const e=f.measurementsList,t=Object.keys(e);for(let i=0;i1)this.setPrecision(null===(n=e[i])||void 0===n?void 0:n.precision)}},this.setNoTopology=function(){_("setNoTopology"),w=function(){E.indicator.setNoTopology()}},this.setFetchingTopology=function(){w=function(){y.push(E),E.indicator.setFetchingTopology()},E&&E.indicator&&w()},this.setTopologyAvailable=function(){_("setTopologyAvailable"),w=function(){E.indicator.setTopologyAvailable()}},this.getSnapper=function(){return T},this.correctPickPosition=function(){var t=this.getActivePick();if(t&&!t.getGeometry()&&L&&(t.geomType=c.SnapType.SNAP_VERTEX,t.geomVertex=L,t.intersectPoint=L),this.hasPreviousPick()){var i=this.getPreviousPick();if(!c.correctPerpendicularPicks(i,t,e,T)){var n=(t.id+1)%(E.countPicks()+1);if(0===n&&(n=1),n!==t.id&&E.hasPick(n)){var a=E.getPick(n);c.correctPerpendicularPicks(a,t,e,T)}}E.measurementType==c.MeasurementTypes.MEASUREMENT_AREA&&this.snapToFirstPick(t)}},this._handleMouseEvent=function(t){var i=!1;if(T.isSnapped()){var n;if((this.areAllPicksSet()||this.isNoPicksSet())&&(this.startNewMeasurement(),u=1),T.copyResults(this.getActivePick()),!s.model.is2d()){let i=s.container.getBoundingClientRect(),n=t.canvasX||t.clientX-i.left,r=t.canvasY||t.clientY-i.top,l=this.getActivePick(),c=e.impl.hitTestViewport(e.impl.clientToViewport(n,r));if(l){var a,o;const e=s.model.getFragmentList(),t=new P.Matrix4;null!==(a=l.geomFace)&&void 0!==a&&a.fragId||0===(null===(o=l.geomFace)||void 0===o?void 0:o.fragId)?this.getActivePick().fragId=l.geomFace.fragId:this.getActivePick().fragId=null==c?void 0:c.fragId,e.getWorldMatrix(this.getActivePick().fragId,t);const i=(new P.Vector3).applyMatrix4(t);this.getActivePick().fragPos={x:i.x,y:i.y,z:i.z}}}if(p&&(null===(n=E)||void 0===n?void 0:n.measurementType)===c.MeasurementTypes.MEASUREMENT_ARC&&(!E.getPick(1).circularArcCenter||E.hasPick(2)&&(!c.isEqualVectors(E.getPick(1).circularArcCenter,E.getPick(2).circularArcCenter,0)||E.getPick(1).circularArcRadius!==E.getPick(2).circularArcRadius)))return!1;i=!0}else{if(t&&s.model){var r=s.container.getBoundingClientRect(),l=t.canvasX||t.clientX-r.left,A=t.canvasY||t.clientY-r.top;if(l&&A){let e;if(s.impl.is2d)e=!0;else{const t=[];s.impl.renderer().idAtPixel(l,A,t);const i=t[1];if(i>0){const t=s.impl.modelQueue().findModel(i);e=null==t?void 0:t.is2d()}}L=e?c.inverseProject({x:l,y:A},s):null}}if(p&&E&&!this.isEditingEndpoint&&u===E.getMaxNumberOfPicks()+1)return!0;var h=this.getActivePick();h&&h.clear()}if(E&&(this.correctPickPosition(),p&&this._doConsumeSingleClick(),!this.isNoPicksSet())){var d=this.render();E.hasPick(2)&&(i&=d)}return i},this._doConsumeSingleClick=function(){var e;if(E.measurementType===c.MeasurementTypes.MEASUREMENT_AREA&&!E.closedArea){var t=E.countPicks(),i=E.getPick(1),n=E.getPick(t);t>=3&&E.hasEqualPicks(i,n)&&(n.clear(),delete E.picks[t],E.closedArea=!0)}this.updateResults();var a=E.isComplete();this.updateViewportId(a),s.dispatchEvent({type:D.l,mode:a?"end":"start"}),O.analytics.track("viewer.measure",{action:"Measurement",type:c.MeasurementTypesToAnalytics[E.measurementType],snapping:(null===(e=this.getActivePick())||void 0===e?void 0:e.geomType)!==c.SnapType.RASTER_PIXEL})},this.handleButtonDown=function(e,t){return l.isMobileDevice()||(h=!0,s.dispatchEvent({type:D.l,mode:"start"}),0!==t||e.ctrlKey||e.metaKey||e.shiftKey||e.altKey||(p=!0,g=e.canvasX,b=e.canvasY)),!1},this.handleMouseMove=function(t){return l.isMobileDevice()||(t.canvasX===g&&t.canvasY===b||(p=!1),d=this.isEditingEndpoint,this.isNoPicksSet()||this.areAllPicksSet()||(this.clearPick(u),this._handleMouseEvent(t)),function(){var t;if(E||T.setArc(!0),(null===(t=E)||void 0===t?void 0:t.measurementType)===c.MeasurementTypes.MEASUREMENT_ARC&&e.model.is2d()){var i=E&&E.getPick(1),n=E&&E.hasPick(2)&&E.getPick(2);const e=!i||E.countPicks().length>2||c.isEqualVectors(i.circularArcCenter,n.circularArcCenter,0)&&i.circularArcRadius===n.circularArcRadius;T.setArc(e)}}(),T.indicator.render()),!1},this.restoreMouseListeners=function(){s.toolController.getTool("gestures").controller.enableMouseButtons(!0)},this.handlePressHold=function(e){if(p=!1,l.isTouchDevice())switch(e.type){case"press":return M=!0,(this.areAllPicksSet()||this.isNoPicksSet())&&(this.startNewMeasurement(),v&&this.clearIsolate(),u=1),this._handleMouseEvent(e),T.indicator.render(),!0;case"pressup":return p=!0,this.restoreMouseListeners(),m=!m,this.handleSingleClick(e),M=!1,!0}return!1},this.handleGesture=function(e){if(l.isTouchDevice()){if(p=!1,M)switch(this.clearPick(u),e.type){case"dragstart":case"dragmove":return this._handleMouseEvent(e),T.indicator.render(),!0;case"dragend":return M=!1,p=!0,this.editByDrag||(m=!m,this.handleSingleClick(e)),this.editByDrag=!1,this.restoreMouseListeners(),!0;case"pinchstart":case"pinchmove":this._handleMouseEvent(e),T.indicator.render();break;case"pinchend":return p=!0,m=!m,this.handleSingleClick(e),this.restoreMouseListeners(),!0}if(-1!==e.type.indexOf("pinch"))for(var t in f.measurementsList){if(Object.prototype.hasOwnProperty.call(f.measurementsList,t))f.measurementsList[t].indicator.updateScale()}}return!1},this.handleButtonUp=function(e,t){return h=!1,s.dispatchEvent({type:D.l,mode:"end"}),g=null,b=null,d&&(p=!0,m=!m,this.handleSingleClick(e),d=!1),!1},this.handleSingleClick=function(e,t){return p&&(T.indicator.clearOverlays(),E&&E.indicator.changeEndpointOnEditStyle(u,!1),this._handleMouseEvent(e)?(this.updateResults(),u++):this.isEditingEndpoint?this.undoEditEndpoint():E&&E.measurementType===c.MeasurementTypes.MEASUREMENT_AREA&&this.canCloseArea()?(this.snapToFirstPick(this.getActivePick(),!0),this._handleMouseEvent()):this.clearCurrentMeasurement(),E&&E.isComplete()&&this.allPicksSet(),p=!1,m=!m,this.isEditingEndpoint=!1,T.clearSnapped()),!0},this.handleDoubleClick=function(e){return!0},this.onCameraChange=function(){for(var e in f.measurementsList){if(Object.prototype.hasOwnProperty.call(f.measurementsList,e))f.measurementsList[e].indicator.updateScale()}T.indicator.onCameraChange()},this.handleSingleTap=function(e){return m||(p=!0,T.onMouseDown({x:e.canvasX,y:e.canvasY}),this.handleSingleClick(e)),m=!m,!0},this.handleDoubleTap=function(t){if(E&&E.measurementType===c.MeasurementTypes.MEASUREMENT_AREA&&E.countPicks()>2){var i=E.getPick(1),n=c.getSnapResultPosition(i,s),a=c.project(n,e);t.canvasX=a.x,t.canvasY=a.y,p=!0,T.onMouseDown(a),this.handleSingleClick(t),m=!m}return!0},this.handleResize=function(){for(var e in f.measurementsList)if(Object.prototype.hasOwnProperty.call(f.measurementsList,e)){var t=f.measurementsList[e];t.indicator&&t.indicator.handleResize()}},this.handleKeyDown=function(e,t){switch(t){case Autodesk.Viewing.KeyCode.BACKSPACE:case Autodesk.Viewing.KeyCode.DELETE:return E&&E.measurementType===c.MeasurementTypes.MEASUREMENT_AREA&&!this.areAllPicksSet()&&E.countPicks()>2?this.deleteCurrentPick():this.deleteCurrentMeasurement(),!0}return!1},this.isCalibrationSetOnPage=function(){return i.calibrateWithPage&&null!=r.calibrationFactor}}I.GlobalManagerMixin.call(V.prototype);var z=Autodesk.Viewing,U=Autodesk.Viewing.MeasureCommon;function G(e,t,i){r.call(this,e,t,i),this.calibrationTool=i,this.calibrationLabel=null,this.endpoints=null,this.tmpVector=new THREE.Vector3,this.p1=null,this.p2=null,this.rubberbandDefaultMaterial=new THREE.MeshBasicMaterial({color:15249964,opacity:1,transparent:!1,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide}),this.rubberbandSnappedMaterial=new THREE.MeshBasicMaterial({color:23502,opacity:1,transparent:!1,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide}),this.rubberbandTipMaterial=new THREE.MeshBasicMaterial({color:0,opacity:1,transparent:!1,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide})}G.prototype=Object.create(r.prototype),G.prototype.constructor=G;var Y=G.prototype;function H(e,t){return e.right>=t.left&&e.right<=t.right}function _(e,t){return e.left>=t.left&&e.left<=t.right}function F(e,t){return e.left<=t.left&&e.right>=t.right}function W(e,t,i){e.style.left=parseInt(e.style.left,10)+(i.right-t.left)+"px"}function j(e,t,i){e.style.top=parseInt(e.style.top,10)+(i.bottom-t.top)+"px"}Y.createEndpoint=function(e){this.endpoints[e]={},this.endpoints[e].position=null;const t=this.getDocument();var i=this.endpoints[e].label=t.createElement("div");i.className="calibration-endpoint",this.viewer.container.appendChild(i);var n=t.createElement("div");n.className="calibration-endpoint-text",n.textContent=e.toString(),i.appendChild(n),z.isTouchDevice()&&this.initLabelMobileGestures(i,e,this.calibrationTool),z.isMobileDevice()||(U.safeToggle(i,"enable-hover",!0),this.initMouseEvent(i,e),i.addEventListener("mousewheel",this.viewer.toolController.mousewheel))},Y.init=function(){if(U.createCommonOverlay(this.viewer,this.overlayName),!this.calibrationLabel){const t=this.getDocument();this.calibrationLabel=t.createElement("div"),this.calibrationLabel.className="calibration-label",this.hideLabel(this.calibrationLabel),this.viewer.container.appendChild(this.calibrationLabel),this.calibrationLabel.addEventListener("mousewheel",this.viewer.toolController.mousewheel);var e=t.createElement("div");e.className="calibration-label-text",this.calibrationLabel.appendChild(e)}this.endpoints=[],this.handleButtonUpBinded=this.calibrationTool.handleButtonUp.bind(this.calibrationTool),this.addWindowEventListener("mouseup",this.handleButtonUpBinded),this.onCameraChangeBinded=this.onCameraChange.bind(this),this.viewer.addEventListener(z.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded)},Y.destroy=function(){this.clear(),r.prototype.destroy.call(this),this.calibrationLabel&&(this.calibrationLabel.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.viewer.container.removeChild(this.calibrationLabel),this.calibrationLabel=null),this.viewer.impl.clearOverlay(this.overlayName,!0),this.viewer.impl.removeOverlayScene(this.overlayName),this.removeWindowEventListener("mouseup",this.handleButtonUpBinded),this.viewer.removeEventListener(z.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded)},Y.clearRubberband=function(){this.viewer.impl.clearOverlay(this.overlayName,!0)},Y.clear=function(){for(var e in this.clearRubberband(),this.hideLabel(this.calibrationLabel),this.endpoints)Object.prototype.hasOwnProperty.call(this.endpoints,e)&&(this.hideClick(e),this.endpoints[e].position=null)},Y.updateLabelValue=function(e){e&&""!==e?(this.calibrationLabel.childNodes[0].setAttribute("data-i18n",e),this.calibrationLabel.childNodes[0].textContent=z.i18n.translate(e),this.showLabel(this.calibrationLabel),this.calibrationTool.render()):(this.calibrationLabel.childNodes[0].textContent=null,this.hideLabel(this.calibrationLabel))},Y.changeLabelClickableMode=function(e){this.calibrationLabel.childNodes[0].style.pointerEvents=e?"all":"none"},Y.showAddCalibrationLabel=function(){var e=this;this.updateLabelValue("Add Calibration"),this.changeLabelClickableMode(!0),this.calibrationTool.render(),this.calibrationLabel.addEventListener("click",(function t(){e.calibrationLabel.childNodes[0].style.pointerEvents="none",e.calibrationTool.render(),e.updateLabelValue(null),e.calibrationTool.showPanel(),e.calibrationLabel.removeEventListener("click",t)}))},Y.updateLabelsPosition=function(){for(var e=1;e<=Object.keys(this.endpoints).length;e++)if(this.endpoints[e].position){var t=this.endpoints[e].label,i=U.project(this.endpoints[e].position,this.viewer,15);t.style.left=i.x-parseInt(t.clientWidth)/2+"px",t.style.top=i.y-parseInt(t.clientHeight)/2+"px",t.point=this.endpoints[e].position,this.labelsOverlapDetection(this.endpoints[e].label,this.endpoints)}this.hideLabelsOutsideOfView()},Y.labelsOverlapDetection=function(e,t){for(var i=1;i<=Object.keys(t).length;i++){var n=t[i].label;if(e!==n){var a=e.getBoundingClientRect(),s=n.getBoundingClientRect();A=a,(c=s).topA.top&&(H(s,a)?(r=s,l=a,(o=n).style.left=parseInt(o.style.left,10)-(r.right-l.left)+"px"):_(s,a)?W(n,s,a):F(s,a)&&j(n,s,a))}}var o,r,l,c,A},Y.renderCalibrationLabel=function(){if(this.showMeasureResult&&this.calibrationLabel&&this.p1&&this.p2){var e={x:(this.p1.x+this.p2.x)/2,y:(this.p1.y+this.p2.y)/2,z:(this.p1.z+this.p2.z)/2},t=U.project(e,this.viewer);this.labelPosition=new THREE.Vector2(t.x,t.y),this.calibrationLabel.childNodes[0].textContent&&this.showLabel(this.calibrationLabel),this.calibrationLabel.style.top=this.labelPosition.y-Math.floor(this.calibrationLabel.clientHeight/2)+"px",this.calibrationLabel.style.left=this.labelPosition.x-Math.floor(this.calibrationLabel.clientWidth/2)+"px",this.calibrationLabel.point=e,this.viewer.model.is2d()&&this.alignLabelWithLine(this.calibrationLabel,this.p1,this.p2,this.calibrationLabel.clientHeight,this.viewer)}},Y.drawMeasurementLineTip=function(e,t,i,n){const a=[new THREE.Vector3,new THREE.Vector3],s=new THREE.BufferGeometry;var o=this.setScale(e);n=n?-1:1;var r=this.snapper.isSnapped()&&!this.showMeasureResult?this.rubberbandSnappedMaterial:this.rubberbandTipMaterial;a[0].addVectors(e,i.clone().multiplyScalar(5*o)),a[1].subVectors(e,i.clone().multiplyScalar(5*o)),s.setFromPoints(a),this.drawLineAsCylinder(s,r,1.5,this.overlayName),a[0].copy(e),a[1].subVectors(e,t.clone().multiplyScalar(5*o*n)),s.setFromPoints(a),this.drawLineAsCylinder(s,r,1.5,this.overlayName),a[0].addVectors(e,i.clone().multiplyScalar(3*o)),a[1].subVectors(e,i.clone().multiplyScalar(3*o)),s.setFromPoints(a),this.drawLineAsCylinder(s,this.rubberbandDefaultMaterial,2,this.overlayName),a[0].addVectors(e,i.clone().multiplyScalar(3*o)),a[0].addVectors(a[0],t.clone().multiplyScalar(3*o)),a[1].subVectors(e,i.clone().multiplyScalar(3*o)),a[1].subVectors(a[1],t.clone().multiplyScalar(3*o)),s.setFromPoints(a),this.drawLineAsCylinder(s,this.rubberbandDefaultMaterial,2,this.overlayName)},Y.renderDistanceMeasurement=function(e,t){if(this.viewer.impl.clearOverlay(this.overlayName,!0),e&&t){var i=(new THREE.Vector3).subVectors(t,e).normalize(),n=i.clone().cross(this.viewer.navigation.getEyeVector()).normalize(),a=this.setScale(e),s=2*a,o=1*a,r=(Math.abs(e.x-t.x)<=.1||Math.abs(e.y-t.y)<=.1||this.snapper.getSnapResult().isPerpendicular)&&!this.showMeasureResult?this.rubberbandSnappedMaterial:this.rubberbandDefaultMaterial;if(this.showMeasureResult){const i=(new THREE.BufferGeometry).setFromPoints([e,t]);this.drawLineAsCylinder(i,r,3,this.overlayName)}else this.drawDashedLine(e,t,s,o,r,3,this.overlayName);this.drawMeasurementLineTip(e,i,n,!1),this.showMeasureResult&&this.drawMeasurementLineTip(t,i,n,!0),this.p1=e,this.p2=t,this.renderCalibrationLabel()}},Y.onCameraChange=function(){this.measurement.isComplete()&&this.renderDistanceMeasurement(this.p1,this.p2),this.updateLabelsPosition()};var Q=Autodesk.Viewing,Z=Autodesk.Viewing.Extensions,J=Autodesk.Viewing.Private,X=Autodesk.Viewing.UI,q=Autodesk.Viewing.MeasureCommon;const K=X&&X.DockingPanel||class{},$=Z&&Z.ViewerPanelMixin||function(){},ee=Q.getGlobal().document;var te=function(e,t,i,n,a){var s=this;(a=a||{}).addFooter=!1,K.call(this,t.container,i,n,a),this.viewer=t,this.calibrationTool=e,this.parentContainer=t.container,this.container.style.left="0px",this.container.style.top="0px",this.container.style.resize="none",this.container.classList.add("calibration-panel"),this.setGlobalManager&&this.setGlobalManager(t.globalManager),this.addEventListener(this.closer,"click",(function(e){s.cancel()})),a.heightAdjustment||(a.heightAdjustment=40),a.marginTop||(a.marginTop=0),a.left=!1,this.createScrollContainer(a);const o=this.getDocument&&this.getDocument()||ee;this.calibrationMenu=o.createElement("div"),this.scrollContainer.appendChild(this.calibrationMenu),this.table=o.createElement("table"),this.table.className="adsk-lmv-tftable calibration-table",this.tbody=o.createElement("tbody"),this.table.appendChild(this.tbody),this.calibrationMenu.appendChild(this.table),this.row=this.tbody.insertRow(0),this.requestedSizeTextbox=o.createElement("input"),this.requestedSizeTextbox.className="docking-panel-textbox",this.requestedSizeTextbox.type="text",this.requestedSizeTextbox.autofocus="true",this.addEventListener(this.requestedSizeTextbox,"keyup",(function(e){var t=s.requestedSizeTextbox.value;""!==t&&""===t.split(".")[0]&&(s.requestedSizeTextbox.value="0"+t),s.updateLabel()})),this.addEventListener(this.requestedSizeTextbox,"keypress",(function(e){var t=e.key||String.fromCharCode(e.keyCode);if("Backspace"!=t&&"ArrowLeft"!=t&&"ArrowRight"!=t)if(e.keyCode!=Q.KeyCode.ESCAPE){if(e.keyCode==Q.KeyCode.ENTER){var i=s.unitList.selectedIndex,n=s.units[i].units;s.calibrationTool.calibrate(n,s.requestedSizeTextbox.value)}var a=s.requestedSizeTextbox.value,o=s.requestedSizeTextbox.selectionStart;if("."!=(a=[a.slice(0,o),t,a.slice(o)].join(""))){var r=s.units[s.unitList.selectedIndex].simpleInput;(!ie(a)||r&&(!ne(a)||Autodesk.Viewing.Private.calculatePrecision(a)>s.calibrationTool.getMaxPrecision()))&&e.preventDefault()}}else s.cancel()}));var r="Define Size",l=this.row.insertCell(0);this.caption=o.createElement("div"),this.caption.setAttribute("data-i18n",r),this.caption.textContent=Q.i18n.translate(r),l.appendChild(this.caption),(l=this.row.insertCell(1)).appendChild(this.requestedSizeTextbox),this.units=[{name:"Feet and fractional inches",units:"ft-and-fractional-in",matches:["ft-and-fractional-in","fractional-in"],simpleInput:!1},{name:"Feet and decimal inches",units:"ft-and-decimal-in",matches:["ft","decimal-ft","in","decimal-in","ft-and-decimal-in"],simpleInput:!1},{name:"Meters",units:"m",matches:["m","m-and-cm"],simpleInput:!0},{name:"Centimeters",units:"cm",matches:["cm"],simpleInput:!0},{name:"Millimeters",units:"mm",matches:["mm"],simpleInput:!0}];for(var c=[],A=0;A=0};te.prototype=Object.create(K.prototype),$.call(te.prototype),te.prototype.uninitialize=function(){this.viewer=null,K.prototype.uninitialize.call(this)},te.prototype.cancel=function(){this.setVisible(!1),this.calibrationTool.clearSize(),this.calibrationTool.showAddCalibrationLabel()},te.prototype.findUnits=function(){var e,t,i=this.calibrationTool.getCurrentUnits();for(e=0;ethis.viewer.canvas.clientWidth||s<0||s+r>this.viewer.canvas.clientHeight)&&(a=Math.floor((this.viewer.canvas.clientWidth-o)/2),s=Math.floor((this.viewer.canvas.clientHeight-r)/2))}else a=Math.floor((this.viewer.canvas.clientWidth-o)/2),s=Math.floor((this.viewer.canvas.clientHeight-r)/2);this.container.style.left=a+"px",this.container.style.top=s+"px"};var ae=function(e,t,i,n,a){var s=this;(a=a||{}).addFooter=!1,K.call(this,t.container,i,n,a),this.viewer=t,this.measureExt=e,this.parentContainer=t.container,this.container.classList.add("calibration-panel"),this.setGlobalManager&&this.setGlobalManager(t.globalManager),a.heightAdjustment||(a.heightAdjustment=70),a.marginTop||(a.marginTop=0),a.left=!1;const o=this.getDocument&&this.getDocument()||ee;this.createScrollContainer(a),this.dialogBox=o.createElement("div"),this.scrollContainer.appendChild(this.dialogBox);var r=o.createElement("div");r.className="calibration-text";var l="Calibration Message";r.setAttribute("data-i18n",l),r.textContent=Q.i18n.translate(l),this.dialogBox.appendChild(r);var c=o.createElement("div");c.className="calibration-buttons-wrapper",this.dialogBox.appendChild(c);var A=o.createElement("div");A.classList.add("docking-panel-secondary-button"),A.classList.add("calibration-button-left"),A.setAttribute("data-i18n","Cancel"),A.textContent=Q.i18n.translate("Cancel"),A.addEventListener("click",(function(){s.setVisible(!1)}),!1),c.appendChild(A);var h=o.createElement("div");h.classList.add("docking-panel-primary-button"),h.classList.add("calibration-button-right"),h.setAttribute("data-i18n","Calibrate Now"),h.textContent=Q.i18n.translate("Calibrate Now"),h.addEventListener("click",(function(){s.measureExt.enableCalibrationTool(!0),s.setVisible(!1)}),!1),c.appendChild(h)};ae.prototype=Object.create(K.prototype),$.call(ae.prototype),ae.prototype.uninitialize=function(){this.viewer=null,K.prototype.uninitialize.call(this)};const se=Autodesk.Viewing;var oe=function(e,t,i,n){var a=Autodesk.Viewing,s=Autodesk.Viewing.MeasureCommon,o=["calibration"],r=e,l=new s.Measurement(s.MeasurementTypes.MEASUREMENT_DISTANCE),c=t||{};this.setGlobalManager(e.globalManager);var A=i,h=t.maxPrecision||5,d=null!=i.calibrationFactor,u=n,p=!1,m=!1,g=!1,b=null,C=!1,v=null,f=null,E=null,w=null,y=!1,x=[],k=null,T=0,M=!1,B=!1,L=!1,S=null,R=null,N=null,P=Autodesk.Viewing.GuiViewer3D&&e instanceof Autodesk.Viewing.GuiViewer3D;function I(){switch(T){case 0:return null;case 1:case 2:return l.getPick(T);case 3:return l.getPick(l.countPicks())}}function O(){switch(T){case 0:return null;case 1:return l.getPick(l.countPicks());case 2:case 3:return l.getPick(1)}}function V(){T=0}function z(){T=3,l.indicator.changeAllEndpointsEditableStyle(!0)}function U(){return 0===T}function Y(){return 3===T}this.register=function(){P&&!N&&(N=new te(this,r,"calibration-panel","Calibration",c),r.addPanel(N)),this.onCameraChangeBinded=this.onCameraChange.bind(this),this.screenSizeChangedBinded=this.screenSizeChanged.bind(this)},this.deregister=function(){this.deactivate(),N&&(r.removePanel(N),N.uninitialize(),N=null)},this.isActive=function(){return p},this.getNames=function(){return o},this.getName=function(){return o[0]},this.getPriority=function(){return 50},this.getCursor=function(){return m?null:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAYCAYAAAD+vg1LAAAAAXNSR0IArs4c6QAAAwZJREFUSA2tVEtLW0EUvjGJefoqSY0x0WBSiY+oNWiUINkU6ioLaaAlG1eudNVFoT+grgopiCkEIbUK1o0lusmurRSEWmmKG6MNtNhNosWqyU2CZPpN8cr15nFD7YHDzHnON2fOGYZhmHkw4XEW+wD4xkT4lMvl6CE0+Y2ohh+dz+cZn89HVS/5+n/d/wVMkXq9Xor2v5SBgsmymQwZHx+vOqlKpXKDXWI3eU6Tg+kqSjSh3W4/s9lsvzUajaNcAK3xY7Dyci3nd6WXSCS60dHRvMfjSRcKBfWV4SYbrVarB8p0PB5nY7HYmdVq/aDX67WlckpKKcvpOjs7X09OTvoPDw8z2Wy2Bu+imJqa+npycnJXGHOt3YRGoSyVSvvMZrNkYWFBs7GxkaoBAXFJcDJhcCW5rq5ur62trQ/EOhyOBhDT2Nj4qVKMqA31ve1yub7Rfufo/PycDA4OxpuamhqECaouhVqtfuD3+1tqa2uZQCCQDoVCWTwknVQDDvIKE1clI1ja09Ozg0cjx8fHpL+/P+50OhMU8f7+Punt7f2I5NdqXRXi9fV1z9jYWCuIWV5eziSTyWAqlXq1urqaw6AwOMiCG4lOYtEturu732xubhK0FQHSvfr6+lsog4HWPIPvIBqNErRiqCiwkkKpVFowZd8xZSQYDLImk+kJ52+xWJ4tLS3hU8yTkZGRBD2Ms4mu6Nun4XA4f3p6SoaGhuJ0+rgg/Bsmt9udYFmWzM3NZdDT05ztWsE5JV0R1AqUCfTt0fb2tjESiRRmZmaOUOcI3w9DY5mdnb03PDzMoDQ/MZFRzM20lO/E38vl8vt46UdAq0WNJWixlEwmu8B1bXioOxwjpgXJ0hMTE1og1qysrDghf+HnKtoD7c7u7i5ZXFzMGY3GF7iFuRR3dHTMr62tXWxtbZH29vZ3RYmECozu54ODAzpdP2hphHZOVigUVjChvgMDA+85fdm1q6vrrU6n+4WR9Zd1ujQ0Nzc/NBgMScSExXwZ2j5oL5Wo46UD/ZvxUemo+AdW1zJzUYr16wAAAABJRU5ErkJggg==), auto"},this.activate=function(){if(p=!0,m=!1,this.isEditingEndpoint=!1,this.editByDrag=!1,V(),r.toolController.activateTool(u.getName()),r.toolController.activateTool("magnifyingGlass"),l.indicator||l.attachIndicator(r,this,G),l.indicator.clear(),C&&E&&w){l.setPick(1,E.clone()),l.setPick(2,w.clone()),z();var e=Autodesk.Viewing.Private.UnitParser.parsePositiveNumber(v,f);l.indicator.updateLabelValue(Autodesk.Viewing.Private.formatValueWithUnits(e,f,3,A.precision)),b=l.distanceXYZ,l.indicator.changeLabelClickableMode(!1),y=!0;var t=this.render();l.indicator.changeAllEndpointsEditableStyle(!0),t&&(N&&N.setPanelValue(v),this.showPanel())}else if(P){const e={messageKey:"Select two points",messageDefaultValue:"Select two points to calibrate drawing",position:"top"};Autodesk.Viewing.Private.HudMessage.displayMessage(r.container,e)}r.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded),r.addEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this.screenSizeChangedBinded)},this.deactivate=function(){p&&(r.dispatchEvent({type:D.l,mode:"end"}),p=!1,Autodesk.Viewing.Private.HudMessage.dismiss(),this.hidePanel(),this.updateViewportId(!0),y=!1,l.clearAllPicks(),u&&u.isActive()&&r.toolController.deactivateTool(u.getName()),r.toolController.deactivateTool("magnifyingGlass"),l.indicator&&(l.indicator.clear(),l.indicator.destroy(),l.indicator=null),r.removeEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded),r.removeEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this.screenSizeChangedBinded))},this.getActivePointIndex=function(){return T},this.setCalibrationFactor=function(e){A.calibrationFactor=e},this.getCalibrationFactor=function(){return A.calibrationFactor},this.updateLabelValue=function(e){l.indicator.updateLabelValue(e)},this.isCalibrationValid=function(e,t){var i=Autodesk.Viewing.Private.UnitParser.parsePositiveNumber(t,e);return!isNaN(i)},this.calibrate=function(e,t){var i=null,n=Autodesk.Viewing.Private.UnitParser.parsePositiveNumber(t,e);if(!isNaN(n)){var a=Autodesk.Viewing.Private.convertUnits(r.model.getUnitString(),e,1,b);if(0!==a&&!isNaN(a)){i=n/a,A.calibrationFactor=i,A.units=e;var o=r.model.is2d()?3:1,c=Autodesk.Viewing.Private.calculatePrecision(t);A.precision=Math.max(A.precision?A.precision:o,c),v=t,f=e,d=!0,C=!0,E=l.getPick(1).clone(),w=l.getPick(2).clone()}}i&&(r.getExtension("Autodesk.Measure").enableCalibrationTool(!1),r.dispatchEvent({type:s.Events.FINISHED_CALIBRATION,units:e,scaleFactor:i,size:t}))},this.calibrateByScale=function(e,t){A.calibrationFactor=t,A.units!==e&&(A.units=e,f=e),d=!0},this.getCurrentUnits=function(){return A.units},this.hidePanel=function(){N?N.setVisible(!1):r.dispatchEvent({type:s.Events.CLOSE_CALIBRATION_PANEL_EVENT})},this.showPanel=function(){Autodesk.Viewing.Private.HudMessage.dismiss();var e=this;const t=this.getWindow();N?(t.setTimeout((function(){N.requestedSizeTextbox.focus()}),0),N.setVisible(!0),N.updatePanelPosition(l.indicator.labelPosition,l.indicator.p1,l.indicator.p2,l.indicator.calibrationLabel.clientHeight),N.updateUnits(),e.addWindowEventListener("keyup",(function t(i){"Escape"==(i.key||String.fromCharCode(i.keyCode))&&e.isActive()&&(e.hidePanel(),e.clearSize(),e.showAddCalibrationLabel(),e.removeWindowEventListener("keyup",t))}))):r.dispatchEvent({type:s.Events.OPEN_CALIBRATION_PANEL_EVENT,data:{size:v,units:f}})},this.updateCalibrationPanel=function(){N&&N.updateUnits()},this.showAddCalibrationLabel=function(){l.indicator.showAddCalibrationLabel()},this.isCalibrated=function(){return d},this.clearSize=function(){l.indicator.updateLabelValue(null),N?N.requestedSizeTextbox.value="":r.dispatchEvent({type:s.Events.CLEAR_CALIBRATION_SIZE_EVENT})},this.getMaxPrecision=function(){return h},this.clearMeasurement=function(){V(),this.clearPick(1),this.clearPick(2),l.indicator.clear(),this.updateViewportId(!0),this.hidePanel(),y=!1},this.clearPick=function(e){l.hasPick(e)&&(l.clearPick(e),l.indicator.hideClick(e))},this.repickEndpoint=function(e){this.clearPick(e),this.editEndpoint(null,e)},this.getSnapper=function(){return u},this._handleMouseEvent=function(e){var t=!1;if(u.isSnapped())(Y()||U())&&(this.clearMeasurement(),T=1),u.copyResults(I()),t=!0;else{if(e&&r.model.is2d()){var i=r.container.getBoundingClientRect(),n=e.canvasX||e.clientX-i.left,a=e.canvasY||e.clientY-i.top;n&&a&&(k=s.inverseProject({x:n,y:a},r))}if(B&&l&&!this.isEditingEndpoint&&T===l.getMaxNumberOfPicks()+1)return!0;var o=I();o&&o.clear()}if(this.correctPickPosition(),B&&this._doConsumeSingleClick(t),!U()){var c=this.render();l.hasPick(2)&&(t&=c)}return B&&(l.isComplete()&&t?(b=l.distanceXYZ,this.clearSize(),this.showPanel(),y=!0,r.dispatchEvent({type:D.l,mode:"end"})):(r.dispatchEvent({type:D.l,mode:"start"}),this.hidePanel(),l.indicator.updateLabelValue(null),y=!1)),t},this.updateViewportId=function(t){if(r.model&&r.model.is2d())if(t||U())e.impl.updateViewportId(0),u.setViewportId(null);else if(!g){var i=O().viewportIndex2d||I().viewportIndex2d;e.impl.updateViewportId(i),u&&u.setViewportId(i)}},this._doConsumeSingleClick=function(e){this.updateViewportId(l.isComplete()),l.indicator.clear()},this.handleButtonDown=function(e,t){return a.isMobileDevice()||(m=!0,0!==t||e.ctrlKey||e.metaKey||e.shiftKey||e.altKey||(B=!0,S=e.canvasX,R=e.canvasY)),!1},this.handleMouseMove=function(e){return a.isMobileDevice()||(e.canvasX===S&&e.canvasY===R||(B=!1),M=this.isEditingEndpoint,U()||Y()||(this.clearPick(T),this._handleMouseEvent(e)),u.indicator.render()),!1},this.restoreMouseListeners=function(){r.toolController.getTool("gestures").controller.enableMouseButtons(!0)},this.handlePressHold=function(e){if(B=!1,a.isTouchDevice())switch(e.type){case"press":return g=!0,Y()?this.clearMeasurement():this.clearPick(T),this._handleMouseEvent(e),u.indicator.render(),!0;case"pressup":return B=!0,this.restoreMouseListeners(),L=!L,this.handleSingleClick(e),g=!1,!0}return!1},this.correctPickPosition=function(){var t=I();if(t&&!t.getGeometry()&&k&&(t.geomType=s.SnapType.SNAP_VERTEX,t.geomVertex=k,t.intersectPoint=k),function(){switch(T){case 0:return!1;case 1:return l.hasPick(l.countPicks());case 2:case 3:return l.hasPick(1)}}()){var i=O();s.correctPerpendicularPicks(i,t,e,u)}},this.render=function(){var e=l.computeResult(l.picks,r,u);return l.indicator.render(l.picks,B||y),e},this.editEndpoint=function(e,t){if(T===t)return l.indicator.changeEndpointOnEditStyle(t,!1),void this.undoEditEndpoint();for(var i in T=t,this.isEditingEndpoint=!0,l.indicator.changeEndpointOnEditStyle(t,!0),l.indicator.changeAllEndpointsEditableStyle(!1),l.picks)Object.prototype.hasOwnProperty.call(l.picks,i)&&(x[i]=l.getPick(i).clone());this.updateViewportId(),r.dispatchEvent({type:D.l,mode:"start"}),this.hidePanel(),l.indicator.updateLabelValue(null),y=!1,a.isMobileDevice()||this._handleMouseEvent(e)},this.undoEditEndpoint=function(){for(var e in l.indicator.clear(),l.picks)Object.prototype.hasOwnProperty.call(l.picks,e)&&l.setPick(e,x[e].clone());this.updateViewportId(!0),this.isEditingEndpoint=!1,y=!0,z(),this.render()&&this.showPanel()},this.handleGesture=function(e){if(a.isTouchDevice()&&(B=!1,g))switch(this.clearPick(T),e.type){case"dragstart":case"dragmove":return this._handleMouseEvent(e),u.indicator.render(),!0;case"dragend":return g=!1,B=!0,this.editByDrag||(L=!L,this.handleSingleClick(e)),this.editByDrag=!1,this.restoreMouseListeners(),!0;case"pinchend":return B=!0,L=!L,this.handleSingleClick(e),this.restoreMouseListeners(),!0}return!1},this.handleButtonUp=function(e){return m=!1,S=null,R=null,M&&(B=!0,L=!L,this.handleSingleClick(e),M=!1),!1},this.handleSingleClick=function(e){return B&&(u.indicator.clearOverlays(),l.indicator.changeEndpointOnEditStyle(T,!1),this._handleMouseEvent(e)?(l.indicator.showEndpoints(),l.indicator.updateLabelsPosition(),T++):this.isEditingEndpoint?this.undoEditEndpoint():this.clearMeasurement(),l.isComplete()&&z(),B=!1,L=!L,this.isEditingEndpoint=!1,u.clearSnapped()),!0},this.handleDoubleClick=function(){return!0},this.handleSingleTap=function(e){return L||(B=!0,u.onMouseDown({x:e.canvasX,y:e.canvasY}),this.handleSingleClick(e)),L=!L,!0},this.handleDoubleTap=function(){return!0},this.handleResize=function(){l.indicator&&l.indicator.handleResize()},this.onCameraChange=function(){u.indicator&&u.indicator.onCameraChange()},this.screenSizeChanged=function(e){this.onCameraChange()}};se.GlobalManagerMixin.call(oe.prototype);const re=Autodesk.Viewing;var le=function(e){var t=e,i=!1,n=["magnifyingGlass"],a=!1,s=null,o=null,r=null,l=null,c=null,A=!1,h=Autodesk.Viewing;this.setGlobalManager(e.globalManager),this.register=function(){this.updateMagnifyingGlassBinded=this.updateMagnifyingGlass.bind(this)},this.isActive=function(){return i},this.activate=function(){i=!0},this.updateMagnifyingGlass=function(){const e=this.getWindow(),i=this.getDocument();if(A)s&&s.classList.remove("visible"),A=!1;else{var n=e.devicePixelRatio,a=120,h=a*n,d=n*(l-30),u=n*(c-30);s||((s=i.createElement("canvas")).className="magnifying-glass",s.width=h,s.height=h,s.style.width=a+"px",s.style.height=a+"px",s.getContext("2d").translate(0,h),s.getContext("2d").scale(1,-1),t.container.appendChild(s),o=s.getContext("2d").createImageData(Math.ceil(h/2),Math.ceil(h/2)),r=new Uint8Array(o.data.buffer));var p=s.getContext("2d"),m=t.impl.glrenderer().getContext();m.readPixels(d,t.canvas.height-u-o.height,o.width,o.height,m.RGBA,m.UNSIGNED_BYTE,r),p.putImageData(o,0,0),p.drawImage(s,0,0,o.width,o.height,0,0,h,h),this.setGlassPosition(s,l,c,a,15),s.classList.toggle("visible",!0)}},this.deactivate=function(){this.clearMagnifyingGlass(),i=!1},this.getNames=function(){return n},this.getName=function(){return n[0]},this.getPriority=function(){return 70},this.setGlassPosition=function(e,t,i,n,a){e.style.left=t-n/2+"px",e.style.top=i-n-a>0?i-n-a+"px":i+a+"px"},this.requestUpdate=function(){t.hasEventListener(Autodesk.Viewing.RENDER_PRESENTED_EVENT,this.updateMagnifyingGlassBinded)||t.addEventListener(Autodesk.Viewing.RENDER_PRESENTED_EVENT,this.updateMagnifyingGlassBinded,{once:!0})},this.drawMagnifyingGlass=function(e,i){A=!1,l=e,c=i,t.impl.invalidate(!1,!1,!0),this.requestUpdate()},this.clearMagnifyingGlass=function(){A=!0,this.requestUpdate()},this.handlePressHold=function(e){if(h.isTouchDevice())switch(e.type){case"press":a=!0,this.drawMagnifyingGlass(e.canvasX,e.canvasY);break;case"pressup":this.clearMagnifyingGlass(),a=!1}return!1},this.handleGesture=function(e){if(a&&h.isTouchDevice())switch(e.type){case"dragstart":case"dragmove":case"pinchstart":case"pinchmove":this.drawMagnifyingGlass(e.canvasX,e.canvasY);break;case"dragend":this.clearMagnifyingGlass(),a=!1;break;case"pinchend":this.clearMagnifyingGlass()}return!1},this.handleMouseMove=function(e){return!1},this.handleWheelInput=function(e){return!1},this.handleButtonUp=function(e,t){return!1}};re.GlobalManagerMixin.call(le.prototype);var ce=Autodesk.Viewing,Ae=Autodesk.Viewing.UI,he=Autodesk.Viewing.Private,de=Autodesk.Viewing.MeasureCommon;function ue(e){this.measureExtension=e,this.measureTool=this.measureExtension.measureTool,this.viewer=this.measureExtension.viewer,this.setGlobalManager(this.viewer.globalManager),this.visible=!1,this.buttonsList=[]}var pe=ue.prototype;ce.GlobalManagerMixin.call(ue.prototype),pe.onUnitChange=function(e,t){t?this.measureTool.setUnits(e):(this.updateSettingsPanel(),he.logger.track({category:"pref_changed",name:"measure/units",value:e}))},pe.onPrecisionChange=function(e,t){t?this.measureTool.setPrecision(e):(this.updateSettingsPanel(),he.logger.track({category:"pref_changed",name:"measure/precision",value:e}))},pe.init=function(){var e=this;const t=this.getDocument();this.onUnitChangeBound=this.onUnitChange.bind(this),this.viewer.addEventListener(de.Events.DISPLAY_UNITS_CHANGED,this.onUnitChangeBound),this.onPrecisionChangeBound=this.onPrecisionChange.bind(this),this.viewer.addEventListener(de.Events.PRECISION_CHANGED,this.onPrecisionChangeBound);var i=this.viewer.getToolbar(),n=i.getControl(Autodesk.Viewing.TOOLBAR.NAVTOOLSID),a={};a.index=i.indexOf(n)+1,this.measureToolbar=new Ae.ControlGroup(Autodesk.Viewing.TOOLBAR.MEASURETOOLSID),this.measureToolbar.setGlobalManager(this.globalManager),i.addControl(this.measureToolbar,a),this.measureSimpleDistanceBtn=new Ae.Button("toolbar-measureTool-simple-distance"),this.measureSimpleDistanceBtn.setGlobalManager(this.globalManager),this.measureSimpleDistanceBtn.setToolTip("Distance"),this.measureSimpleDistanceBtn.setIcon("adsk-icon-measure-distance-new"),this.measureSimpleDistanceBtn.onClick=function(){e.measureSimpleDistanceBtn.getState()!==Ae.Button.State.ACTIVE?e.measureExtension.activate("distance"):e.measureTool.deselectAllMeasurements()},this.measureToolbar.addControl(this.measureSimpleDistanceBtn),this.buttonsList[de.MeasurementTypes.MEASUREMENT_DISTANCE]=this.measureSimpleDistanceBtn,this.measureAngleBtn=new Ae.Button("toolbar-measureTool-angle"),this.measureAngleBtn.setGlobalManager(this.globalManager),this.measureAngleBtn.setToolTip("Angle"),this.measureAngleBtn.setIcon("adsk-icon-measure-angle-new"),this.measureAngleBtn.onClick=function(){e.measureAngleBtn.getState()!==Ae.Button.State.ACTIVE?e.measureExtension.activate("angle"):e.measureTool.deselectAllMeasurements()},this.measureToolbar.addControl(this.measureAngleBtn),this.buttonsList[de.MeasurementTypes.MEASUREMENT_ANGLE]=this.measureAngleBtn,this.viewer.model&&this.viewer.model.is2d()&&(this.measureAreaBtn=new Ae.Button("toolbar-measureTool-area"),this.measureAreaBtn.setGlobalManager(this.globalManager),this.measureAreaBtn.setToolTip("Area"),this.measureAreaBtn.setIcon("adsk-icon-measure-area-new"),this.measureAreaBtn.onClick=function(){e.measureAreaBtn.getState()!==Ae.Button.State.ACTIVE?e.measureExtension.activate("area"):e.measureTool.deselectAllMeasurements()},this.measureToolbar.addControl(this.measureAreaBtn),this.buttonsList[de.MeasurementTypes.MEASUREMENT_AREA]=this.measureAreaBtn),this.viewer.model&&this.viewer.model.is2d()&&(this.measureArcBtn=new Ae.Button("toolbar-measureTool-arc"),this.measureArcBtn.setGlobalManager(this.globalManager),this.measureArcBtn.setToolTip("Arc"),this.measureArcBtn.setIcon("adsk-icon-measure-arc-new"),this.measureArcBtn.onClick=function(){e.measureArcBtn.getState()!==Ae.Button.State.ACTIVE?e.measureExtension.activate("arc"):e.measureTool.deselectAllMeasurements()},this.measureToolbar.addControl(this.measureArcBtn),this.buttonsList[de.MeasurementTypes.MEASUREMENT_ARC]=this.measureArcBtn),this.calibrationToolBtn=new Ae.Button("toolbar-calibrationTool"),this.calibrationToolBtn.setGlobalManager(this.globalManager),this.calibrationToolBtn.setToolTip("Calibrate"),this.calibrationToolBtn.setIcon("adsk-icon-measure-calibration"),this.calibrationToolBtn.onClick=function(t){e.calibrationToolBtn.getState()!==Ae.Button.State.ACTIVE?e.measureExtension.activate("calibrate"):e.measureExtension.enableCalibrationTool(!1)},this.measureToolbar.addControl(this.calibrationToolBtn),this.buttonsList[de.MeasurementTypes.CALIBRATION]=this.calibrationToolBtn;var s=t.createElement("div");s.className="measure-toolbar-seperator",this.measureToolbar.container.appendChild(s),this.deleteBtn=new Ae.Button("toolbar-delete"),this.deleteBtn.setGlobalManager(this.globalManager),this.deleteBtn.setToolTip("Delete measurement"),this.deleteBtn.setIcon("adsk-icon-measure-trash"),this.deleteBtn.onClick=function(){e.measureExtension.deleteCurrentMeasurement()},this.measureToolbar.addControl(this.deleteBtn),this.settingsBtn=new Ae.Button("toolbar-settings"),this.settingsBtn.setGlobalManager(this.globalManager),this.settingsBtn.setToolTip("Measure settings"),this.settingsBtn.setIcon("adsk-icon-measure-settings"),this.settingsControlPanel=t.createElement("div"),this.settingsControlPanel.classList.add("docking-panel"),this.settingsControlPanel.classList.add("docking-panel-container-solid-color-b"),this.settingsControlPanel.classList.add("measure-settings-popup"),this.settingsControlPanel.classList.add("hide"),this.settingsBtn.onClick=function(e){this.settingsControlPanel.classList.contains("hide")?(this.settingsControlPanel.classList.remove("hide"),this.setButtonActive(this.settingsBtn)):(this.settingsControlPanel.classList.add("hide"),this.setButtonInactive(this.settingsBtn))}.bind(this),this.measureToolbar.container.appendChild(this.settingsControlPanel),this.settingsControlPanel.root=this.settingsBtn,this.measureToolbar.addControl(this.settingsBtn),this.table=t.createElement("table"),this.table.classList.add("adsk-lmv-tftable"),this.table.classList.add("calibration-table"),this.tbody=t.createElement("tbody"),this.table.appendChild(this.tbody),this.settingsControlPanel.appendChild(this.table),this.units=[{name:"Unknown",units:"",matches:[""]},{name:"Decimal feet",units:"decimal-ft",matches:["ft","decimal-ft"]},{name:"Feet and fractional inches",units:"ft-and-fractional-in",matches:["ft-and-fractional-in"]},{name:"Feet and decimal inches",units:"ft-and-decimal-in",matches:["ft-and-decimal-in"]},{name:"Decimal inches",units:"decimal-in",matches:["in","decimal-in"]},{name:"Fractional inches",units:"fractional-in",matches:["fractional-in"]},{name:"Meters",units:"m",matches:["m"]},{name:"Centimeters",units:"cm",matches:["cm"]},{name:"Millimeters",units:"mm",matches:["mm"]},{name:"Meters and centimeters",units:"m-and-cm",matches:["m-and-cm"]},{name:"Points",units:"pt",matches:["pt"]}];var o=this.findUnits(),r=[];ce.isSafari()&&this.viewer.model&&this.viewer.model.getDisplayUnit()&&this.units.shift();for(var l=0;l{this.setActive(e),e||this.deactivate()};return this.measureTool=new V(t,i,this.sharedMeasureConfig,this.snapper),t.toolController.registerTool(this.measureTool,n),this.calibrationTool=new oe(t,this.options,this.sharedMeasureConfig,this.snapper),t.toolController.registerTool(this.calibrationTool,n),this.magnifyingGlass=new le(t),t.toolController.registerTool(this.magnifyingGlass),this.calibration={},this.onFinishedCalibration=function(t){e.measureToolbar&&e.measureToolbar.updateSettingsPanel(),e.activateInitiator&&e.activateInitiator(),e.calibration.units=t.units,e.calibration.scaleFactor=t.scaleFactor,e.calibration.size=t.size,e.calibration.precision=e.sharedMeasureConfig.precision},t.addEventListener("finished-calibration",this.onFinishedCalibration),this.onMeasurementChanged=function(t){var i=t.data.type;e.changeMeasurementType(i)},t.addEventListener(Ie.Events.MEASUREMENT_CHANGED_EVENT,this.onMeasurementChanged),t.model?this._onModelLoaded({model:t.model}):t.addEventListener(De.MODEL_ROOT_LOADED_EVENT,this._onModelLoaded,{once:!0}),this.onModelRemoved=function(){e.measurementToolbarButton&&(e.viewer.model||(e.measurementToolbarButton.setState(Autodesk.Viewing.UI.Button.State.DISABLED),e.exitMeasurementMode()))},this.onModelAdded=function(){e.measurementToolbarButton&&(1===e.viewer.getVisibleModels().length&&e.measurementToolbarButton&&e.measurementToolbarButton.setState(Autodesk.Viewing.UI.Button.State.INACTIVE))},t.addEventListener(De.MODEL_ADDED_EVENT,this.onModelAdded),t.addEventListener(De.MODEL_REMOVED_EVENT,this.onModelRemoved),this.viewer.prefs.addListeners(Ne.Prefs.DISPLAY_UNITS,this._onDisplayUnitsPrefChanged,this._onDisplayUnitsPrefChanged),this.viewer.prefs.addListeners(Ne.Prefs.DISPLAY_UNITS_PRECISION,this._onPrecisionPrefChanged,this._onPrecisionPrefChanged),this.hasNotEntered=!0,!0},Ve.prototype._onDisplayUnitsPrefChanged=function(e){var t;""!==e&&(this.setUnits(e),null===(t=this.measureToolbar)||void 0===t||t.updateSettingsPanel(),this.calibrationTool.updateCalibrationPanel())},Ve.prototype._onPrecisionPrefChanged=function(e){var t;"number"==typeof e&&(this.setPrecision(e),null===(t=this.measureToolbar)||void 0===t||t.updateSettingsPanel())},Ve.prototype._onModelLoaded=function(e){var t=e.model;const i=!!t.isPdf(!0)&&!this.viewer.prefs.get(Ne.Prefs2D.FORCE_PDF_CALIBRATION),n=!!t.isLeaflet()&&!this.viewer.prefs.get(Ne.Prefs2D.FORCE_LEAFLET_CALIBRATION);let a,s=3;var o;((t.isSmartPdf()||this.viewer.prefs.get(Ne.Prefs2D.USE_PDF_VIEWPORT_INFO))&&t.getData().viewports&&t.getData().viewports.length>1&&(a=Ne.fixUnitString(t.getData().viewports[1].units),Number.isInteger(t.getData().viewports[1].precision)&&t.getData().viewports[1].precision>=0&&(s=t.getData().viewports[1].precision),this.sharedMeasureConfig.useViewportInfo=!0),this.sharedMeasureConfig.units=this.options.calibrationUnits||this.viewer.prefs.get(Ne.Prefs.DISPLAY_UNITS)||a||t.getDisplayUnit(),this.sharedMeasureConfig.units)||(null===(o=this.measureToolbar)||void 0===o||o.disableUnitOption());!i&&!n||t.getMetadata("page_dimensions","model_units",null)||a||(this.sharedMeasureConfig.units="pt");const r=this.viewer.prefs.get(Ne.Prefs.DISPLAY_UNITS_PRECISION);this.sharedMeasureConfig.precision="number"==typeof r?r:t.is2d()?s:1,this.options.calibrationUnits&&!isNaN(this.options.calibrationFactor)&&this.calibrationTool.calibrateByScale(this.options.calibrationUnits,this.options.calibrationFactor)},Ve.prototype.unload=function(){var e=this.viewer;return this.destroyUI(),e.removeEventListener(V.EXPLODE_CHANGE_EVENT,V.onExplodedChange),e.removeEventListener("finished-calibration",this.onFinishedCalibration),e.removeEventListener(Ie.Events.MEASUREMENT_CHANGED_EVENT,this.onMeasurementChanged),e.removeEventListener(De.MODEL_ADDED_EVENT,this.onModelAdded),e.removeEventListener(De.MODEL_REMOVED_EVENT,this.onModelRemoved),e.removeEventListener(De.MODEL_ROOT_LOADED_EVENT,this._onModelLoaded),e.toolController.deregisterTool(this.snapper),this.snapper=null,e.toolController.deregisterTool(this.measureTool),this.measureTool=null,e.toolController.deregisterTool(this.calibrationTool),this.calibrationTool=null,e.toolController.deregisterTool(this.magnifyingGlass),this.magnifyingGlass=null,this.unloaded=!0,e.prefs.removeListeners(Ne.Prefs.DISPLAY_UNITS,this._onDisplayUnitsPrefChanged,this._onDisplayUnitsPrefChanged),e.prefs.removeListeners(Ne.Prefs.DISPLAY_UNITS_PRECISION,this._onPrecisionPrefChanged,this._onPrecisionPrefChanged),!0},Ve.prototype.setActive=function(e){return this.enableMeasureTool(e)},Ve.prototype.toggle=function(){return this.isActive()?this.enableMeasureTool(!1):this.enableMeasureTool(!0),this.isActive()},Ve.prototype.getMeasurement=function(e,t){var i=null;return this.measureTool.isActive()&&(i=this.measureTool.getMeasurement(e,t)),i},Ve.prototype.getMeasurementList=function(e,t){var i=[];return this.measureTool.isActive()&&(i=this.measureTool.getMeasurementList(e,t)),i},Ve.prototype.setMeasurements=function(e){this.measureTool.isActive()&&this.measureTool.setMeasurements(e)},Ve.prototype.getUnitOptions=function(){return[{name:"Unknown",type:""},{name:"Decimal feet",type:"decimal-ft"},{name:"Feet and fractional inches",type:"ft"},{name:"Feet and decimal inches",type:"ft-and-decimal-in"},{name:"Decimal inches",type:"decimal-in"},{name:"Fractional inches",type:"fractional-in"},{name:"Meters",type:"m"},{name:"Centimeters",type:"cm"},{name:"Millimeters",type:"mm"},{name:"Meters and centimeters",type:"m-and-cm"},{name:"Points",type:"pt"}]},Ve.prototype.getPrecisionOptions=function(e){return e?["1","1/2","1/4","1/8","1/16","1/32","1/64"]:["0","0.1","0.01","0.001","0.0001","0.00001"]},Ve.prototype.getDefaultUnit=function(){return this.viewer.model.getDisplayUnit()},Ve.prototype.openCalibrationRequiredDialog=function(e){this.hasUI?(this.CalibrationRequiredDialog||(this.CalibrationRequiredDialog=new ae(this,this.viewer,"calibration-required","Calibration Required",this.options)),this.CalibrationRequiredDialog.setVisible(!0)):this.viewer.dispatchEvent({type:Ie.Events.CALIBRATION_REQUIRED_EVENT}),"measure"===e?this.activateInitiator=function(){this.enableMeasureTool(!0,Oe),this.activateInitiator=null}:"dimension"===e&&(this.activateInitiator=function(){this.viewer.dispatchEvent({type:Ie.Events.FINISHED_CALIBRATION_FOR_DIMENSION_EVENT}),this.activateInitiator=null})},Ve.prototype.getCalibration=function(){return this.calibration},Ve.prototype.activate=function(e){if(this.activeStatus&&this.mode===e)return!0;var t;switch(this.enterMeasurementMode(),e){default:e="distance";case"distance":t=this.enableMeasureTool(!0,Ie.MeasurementTypes.MEASUREMENT_DISTANCE);break;case"angle":t=this.enableMeasureTool(!0,Ie.MeasurementTypes.MEASUREMENT_ANGLE);break;case"area":this.viewer.model.is2d()?t=this.enableMeasureTool(!0,Ie.MeasurementTypes.MEASUREMENT_AREA):console.warn("Area mode is applicable on 2D models only");break;case"arc":!this.viewer.model.is2d()||this.viewer.model.isPdf()?console.warn("Arc mode is applicable on 2D models only"):t=this.enableMeasureTool(!0,Ie.MeasurementTypes.MEASUREMENT_ARC);break;case"calibrate":t=this.enableCalibrationTool(!0)}return this.mode=t?e:"",this.activeStatus=!0,!0},Ve.prototype.deactivate=function(){return this.activeStatus&&(this.exitMeasurementMode(),this.enableMeasureTool(!1),this.activeStatus=!1),!0},Ve.prototype.setForcePDFCalibrate=function(e){this.viewer.prefs.set(Ne.Prefs2D.FORCE_PDF_CALIBRATION,e)},Ve.prototype.setForceLeafletCalibrate=function(e){this.viewer.prefs.set(Ne.Prefs2D.FORCE_LEAFLET_CALIBRATION,e)},Ve.prototype.setRestoreSessionMeasurements=function(e){this.viewer.prefs.set(Ne.Prefs.RESTORE_SESSION_MEASUREMENTS,e)},Ve.prototype.enableMeasureTool=function(e,t){var i;if(t===Ie.MeasurementTypes.MEASUREMENT_AREA&&this.viewer.model&&!this.viewer.model.is2d())return!1;if(t===Ie.MeasurementTypes.MEASUREMENT_ARC&&this.viewer.model&&!this.viewer.model.is2d())return!1;const n=t===Ie.MeasurementTypes.MEASUREMENT_ARC&&(null===(i=this.viewer.model)||void 0===i?void 0:i.is2d());this.snapper.setSnapToArc(n);var a=this.viewer.toolController,s=1===this.selectedTool;if(!this.viewer.model||!e&&s)return this.measureTool.isActive()&&(a.deactivateTool("measure"),this.measureToolbar&&this.measureToolbar.deactivateAllButtons(),this.selectedTool=0),!0;const o=this.viewer.impl.is2d,r=o&&this.viewer.model.isPdf(!0)&&this.viewer.prefs.get(Ne.Prefs2D.FORCE_PDF_CALIBRATION),l=o&&this.viewer.model.isLeaflet()&&this.viewer.prefs.get(Ne.Prefs2D.FORCE_LEAFLET_CALIBRATION);return this.forceCalibrate|=l||r,t||(t=Oe),e&&!s?(this.checkAndFetchTopology(a.getTool("measure")),!this.forceCalibrate||this.forceCalibrate&&this.calibrationTool.isCalibrated()||t===Ie.MeasurementTypes.MEASUREMENT_ANGLE?(this.calibrationTool.isActive()&&a.deactivateTool("calibration"),this.measureToolbar&&this.measureToolbar.updateSettingsPanel(),a.activateTool("measure"),this.selectedTool=1,this.changeMeasurementType(t),!0):(this.viewer.addEventListener(Re.OPEN_TOOL_AFTER_CALIBRAION,function(){this.enableMeasureTool(!0)}.bind(this),{once:!0}),this.openCalibrationRequiredDialog("measure"),!1)):!(!e||!s)&&(!this.forceCalibrate||this.forceCalibrate&&this.calibrationTool.isCalibrated()||t===Ie.MeasurementTypes.MEASUREMENT_ANGLE?(this.changeMeasurementType(t),!0):(this.openCalibrationRequiredDialog("measure"),!1))},Ve.prototype.changeMeasurementType=function(e){switch(this.measureTool.changeMeasurementType(e),this.measureToolbar&&(this.measureToolbar.deactivateAllButtons(),this.measureToolbar.activateButtonByType(e)),e){case Ie.MeasurementTypes.MEASUREMENT_DISTANCE:this.mode="distance";break;case Ie.MeasurementTypes.MEASUREMENT_ANGLE:this.mode="angle";break;case Ie.MeasurementTypes.MEASUREMENT_AREA:this.mode="area";break;case Ie.MeasurementTypes.MEASUREMENT_ARC:this.mode="arc";break;default:this.mode=""}},Ve.prototype.setIsolateMeasure=function(e){this.measureTool.setIsolateMeasure(e),e?this.measureTool.isolateMeasurement():this.measureTool.clearIsolate()},Ve.prototype.enableCalibrationTool=function(e){var t=this.viewer.toolController,i=2==this.selectedTool;return e&&!i?(this.measureTool.isActive()&&t.deactivateTool("measure"),t.activateTool("calibration"),this.viewer.dispatchEvent({type:Ie.Events.UNITS_CALIBRATION_STARTS_EVENT}),this.measureToolbar&&(this.measureToolbar.deactivateAllButtons(),this.measureToolbar.activateButtonByType(Ie.MeasurementTypes.CALIBRATION)),this.selectedTool=2,!0):!(e||!i)&&(this.calibrationTool.isActive()&&(this.mode="",t.deactivateTool("calibration"),this.measureToolbar&&this.measureToolbar.deactivateAllButtons()),this.selectedTool=0,!0)},Ve.prototype.enterMeasurementMode=function(){if(!this._measurementMode&&(this._measurementMode=!0,this.viewer.dispatchEvent({type:Ie.Events.MEASUREMENT_MODE_ENTER}),this.viewer.getToolbar)){for(var e=this.viewer.getToolbar(),t=e.container,i=t.children.length,n=0;n{var e={6345:e=>{"use strict";var t,r={DEBUG:!1,LIB_VERSION:"2.49.0"};if("undefined"==typeof window){var i={hostname:""};t={navigator:{userAgent:""},document:{location:i,referrer:""},screen:{width:0,height:0},location:i}}else t=window;var o,n,s,a,c,p,u,_,h,l,d,f=Array.prototype,g=Function.prototype,m=Object.prototype,y=f.slice,v=m.toString,b=m.hasOwnProperty,k=t.console,x=t.navigator,w=t.document,S=t.opera,q=t.screen,E=x.userAgent,O=g.bind,I=f.forEach,A=f.indexOf,D=f.map,T=Array.isArray,P={},B={trim:function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},U={log:function(){if(r.DEBUG&&!B.isUndefined(k)&&k)try{k.log.apply(k,arguments)}catch(e){B.each(arguments,(function(e){k.log(e)}))}},warn:function(){if(r.DEBUG&&!B.isUndefined(k)&&k){var e=["Mixpanel warning:"].concat(B.toArray(arguments));try{k.warn.apply(k,e)}catch(t){B.each(e,(function(e){k.warn(e)}))}}},error:function(){if(r.DEBUG&&!B.isUndefined(k)&&k){var e=["Mixpanel error:"].concat(B.toArray(arguments));try{k.error.apply(k,e)}catch(t){B.each(e,(function(e){k.error(e)}))}}},critical:function(){if(!B.isUndefined(k)&&k){var e=["Mixpanel error:"].concat(B.toArray(arguments));try{k.error.apply(k,e)}catch(t){B.each(e,(function(e){k.error(e)}))}}}},$=function(e,t){return function(){return arguments[0]="["+t+"] "+arguments[0],e.apply(U,arguments)}},j=function(e){return{log:$(U.log,e),error:$(U.error,e),critical:$(U.critical,e)}};B.bind=function(e,t){var r,i;if(O&&e.bind===O)return O.apply(e,y.call(arguments,1));if(!B.isFunction(e))throw new TypeError;return r=y.call(arguments,2),i=function(){if(!(this instanceof i))return e.apply(t,r.concat(y.call(arguments)));var o={};o.prototype=e.prototype;var n=new o;o.prototype=null;var s=e.apply(n,r.concat(y.call(arguments)));return Object(s)===s?s:n},i},B.each=function(e,t,r){if(null!=e)if(I&&e.forEach===I)e.forEach(t,r);else if(e.length===+e.length){for(var i=0,o=e.length;i0&&(t[r]=e)})),t},B.truncate=function(e,t){var r;return"string"==typeof e?r=e.slice(0,t):B.isArray(e)?(r=[],B.each(e,(function(e){r.push(B.truncate(e,t))}))):B.isObject(e)?(r={},B.each(e,(function(e,i){r[i]=B.truncate(e,t)}))):r=e,r},B.JSONEncode=function(e){var t=function(e){var t=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,r={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return t.lastIndex=0,t.test(e)?'"'+e.replace(t,(function(e){var t=r[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)}))+'"':'"'+e+'"'},r=function(e,i){var o="",n=0,s="",a="",c=0,p=o,u=[],_=i[e];switch(_&&"object"==typeof _&&"function"==typeof _.toJSON&&(_=_.toJSON(e)),typeof _){case"string":return t(_);case"number":return isFinite(_)?String(_):"null";case"boolean":case"null":return String(_);case"object":if(!_)return"null";if(o+=" ",u=[],"[object Array]"===v.apply(_)){for(c=_.length,n=0;n="0"&&n<="9";)t+=n,u();if("."===n)for(t+=".";u()&&n>="0"&&n<="9";)t+=n;if("e"===n||"E"===n)for(t+=n,u(),"-"!==n&&"+"!==n||(t+=n,u());n>="0"&&n<="9";)t+=n,u();if(e=+t,isFinite(e))return e;p("Bad number")},h=function(){var e,t,r,i="";if('"'===n)for(;u();){if('"'===n)return u(),i;if("\\"===n)if(u(),"u"===n){for(r=0,t=0;t<4&&(e=parseInt(u(),16),isFinite(e));t+=1)r=16*r+e;i+=String.fromCharCode(r)}else{if("string"!=typeof c[n])break;i+=c[n]}else i+=n}p("Bad string")},l=function(){for(;n&&n<=" ";)u()},a=function(){switch(l(),n){case"{":return function(){var e,t={};if("{"===n){if(u("{"),l(),"}"===n)return u("}"),t;for(;n;){if(e=h(),l(),u(":"),Object.hasOwnProperty.call(t,e)&&p('Duplicate key "'+e+'"'),t[e]=a(),l(),"}"===n)return u("}"),t;u(","),l()}}p("Bad object")}();case"[":return function(){var e=[];if("["===n){if(u("["),l(),"]"===n)return u("]"),e;for(;n;){if(e.push(a()),l(),"]"===n)return u("]"),e;u(","),l()}}p("Bad array")}();case'"':return h();case"-":return _();default:return n>="0"&&n<="9"?_():function(){switch(n){case"t":return u("t"),u("r"),u("u"),u("e"),!0;case"f":return u("f"),u("a"),u("l"),u("s"),u("e"),!1;case"n":return u("n"),u("u"),u("l"),u("l"),null}p('Unexpected "'+n+'"')}()}},function(e){var t;return s=e,o=0,n=" ",t=a(),l(),n&&p("Syntax error"),t}),B.base64Encode=function(e){var t,r,i,o,n,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=0,c=0,p="",u=[];if(!e)return e;e=B.utf8Encode(e);do{t=(n=e.charCodeAt(a++)<<16|e.charCodeAt(a++)<<8|e.charCodeAt(a++))>>18&63,r=n>>12&63,i=n>>6&63,o=63&n,u[c++]=s.charAt(t)+s.charAt(r)+s.charAt(i)+s.charAt(o)}while(a127&&s<2048?String.fromCharCode(s>>6|192,63&s|128):String.fromCharCode(s>>12|224,s>>6&63|128,63&s|128),null!==a&&(r>t&&(n+=e.substring(t,r)),n+=a,t=r=o+1)}return r>t&&(n+=e.substring(t,e.length)),n},B.UUID=(d=function(){var e,r=1*new Date;if(t.performance&&t.performance.now)e=t.performance.now();else for(e=0;r==1*new Date;)e++;return r.toString(16)+Math.floor(e).toString(16)},function(){var e=(q.height*q.width).toString(16);return d()+"-"+Math.random().toString(16).replace(".","")+"-"+function(){var e,t,r=E,i=[],o=0;function n(e,t){var r,o=0;for(r=0;r=4&&(o=n(o,i),i=[]);return i.length>0&&(o=n(o,i)),o.toString(16)}()+"-"+e+"-"+d()});var M=["ahrefsbot","ahrefssiteaudit","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandexbot","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];B.isBlockedUA=function(e){var t;for(e=e.toLowerCase(),t=0;t=0}function i(t){if(!w.getElementsByTagName)return[];var i,o,n,s,a,c,p,u,_,h,l=t.split(" "),d=[w];for(c=0;c-1){n=(o=i.split("#"))[0];var f=o[1],g=w.getElementById(f);if(!g||n&&g.nodeName.toLowerCase()!=n)return[];d=[g]}else if(i.indexOf(".")>-1){n=(o=i.split("."))[0];var m=o[1];for(n||(n="*"),s=[],a=0,p=0;p-1};break;default:v=function(e){return e.getAttribute(b)}}for(d=[],h=0,p=0;p=3?t[2]:""},currentUrl:function(){return t.location.href},properties:function(e){return"object"!=typeof e&&(e={}),B.extend(B.strip_empty_properties({$os:B.info.os(),$browser:B.info.browser(E,x.vendor,S),$referrer:w.referrer,$referring_domain:B.info.referringDomain(w.referrer),$device:B.info.device(E)}),{$current_url:B.info.currentUrl(),$browser_version:B.info.browserVersion(E,x.vendor,S),$screen_height:q.height,$screen_width:q.width,mp_lib:"web",$lib_version:r.LIB_VERSION,$insert_id:L(),time:B.timestamp()/1e3},B.strip_empty_properties(e))},people_properties:function(){return B.extend(B.strip_empty_properties({$os:B.info.os(),$browser:B.info.browser(E,x.vendor,S)}),{$browser_version:B.info.browserVersion(E,x.vendor,S)})},mpPageViewProperties:function(){return B.strip_empty_properties({current_page_title:w.title,current_domain:t.location.hostname,current_url_path:t.location.pathname,current_url_protocol:t.location.protocol,current_url_search:t.location.search})}};var L=function(e){var t=Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10);return e?t.substring(0,e):t},J=/[a-z0-9][a-z0-9-]*\.[a-z]+$/i,Q=/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i,V=function(e){var t=Q,r=e.split("."),i=r[r.length-1];(i.length>4||"com"===i||"org"===i)&&(t=J);var o=e.match(t);return o?o[0]:""},H=null,K=null;"undefined"!=typeof JSON&&(H=JSON.stringify,K=JSON.parse),H=H||B.JSONEncode,K=K||B.JSONDecode,B.toArray=B.toArray,B.isObject=B.isObject,B.JSONEncode=B.JSONEncode,B.JSONDecode=B.JSONDecode,B.isBlockedUA=B.isBlockedUA,B.isEmptyObject=B.isEmptyObject,B.info=B.info,B.info.device=B.info.device,B.info.browser=B.info.browser,B.info.browserVersion=B.info.browserVersion,B.info.properties=B.info.properties;var G=function(){};G.prototype.create_properties=function(){},G.prototype.event_handler=function(){},G.prototype.after_track_handler=function(){},G.prototype.init=function(e){return this.mp=e,this},G.prototype.track=function(e,t,r,i){var o=this,n=B.dom_query(e);if(0!==n.length)return B.each(n,(function(e){B.register_event(e,this.override_event,(function(e){var n={},s=o.create_properties(r,this),a=o.mp.get_config("track_links_timeout");o.event_handler(e,this,n),window.setTimeout(o.track_callback(i,s,n,!0),a),o.mp.track(t,s,o.track_callback(i,s,n))}))}),this),!0;U.error("The DOM query ("+e+") returned 0 elements")},G.prototype.track_callback=function(e,t,r,i){i=i||!1;var o=this;return function(){r.callback_fired||(r.callback_fired=!0,e&&!1===e(i,t)||o.after_track_handler(t,r,i))}},G.prototype.create_properties=function(e,t){return"function"==typeof e?e(t):B.extend({},e)};var W=function(){this.override_event="click"};B.inherit(W,G),W.prototype.create_properties=function(e,t){var r=W.superclass.create_properties.apply(this,arguments);return t.href&&(r.url=t.href),r},W.prototype.event_handler=function(e,t,r){r.new_tab=2===e.which||e.metaKey||e.ctrlKey||"_blank"===t.target,r.href=t.href,r.new_tab||e.preventDefault()},W.prototype.after_track_handler=function(e,t){t.new_tab||setTimeout((function(){window.location=t.href}),0)};var X=function(){this.override_event="submit"};B.inherit(X,G),X.prototype.event_handler=function(e,t,r){r.element=t,e.preventDefault()},X.prototype.after_track_handler=function(e,t){setTimeout((function(){t.element.submit()}),0)};var Y=j("lock"),Z=function(e,t){t=t||{},this.storageKey=e,this.storage=t.storage||window.localStorage,this.pollIntervalMS=t.pollIntervalMS||100,this.timeoutMS=t.timeoutMS||2e3};Z.prototype.withLock=function(e,t,r){r||"function"==typeof t||(r=t,t=null);var i=r||(new Date).getTime()+"|"+Math.random(),o=(new Date).getTime(),n=this.storageKey,s=this.pollIntervalMS,a=this.timeoutMS,c=this.storage,p=n+":X",u=n+":Y",_=n+":Z",h=function(e){t&&t(e)},l=function(e){if((new Date).getTime()-o>a)return Y.error("Timeout waiting for mutex on "+n+"; clearing lock. ["+i+"]"),c.removeItem(_),c.removeItem(u),void g();setTimeout((function(){try{e()}catch(e){h(e)}}),s*(Math.random()+.1))},d=function(e,t){e()?t():l((function(){d(e,t)}))},f=function(){var e=c.getItem(u);if(e&&e!==i)return!1;if(c.setItem(u,i),c.getItem(u)===i)return!0;if(!N(c,!0))throw new Error("localStorage support dropped while acquiring lock");return!1},g=function(){c.setItem(p,i),d(f,(function(){c.getItem(p)!==i?l((function(){c.getItem(u)===i?d((function(){return!c.getItem(_)}),m):g()})):m()}))},m=function(){c.setItem(_,"1");try{e()}finally{c.removeItem(_),c.getItem(u)===i&&c.removeItem(u),c.getItem(p)===i&&c.removeItem(p)}};try{if(!N(c,!0))throw new Error("localStorage support check failed");g()}catch(e){h(e)}};var ee=j("batch"),te=function(e,t){t=t||{},this.storageKey=e,this.storage=t.storage||window.localStorage,this.reportError=t.errorReporter||B.bind(ee.error,ee),this.lock=new Z(e,{storage:this.storage}),this.pid=t.pid||null,this.memQueue=[]};te.prototype.enqueue=function(e,t,r){var i={id:L(),flushAfter:(new Date).getTime()+2*t,payload:e};this.lock.withLock(B.bind((function(){var t;try{var o=this.readFromStorage();o.push(i),(t=this.saveToStorage(o))&&this.memQueue.push(i)}catch(r){this.reportError("Error enqueueing item",e),t=!1}r&&r(t)}),this),B.bind((function(e){this.reportError("Error acquiring storage lock",e),r&&r(!1)}),this),this.pid)},te.prototype.fillBatch=function(e){var t=this.memQueue.slice(0,e);if(t.lengthn.flushAfter&&!i[n.id]&&(n.orphaned=!0,t.push(n),t.length>=e))break}}}return t};var re=function(e,t){var r=[];return B.each(e,(function(e){e.id&&!t[e.id]&&r.push(e)})),r};te.prototype.removeItemsByID=function(e,t){var r={};B.each(e,(function(e){r[e]=!0})),this.memQueue=re(this.memQueue,r);var i=B.bind((function(){var t;try{var i=this.readFromStorage();if(i=re(i,r),t=this.saveToStorage(i)){i=this.readFromStorage();for(var o=0;o5&&(this.reportError("[dupe] item ID sent too many times, not sending",{item:e,batchSize:n.length,timesSent:this.itemIdsSentSuccessfully[o]}),i=!1):this.reportError("[dupe] found item with no ID",{item:e}),i&&s.push(t)}a[e.id]=t}),this),s.length<1)return void this.resetFlush();this.requestInProgress=!0;var c=B.bind((function(r){this.requestInProgress=!1;try{var s=!1;if(e.unloading)this.queue.updatePayloads(a);else if(B.isObject(r)&&"timeout"===r.error&&(new Date).getTime()-i>=t)this.reportError("Network timeout; retrying"),this.flush();else if(B.isObject(r)&&r.xhr_req&&(r.xhr_req.status>=500||429===r.xhr_req.status||"timeout"===r.error)){var c=2*this.flushInterval,p=r.xhr_req.responseHeaders;if(p){var u=p["Retry-After"];u&&(c=1e3*parseInt(u,10)||c)}c=Math.min(6e5,c),this.reportError("Error; retry in "+c+" ms"),this.scheduleFlush(c)}else if(B.isObject(r)&&r.xhr_req&&413===r.xhr_req.status)if(n.length>1){var _=Math.max(1,Math.floor(o/2));this.batchSize=Math.min(this.batchSize,_,n.length-1),this.reportError("413 response; reducing batch size to "+this.batchSize),this.resetFlush()}else this.reportError("Single-event request too large; dropping",n),this.resetBatchSize(),s=!0;else s=!0;s&&(this.queue.removeItemsByID(B.map(n,(function(e){return e.id})),B.bind((function(e){e?(this.consecutiveRemovalFailures=0,this.flush()):(this.reportError("Failed to remove items from queue"),++this.consecutiveRemovalFailures>5?(this.reportError("Too many queue failures; disabling batching system."),this.stopAllBatching()):this.resetFlush())}),this)),B.each(n,B.bind((function(e){var t=e.id;t?(this.itemIdsSentSuccessfully[t]=this.itemIdsSentSuccessfully[t]||0,this.itemIdsSentSuccessfully[t]++,this.itemIdsSentSuccessfully[t]>5&&this.reportError("[dupe] item ID sent too many times",{item:e,batchSize:n.length,timesSent:this.itemIdsSentSuccessfully[t]})):this.reportError("[dupe] found item with no ID while removing",{item:e})}),this)))}catch(e){this.reportError("Error handling API response",e),this.resetFlush()}}),this),p={method:"POST",verbose:!0,ignore_json_errors:!0,timeout_ms:t};e.unloading&&(p.transport="sendBeacon"),oe.log("MIXPANEL REQUEST:",s),this.sendRequest(s,p,c)}catch(e){this.reportError("Error flushing request queue",e),this.resetFlush()}},ne.prototype.reportError=function(e,t){if(oe.error.apply(oe.error,arguments),this.errorReporter)try{t instanceof Error||(t=new Error(e)),this.errorReporter(e,t)}catch(t){oe.error(t)}};var se="__mp_opt_in_out_";function ae(e,t){ye(!0,e,t)}function ce(e,t){ye(!1,e,t)}function pe(e,t){return"1"===me(e,t)}function ue(e,r){if(function(e){if(e&&e.ignoreDnt)return!1;var r=e&&e.window||t,i=r.navigator||{},o=!1;return B.each([i.doNotTrack,i.msDoNotTrack,r.doNotTrack],(function(e){B.includes([!0,1,"1","yes"],e)&&(o=!0)})),o}(r))return U.warn('This browser has "Do Not Track" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the "Do Not Track" browser setting, initialize the Mixpanel instance with the config "ignore_dnt: true"'),!0;var i="0"===me(e,r);return i&&U.warn("You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data."),i}function _e(e){return ve(e,(function(e){return this.get_config(e)}))}function he(e){return ve(e,(function(e){return this._get_config(e)}))}function le(e){return ve(e,(function(e){return this._get_config(e)}))}function de(e,t){fe(t=t||{}).remove(ge(e,t),!!t.crossSubdomainCookie,t.cookieDomain)}function fe(e){return"localStorage"===(e=e||{}).persistenceType?B.localStorage:B.cookie}function ge(e,t){return((t=t||{}).persistencePrefix||se)+e}function me(e,t){return fe(t).get(ge(e,t))}function ye(e,t,r){B.isString(t)&&t.length?(fe(r=r||{}).set(ge(t,r),e?1:0,B.isNumber(r.cookieExpiration)?r.cookieExpiration:null,!!r.crossSubdomainCookie,!!r.secureCookie,!!r.crossSiteCookie,r.cookieDomain),r.track&&e&&r.track(r.trackEventName||"$opt_in",r.trackProperties,{send_immediately:!0})):U.error("gdpr."+(e?"optIn":"optOut")+" called with an invalid token")}function ve(e,t){return function(){var r=!1;try{var i=t.call(this,"token"),o=t.call(this,"ignore_dnt"),n=t.call(this,"opt_out_tracking_persistence_type"),s=t.call(this,"opt_out_tracking_cookie_prefix"),a=t.call(this,"window");i&&(r=ue(i,{ignoreDnt:o,persistenceType:n,persistencePrefix:s,window:a}))}catch(e){U.error("Unexpected error when checking tracking opt-out status: "+e)}if(!r)return e.apply(this,arguments);var c=arguments[arguments.length-1];"function"==typeof c&&c(0)}}var be="$set",ke="$set_once",xe="$unset",we="$add",Se="$append",qe="$union",Ee="$remove",Oe={set_action:function(e,t){var r={},i={};return B.isObject(e)?B.each(e,(function(e,t){this._is_reserved_property(t)||(i[t]=e)}),this):i[e]=t,r[be]=i,r},unset_action:function(e){var t={},r=[];return B.isArray(e)||(e=[e]),B.each(e,(function(e){this._is_reserved_property(e)||r.push(e)}),this),t[xe]=r,t},set_once_action:function(e,t){var r={},i={};return B.isObject(e)?B.each(e,(function(e,t){this._is_reserved_property(t)||(i[t]=e)}),this):i[e]=t,r[ke]=i,r},union_action:function(e,t){var r={},i={};return B.isObject(e)?B.each(e,(function(e,t){this._is_reserved_property(t)||(i[t]=B.isArray(e)?e:[e])}),this):i[e]=B.isArray(t)?t:[t],r[qe]=i,r},append_action:function(e,t){var r={},i={};return B.isObject(e)?B.each(e,(function(e,t){this._is_reserved_property(t)||(i[t]=e)}),this):i[e]=t,r[Se]=i,r},remove_action:function(e,t){var r={},i={};return B.isObject(e)?B.each(e,(function(e,t){this._is_reserved_property(t)||(i[t]=e)}),this):i[e]=t,r[Ee]=i,r},delete_action:function(){var e={$delete:""};return e}},Ie=function(){};B.extend(Ie.prototype,Oe),Ie.prototype._init=function(e,t,r){this._mixpanel=e,this._group_key=t,this._group_id=r},Ie.prototype.set=le((function(e,t,r){var i=this.set_action(e,t);return B.isObject(e)&&(r=t),this._send_request(i,r)})),Ie.prototype.set_once=le((function(e,t,r){var i=this.set_once_action(e,t);return B.isObject(e)&&(r=t),this._send_request(i,r)})),Ie.prototype.unset=le((function(e,t){var r=this.unset_action(e);return this._send_request(r,t)})),Ie.prototype.union=le((function(e,t,r){B.isObject(e)&&(r=t);var i=this.union_action(e,t);return this._send_request(i,r)})),Ie.prototype.delete=le((function(e){var t=this.delete_action();return this._send_request(t,e)})),Ie.prototype.remove=le((function(e,t,r){var i=this.remove_action(e,t);return this._send_request(i,r)})),Ie.prototype._send_request=function(e,t){e.$group_key=this._group_key,e.$group_id=this._group_id,e.$token=this._get_config("token");var r=B.encodeDates(e);return this._mixpanel._track_or_batch({type:"groups",data:r,endpoint:this._get_config("api_host")+"/"+this._get_config("api_routes").groups,batcher:this._mixpanel.request_batchers.groups},t)},Ie.prototype._is_reserved_property=function(e){return"$group_key"===e||"$group_id"===e},Ie.prototype._get_config=function(e){return this._mixpanel.get_config(e)},Ie.prototype.toString=function(){return this._mixpanel.toString()+".group."+this._group_key+"."+this._group_id},Ie.prototype.remove=Ie.prototype.remove,Ie.prototype.set=Ie.prototype.set,Ie.prototype.set_once=Ie.prototype.set_once,Ie.prototype.union=Ie.prototype.union,Ie.prototype.unset=Ie.prototype.unset,Ie.prototype.toString=Ie.prototype.toString;var Ae=function(){};B.extend(Ae.prototype,Oe),Ae.prototype._init=function(e){this._mixpanel=e},Ae.prototype.set=he((function(e,t,r){var i=this.set_action(e,t);return B.isObject(e)&&(r=t),this._get_config("save_referrer")&&this._mixpanel.persistence.update_referrer_info(document.referrer),i[be]=B.extend({},B.info.people_properties(),i[be]),this._send_request(i,r)})),Ae.prototype.set_once=he((function(e,t,r){var i=this.set_once_action(e,t);return B.isObject(e)&&(r=t),this._send_request(i,r)})),Ae.prototype.unset=he((function(e,t){var r=this.unset_action(e);return this._send_request(r,t)})),Ae.prototype.increment=he((function(e,t,r){var i={},o={};return B.isObject(e)?(B.each(e,(function(e,t){if(!this._is_reserved_property(t)){if(isNaN(parseFloat(e)))return void U.error("Invalid increment value passed to mixpanel.people.increment - must be a number");o[t]=e}}),this),r=t):(B.isUndefined(t)&&(t=1),o[e]=t),i[we]=o,this._send_request(i,r)})),Ae.prototype.append=he((function(e,t,r){B.isObject(e)&&(r=t);var i=this.append_action(e,t);return this._send_request(i,r)})),Ae.prototype.remove=he((function(e,t,r){B.isObject(e)&&(r=t);var i=this.remove_action(e,t);return this._send_request(i,r)})),Ae.prototype.union=he((function(e,t,r){B.isObject(e)&&(r=t);var i=this.union_action(e,t);return this._send_request(i,r)})),Ae.prototype.track_charge=he((function(e,t,r){if(B.isNumber(e)||(e=parseFloat(e),!isNaN(e)))return this.append("$transactions",B.extend({$amount:e},t),r);U.error("Invalid value passed to mixpanel.people.track_charge - must be a number")})),Ae.prototype.clear_charges=function(e){return this.set("$transactions",[],e)},Ae.prototype.delete_user=function(){if(this._identify_called()){var e={$delete:this._mixpanel.get_distinct_id()};return this._send_request(e)}U.error("mixpanel.people.delete_user() requires you to call identify() first")},Ae.prototype.toString=function(){return this._mixpanel.toString()+".people"},Ae.prototype._send_request=function(e,t){e.$token=this._get_config("token"),e.$distinct_id=this._mixpanel.get_distinct_id();var r=this._mixpanel.get_property("$device_id"),i=this._mixpanel.get_property("$user_id"),o=this._mixpanel.get_property("$had_persisted_distinct_id");r&&(e.$device_id=r),i&&(e.$user_id=i),o&&(e.$had_persisted_distinct_id=o);var n=B.encodeDates(e);return this._identify_called()?this._mixpanel._track_or_batch({type:"people",data:n,endpoint:this._get_config("api_host")+"/"+this._get_config("api_routes").engage,batcher:this._mixpanel.request_batchers.people},t):(this._enqueue(e),B.isUndefined(t)||(this._get_config("verbose")?t({status:-1,error:null}):t(-1)),B.truncate(n,255))},Ae.prototype._get_config=function(e){return this._mixpanel.get_config(e)},Ae.prototype._identify_called=function(){return!0===this._mixpanel._flags.identify_called},Ae.prototype._enqueue=function(e){be in e?this._mixpanel.persistence._add_to_people_queue(be,e):ke in e?this._mixpanel.persistence._add_to_people_queue(ke,e):xe in e?this._mixpanel.persistence._add_to_people_queue(xe,e):we in e?this._mixpanel.persistence._add_to_people_queue(we,e):Se in e?this._mixpanel.persistence._add_to_people_queue(Se,e):Ee in e?this._mixpanel.persistence._add_to_people_queue(Ee,e):qe in e?this._mixpanel.persistence._add_to_people_queue(qe,e):U.error("Invalid call to _enqueue():",e)},Ae.prototype._flush_one_queue=function(e,t,r,i){var o=this,n=B.extend({},this._mixpanel.persistence.load_queue(e)),s=n;B.isUndefined(n)||!B.isObject(n)||B.isEmptyObject(n)||(o._mixpanel.persistence._pop_from_people_queue(e,n),o._mixpanel.persistence.save(),i&&(s=i(n)),t.call(o,s,(function(t,i){0===t&&o._mixpanel.persistence._add_to_people_queue(e,n),B.isUndefined(r)||r(t,i)})))},Ae.prototype._flush=function(e,t,r,i,o,n,s){var a=this;this._flush_one_queue(be,this.set,e),this._flush_one_queue(ke,this.set_once,i),this._flush_one_queue(xe,this.unset,n,(function(e){return B.keys(e)})),this._flush_one_queue(we,this.increment,t),this._flush_one_queue(qe,this.union,o);var c=this._mixpanel.persistence.load_queue(Se);if(!B.isUndefined(c)&&B.isArray(c)&&c.length)for(var p,u=function(e,t){0===e&&a._mixpanel.persistence._add_to_people_queue(Se,p),B.isUndefined(r)||r(e,t)},_=c.length-1;_>=0;_--)c=this._mixpanel.persistence.load_queue(Se),p=c.pop(),a._mixpanel.persistence.save(),B.isEmptyObject(p)||a.append(p,u);var h=this._mixpanel.persistence.load_queue(Ee);if(!B.isUndefined(h)&&B.isArray(h)&&h.length)for(var l,d=function(e,t){0===e&&a._mixpanel.persistence._add_to_people_queue(Ee,l),B.isUndefined(s)||s(e,t)},f=h.length-1;f>=0;f--)h=this._mixpanel.persistence.load_queue(Ee),l=h.pop(),a._mixpanel.persistence.save(),B.isEmptyObject(l)||a.remove(l,d)},Ae.prototype._is_reserved_property=function(e){return"$distinct_id"===e||"$token"===e||"$device_id"===e||"$user_id"===e||"$had_persisted_distinct_id"===e},Ae.prototype.set=Ae.prototype.set,Ae.prototype.set_once=Ae.prototype.set_once,Ae.prototype.unset=Ae.prototype.unset,Ae.prototype.increment=Ae.prototype.increment,Ae.prototype.append=Ae.prototype.append,Ae.prototype.remove=Ae.prototype.remove,Ae.prototype.union=Ae.prototype.union,Ae.prototype.track_charge=Ae.prototype.track_charge,Ae.prototype.clear_charges=Ae.prototype.clear_charges,Ae.prototype.delete_user=Ae.prototype.delete_user,Ae.prototype.toString=Ae.prototype.toString;var De,Te,Pe="__mps",Be="__mpso",Ue="__mpus",$e="__mpa",je="__mpap",Me="__mpr",Ce="__mpu",Ne="$people_distinct_id",Fe="__alias",Re="__timers",ze=[Pe,Be,Ue,$e,je,Me,Ce,Ne,Fe,Re],Le=function(e){this.props={},this.campaign_params_saved=!1,e.persistence_name?this.name="mp_"+e.persistence_name:this.name="mp_"+e.token+"_mixpanel";var t=e.persistence;"cookie"!==t&&"localStorage"!==t&&(U.critical("Unknown persistence type "+t+"; falling back to cookie"),t=e.persistence="cookie"),"localStorage"===t&&B.localStorage.is_supported()?this.storage=B.localStorage:this.storage=B.cookie,this.load(),this.update_config(e),this.upgrade(e),this.save()};Le.prototype.properties=function(){var e={};return this.load(),B.each(this.props,(function(t,r){B.include(ze,r)||(e[r]=t)})),e},Le.prototype.load=function(){if(!this.disabled){var e=this.storage.parse(this.name);e&&(this.props=B.extend({},e))}},Le.prototype.upgrade=function(e){var t,r,i=e.upgrade;i&&(t="mp_super_properties","string"==typeof i&&(t=i),r=this.storage.parse(t),this.storage.remove(t),this.storage.remove(t,!0),r&&(this.props=B.extend(this.props,r.all,r.events))),e.cookie_name||"mixpanel"===e.name||(t="mp_"+e.token+"_"+e.name,(r=this.storage.parse(t))&&(this.storage.remove(t),this.storage.remove(t,!0),this.register_once(r))),this.storage===B.localStorage&&(r=B.cookie.parse(this.name),B.cookie.remove(this.name),B.cookie.remove(this.name,!0),r&&this.register_once(r))},Le.prototype.save=function(){this.disabled||this.storage.set(this.name,B.JSONEncode(this.props),this.expire_days,this.cross_subdomain,this.secure,this.cross_site,this.cookie_domain)},Le.prototype.load_prop=function(e){return this.load(),this.props[e]},Le.prototype.remove=function(){this.storage.remove(this.name,!1,this.cookie_domain),this.storage.remove(this.name,!0,this.cookie_domain)},Le.prototype.clear=function(){this.remove(),this.props={}},Le.prototype.register_once=function(e,t,r){return!!B.isObject(e)&&(void 0===t&&(t="None"),this.expire_days=void 0===r?this.default_expiry:r,this.load(),B.each(e,(function(e,r){this.props.hasOwnProperty(r)&&this.props[r]!==t||(this.props[r]=e)}),this),this.save(),!0)},Le.prototype.register=function(e,t){return!!B.isObject(e)&&(this.expire_days=void 0===t?this.default_expiry:t,this.load(),B.extend(this.props,e),this.save(),!0)},Le.prototype.unregister=function(e){this.load(),e in this.props&&(delete this.props[e],this.save())},Le.prototype.update_search_keyword=function(e){this.register(B.info.searchInfo(e))},Le.prototype.update_referrer_info=function(e){this.register_once({$initial_referrer:e||"$direct",$initial_referring_domain:B.info.referringDomain(e)||"$direct"},"")},Le.prototype.get_referrer_info=function(){return B.strip_empty_properties({$initial_referrer:this.props.$initial_referrer,$initial_referring_domain:this.props.$initial_referring_domain})},Le.prototype.update_config=function(e){this.default_expiry=this.expire_days=e.cookie_expiration,this.set_disabled(e.disable_persistence),this.set_cookie_domain(e.cookie_domain),this.set_cross_site(e.cross_site_cookie),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie)},Le.prototype.set_disabled=function(e){this.disabled=e,this.disabled?this.remove():this.save()},Le.prototype.set_cookie_domain=function(e){e!==this.cookie_domain&&(this.remove(),this.cookie_domain=e,this.save())},Le.prototype.set_cross_site=function(e){e!==this.cross_site&&(this.cross_site=e,this.remove(),this.save())},Le.prototype.set_cross_subdomain=function(e){e!==this.cross_subdomain&&(this.cross_subdomain=e,this.remove(),this.save())},Le.prototype.get_cross_subdomain=function(){return this.cross_subdomain},Le.prototype.set_secure=function(e){e!==this.secure&&(this.secure=!!e,this.remove(),this.save())},Le.prototype._add_to_people_queue=function(e,t){var r=this._get_queue_key(e),i=t[e],o=this._get_or_create_queue(be),n=this._get_or_create_queue(ke),s=this._get_or_create_queue(xe),a=this._get_or_create_queue(we),c=this._get_or_create_queue(qe),p=this._get_or_create_queue(Ee,[]),u=this._get_or_create_queue(Se,[]);r===Pe?(B.extend(o,i),this._pop_from_people_queue(we,i),this._pop_from_people_queue(qe,i),this._pop_from_people_queue(xe,i)):r===Be?(B.each(i,(function(e,t){t in n||(n[t]=e)})),this._pop_from_people_queue(xe,i)):r===Ue?B.each(i,(function(e){B.each([o,n,a,c],(function(t){e in t&&delete t[e]})),B.each(u,(function(t){e in t&&delete t[e]})),s[e]=!0})):r===$e?(B.each(i,(function(e,t){t in o?o[t]+=e:(t in a||(a[t]=0),a[t]+=e)}),this),this._pop_from_people_queue(xe,i)):r===Ce?(B.each(i,(function(e,t){B.isArray(e)&&(t in c||(c[t]=[]),c[t]=c[t].concat(e))})),this._pop_from_people_queue(xe,i)):r===Me?(p.push(i),this._pop_from_people_queue(Se,i)):r===je&&(u.push(i),this._pop_from_people_queue(xe,i)),U.log("MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):"),U.log(t),this.save()},Le.prototype._pop_from_people_queue=function(e,t){var r=this.props[this._get_queue_key(e)];B.isUndefined(r)||B.each(t,(function(t,i){e===Se||e===Ee?B.each(r,(function(e){e[i]===t&&delete e[i]})):delete r[i]}),this)},Le.prototype.load_queue=function(e){return this.load_prop(this._get_queue_key(e))},Le.prototype._get_queue_key=function(e){return e===be?Pe:e===ke?Be:e===xe?Ue:e===we?$e:e===Se?je:e===Ee?Me:e===qe?Ce:void U.error("Invalid queue:",e)},Le.prototype._get_or_create_queue=function(e,t){var r=this._get_queue_key(e);return t=B.isUndefined(t)?{}:t,this.props[r]||(this.props[r]=t)},Le.prototype.set_event_timer=function(e,t){var r=this.load_prop(Re)||{};r[e]=t,this.props[Re]=r,this.save()},Le.prototype.remove_event_timer=function(e){var t=(this.load_prop(Re)||{})[e];return B.isUndefined(t)||(delete this.props[Re][e],this.save()),t};var Je=function(e){return e},Qe=function(){},Ve="mixpanel",He="base64",Ke="$device:",Ge=t.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,We=!Ge&&-1===E.indexOf("MSIE")&&-1===E.indexOf("Mozilla"),Xe=null;x.sendBeacon&&(Xe=function(){return x.sendBeacon.apply(x,arguments)});var Ye={track:"track/",engage:"engage/",groups:"groups/"},Ze={api_host:"https://api-js.mixpanel.com",api_routes:Ye,api_method:"POST",api_transport:"XHR",api_payload_format:He,app_host:"https://mixpanel.com",cdn:"https://cdn.mxpnl.com",cross_site_cookie:!1,cross_subdomain_cookie:!0,error_reporter:Qe,persistence:"cookie",persistence_name:"",cookie_domain:"",cookie_name:"",loaded:Qe,mp_loader:null,track_marketing:!0,track_pageview:!1,skip_first_touch_marketing:!1,store_google:!0,stop_utm_persistence:!1,save_referrer:!0,test:!1,verbose:!1,img:!1,debug:!1,track_links_timeout:300,cookie_expiration:365,upgrade:!1,disable_persistence:!1,disable_cookie:!1,secure_cookie:!1,ip:!0,opt_out_tracking_by_default:!1,opt_out_persistence_by_default:!1,opt_out_tracking_persistence_type:"localStorage",opt_out_tracking_cookie_prefix:null,property_blacklist:[],xhr_headers:{},ignore_dnt:!1,batch_requests:!0,batch_size:50,batch_flush_interval_ms:5e3,batch_request_timeout_ms:9e4,batch_autostart:!0,hooks:{}},et=!1,tt=function(){},rt=function(e,t,i){var o,n=i===Ve?Te:Te[i];if(n&&0===De)o=n;else{if(n&&!B.isArray(n))return void U.error("You have already initialized "+i);o=new tt}if(o._cached_groups={},o._init(e,t,i),o.people=new Ae,o.people._init(o),!o.get_config("skip_first_touch_marketing")){var s=B.info.campaignParams(null),a={},c=!1;B.each(s,(function(e,t){a["initial_"+t]=e,e&&(c=!0)})),c&&o.people.set_once(a)}return r.DEBUG=r.DEBUG||o.get_config("debug"),!B.isUndefined(n)&&B.isArray(n)&&(o._execute_array.call(o.people,n.people),o._execute_array(n)),o};tt.prototype.init=function(e,t,r){if(B.isUndefined(r))this.report_error("You must name your new library: init(token, config, name)");else{if(r!==Ve){var i=rt(e,t,r);return Te[r]=i,i._loaded(),i}this.report_error("You must initialize the main mixpanel object right after you include the Mixpanel js snippet")}},tt.prototype._init=function(e,r,i){r=r||{},this.__loaded=!0,this.config={};var o={};"api_payload_format"in r||(r.api_host||Ze.api_host).match(/\.mixpanel\.com/)&&(o.api_payload_format="json");if(this.set_config(B.extend({},Ze,o,r,{name:i,token:e,callback_fn:(i===Ve?i:Ve+"."+i)+"._jsc"})),this._jsc=Qe,this.__dom_loaded_queue=[],this.__request_queue=[],this.__disabled_events=[],this._flags={disable_all_events:!1,identify_called:!1},this.request_batchers={},this._batch_requests=this.get_config("batch_requests"),this._batch_requests)if(B.localStorage.is_supported(!0)&&Ge){if(this.init_batchers(),Xe&&t.addEventListener){var n=B.bind((function(){this.request_batchers.events.stopped||this.request_batchers.events.flush({unloading:!0})}),this);t.addEventListener("pagehide",(function(e){e.persisted&&n()})),t.addEventListener("visibilitychange",(function(){"hidden"===w.visibilityState&&n()}))}}else this._batch_requests=!1,U.log("Turning off Mixpanel request-queueing; needs XHR and localStorage support"),B.each(this.get_batcher_configs(),(function(e){U.log("Clearing batch queue "+e.queue_key),B.localStorage.remove(e.queue_key)}));this.persistence=this.cookie=new Le(this.config),this.unpersisted_superprops={},this._gdpr_init();var s=B.UUID();this.get_distinct_id()||this.register_once({distinct_id:Ke+s,$device_id:s},"");var a=this.get_config("track_pageview");a&&this._init_url_change_tracking(a)},tt.prototype._loaded=function(){if(this.get_config("loaded")(this),this._set_default_superprops(),this.people.set_once(this.persistence.get_referrer_info()),this.get_config("store_google")&&this.get_config("stop_utm_persistence")){var e=B.info.campaignParams(null);B.each(e,function(e,t){this.unregister(t)}.bind(this))}},tt.prototype._set_default_superprops=function(){this.persistence.update_search_keyword(w.referrer),this.get_config("store_google")&&!this.get_config("stop_utm_persistence")&&this.register(B.info.campaignParams()),this.get_config("save_referrer")&&this.persistence.update_referrer_info(w.referrer)},tt.prototype._dom_loaded=function(){B.each(this.__dom_loaded_queue,(function(e){this._track_dom.apply(this,e)}),this),this.has_opted_out_tracking()||B.each(this.__request_queue,(function(e){this._send_request.apply(this,e)}),this),delete this.__dom_loaded_queue,delete this.__request_queue},tt.prototype._track_dom=function(e,t){if(this.get_config("img"))return this.report_error("You can't use DOM tracking functions with img = true."),!1;if(!et)return this.__dom_loaded_queue.push([e,t]),!1;var r=(new e).init(this);return r.track.apply(r,t)},tt.prototype._init_url_change_tracking=function(e){var r="";if(this.track_pageview()&&(r=B.info.currentUrl()),B.include(["full-url","url-with-path-and-query-string","url-with-path"],e)){t.addEventListener("popstate",(function(){t.dispatchEvent(new Event("mp_locationchange"))})),t.addEventListener("hashchange",(function(){t.dispatchEvent(new Event("mp_locationchange"))}));var i=t.history.pushState;"function"==typeof i&&(t.history.pushState=function(e,r,o){i.call(t.history,e,r,o),t.dispatchEvent(new Event("mp_locationchange"))});var o=t.history.replaceState;"function"==typeof o&&(t.history.replaceState=function(e,r,i){o.call(t.history,e,r,i),t.dispatchEvent(new Event("mp_locationchange"))}),t.addEventListener("mp_locationchange",function(){var t=B.info.currentUrl(),i=!1;("full-url"===e?i=t!==r:"url-with-path-and-query-string"===e?i=t.split("#")[0]!==r.split("#")[0]:"url-with-path"===e&&(i=t.split("#")[0].split("?")[0]!==r.split("#")[0].split("?")[0]),i)&&(this.track_pageview()&&(r=t))}.bind(this))}},tt.prototype._prepare_callback=function(e,t){if(B.isUndefined(e))return null;if(Ge){return function(r){e(r,t)}}var r=this._jsc,i=""+Math.floor(1e8*Math.random()),o=this.get_config("callback_fn")+"["+i+"]";return r[i]=function(o){delete r[i],e(o,t)},o},tt.prototype._send_request=function(e,t,r,i){var o=!0;if(We)return this.__request_queue.push(arguments),o;var n={method:this.get_config("api_method"),transport:this.get_config("api_transport"),verbose:this.get_config("verbose")},s=null;i||!B.isFunction(r)&&"string"!=typeof r||(i=r,r=null),r=B.extend(n,r||{}),Ge||(r.method="GET");var a="POST"===r.method,c=Xe&&a&&"sendbeacon"===r.transport.toLowerCase(),p=r.verbose;t.verbose&&(p=!0),this.get_config("test")&&(t.test=1),p&&(t.verbose=1),this.get_config("img")&&(t.img=1),Ge||(i?t.callback=i:(p||this.get_config("test"))&&(t.callback="(function(){})")),t.ip=this.get_config("ip")?1:0,t._=(new Date).getTime().toString(),a&&(s="data="+encodeURIComponent(t.data),delete t.data),e+="?"+B.HTTPBuildQuery(t);var u=this;if("img"in t){var _=w.createElement("img");_.src=e,w.body.appendChild(_)}else if(c){try{o=Xe(e,s)}catch(e){u.report_error(e),o=!1}try{i&&i(o?1:0)}catch(e){u.report_error(e)}}else if(Ge)try{var h=new XMLHttpRequest;h.open(r.method,e,!0);var l=this.get_config("xhr_headers");if(a&&(l["Content-Type"]="application/x-www-form-urlencoded"),B.each(l,(function(e,t){h.setRequestHeader(t,e)})),r.timeout_ms&&void 0!==h.timeout){h.timeout=r.timeout_ms;var d=(new Date).getTime()}h.withCredentials=!0,h.onreadystatechange=function(){var e;if(4===h.readyState)if(200===h.status){if(i)if(p){var t;try{t=B.JSONDecode(h.responseText)}catch(e){if(u.report_error(e),!r.ignore_json_errors)return;t=h.responseText}i(t)}else i(Number(h.responseText))}else e=h.timeout&&!h.status&&(new Date).getTime()-d>=h.timeout?"timeout":"Bad HTTP status: "+h.status+" "+h.statusText,u.report_error(e),i&&i(p?{status:0,error:e,xhr_req:h}:0)},h.send(s)}catch(e){u.report_error(e),o=!1}else{var f=w.createElement("script");f.type="text/javascript",f.async=!0,f.defer=!0,f.src=e;var g=w.getElementsByTagName("script")[0];g.parentNode.insertBefore(f,g)}return o},tt.prototype._execute_array=function(e){var t,r=[],i=[],o=[];B.each(e,(function(e){e&&(t=e[0],B.isArray(t)?o.push(e):"function"==typeof e?e.call(this):B.isArray(e)&&"alias"===t?r.push(e):B.isArray(e)&&-1!==t.indexOf("track")&&"function"==typeof this[t]?o.push(e):i.push(e))}),this);var n=function(e,t){B.each(e,(function(e){if(B.isArray(e[0])){var r=t;B.each(e,(function(e){r=r[e[0]].apply(r,e.slice(1))}))}else this[e[0]].apply(this,e.slice(1))}),t)};n(r,this),n(i,this),n(o,this)},tt.prototype.are_batchers_initialized=function(){return!!this.request_batchers.events},tt.prototype.get_batcher_configs=function(){var e="__mpq_"+this.get_config("token"),t=this.get_config("api_routes");return this._batcher_configs=this._batcher_configs||{events:{type:"events",endpoint:"/"+t.track,queue_key:e+"_ev"},people:{type:"people",endpoint:"/"+t.engage,queue_key:e+"_pp"},groups:{type:"groups",endpoint:"/"+t.groups,queue_key:e+"_gr"}},this._batcher_configs},tt.prototype.init_batchers=function(){if(!this.are_batchers_initialized()){var e=B.bind((function(e){return new ne(e.queue_key,{libConfig:this.config,sendRequestFunc:B.bind((function(t,r,i){this._send_request(this.get_config("api_host")+e.endpoint,this._encode_data_for_request(t),r,this._prepare_callback(i,t))}),this),beforeSendHook:B.bind((function(t){return this._run_hook("before_send_"+e.type,t)}),this),errorReporter:this.get_config("error_reporter"),stopAllBatchingFunc:B.bind(this.stop_batch_senders,this)})}),this),t=this.get_batcher_configs();this.request_batchers={events:e(t.events),people:e(t.people),groups:e(t.groups)}}this.get_config("batch_autostart")&&this.start_batch_senders()},tt.prototype.start_batch_senders=function(){this._batchers_were_started=!0,this.are_batchers_initialized()&&(this._batch_requests=!0,B.each(this.request_batchers,(function(e){e.start()})))},tt.prototype.stop_batch_senders=function(){this._batch_requests=!1,B.each(this.request_batchers,(function(e){e.stop(),e.clear()}))},tt.prototype.push=function(e){this._execute_array([e])},tt.prototype.disable=function(e){void 0===e?this._flags.disable_all_events=!0:this.__disabled_events=this.__disabled_events.concat(e)},tt.prototype._encode_data_for_request=function(e){var t=B.JSONEncode(e);return this.get_config("api_payload_format")===He&&(t=B.base64Encode(t)),{data:t}},tt.prototype._track_or_batch=function(e,t){var r=B.truncate(e.data,255),i=e.endpoint,o=e.batcher,n=e.should_send_immediately,s=e.send_request_options||{};t=t||Qe;var a=!0,c=B.bind((function(){return s.skip_hooks||(r=this._run_hook("before_send_"+e.type,r)),r?(U.log("MIXPANEL REQUEST:"),U.log(r),this._send_request(i,this._encode_data_for_request(r),s,this._prepare_callback(t,r))):null}),this);return this._batch_requests&&!n?o.enqueue(r,(function(e){e?t(1,r):c()})):a=c(),a&&r},tt.prototype.track=_e((function(e,t,r,i){i||"function"!=typeof r||(i=r,r=null);var o=(r=r||{}).transport;o&&(r.transport=o);var n=r.send_immediately;if("function"!=typeof i&&(i=Qe),B.isUndefined(e))this.report_error("No event name provided to mixpanel.track");else{if(!this._event_is_disabled(e)){(t=B.extend({},t)).token=this.get_config("token");var s=this.persistence.remove_event_timer(e);if(!B.isUndefined(s)){var a=(new Date).getTime()-s;t.$duration=parseFloat((a/1e3).toFixed(3))}this._set_default_superprops();var c=this.get_config("track_marketing")?B.info.marketingParams():{};t=B.extend({},B.info.properties({mp_loader:this.get_config("mp_loader")}),c,this.persistence.properties(),this.unpersisted_superprops,t);var p=this.get_config("property_blacklist");B.isArray(p)?B.each(p,(function(e){delete t[e]})):this.report_error("Invalid value for property_blacklist config: "+p);var u={event:e,properties:t};return this._track_or_batch({type:"events",data:u,endpoint:this.get_config("api_host")+"/"+this.get_config("api_routes").track,batcher:this.request_batchers.events,should_send_immediately:n,send_request_options:r},i)}i(0)}})),tt.prototype.set_group=_e((function(e,t,r){B.isArray(t)||(t=[t]);var i={};return i[e]=t,this.register(i),this.people.set(e,t,r)})),tt.prototype.add_group=_e((function(e,t,r){var i=this.get_property(e),o={};return void 0===i?(o[e]=[t],this.register(o)):-1===i.indexOf(t)&&(i.push(t),o[e]=i,this.register(o)),this.people.union(e,t,r)})),tt.prototype.remove_group=_e((function(e,t,r){var i=this.get_property(e);if(void 0!==i){var o=i.indexOf(t);o>-1&&(i.splice(o,1),this.register({group_key:i})),0===i.length&&this.unregister(e)}return this.people.remove(e,t,r)})),tt.prototype.track_with_groups=_e((function(e,t,r,i){var o=B.extend({},t||{});return B.each(r,(function(e,t){null!=e&&(o[t]=e)})),this.track(e,o,i)})),tt.prototype._create_map_key=function(e,t){return e+"_"+JSON.stringify(t)},tt.prototype._remove_group_from_cache=function(e,t){delete this._cached_groups[this._create_map_key(e,t)]},tt.prototype.get_group=function(e,t){var r=this._create_map_key(e,t),i=this._cached_groups[r];return void 0!==i&&i._group_key===e&&i._group_id===t||((i=new Ie)._init(this,e,t),this._cached_groups[r]=i),i},tt.prototype.track_pageview=_e((function(e,t){"object"!=typeof e&&(e={});var r=(t=t||{}).event_name||"$mp_web_page_view",i=B.extend(B.info.mpPageViewProperties(),B.info.campaignParams(),B.info.clickParams()),o=B.extend({},i,e);return this.track(r,o)})),tt.prototype.track_links=function(){return this._track_dom.call(this,W,arguments)},tt.prototype.track_forms=function(){return this._track_dom.call(this,X,arguments)},tt.prototype.time_event=function(e){B.isUndefined(e)?this.report_error("No event name provided to mixpanel.time_event"):this._event_is_disabled(e)||this.persistence.set_event_timer(e,(new Date).getTime())};var it={persistent:!0},ot=function(e){var t;return t=B.isObject(e)?e:B.isUndefined(e)?{}:{days:e},B.extend({},it,t)};tt.prototype.register=function(e,t){var r=ot(t);r.persistent?this.persistence.register(e,r.days):B.extend(this.unpersisted_superprops,e)},tt.prototype.register_once=function(e,t,r){var i=ot(r);i.persistent?this.persistence.register_once(e,t,i.days):(void 0===t&&(t="None"),B.each(e,(function(e,r){this.unpersisted_superprops.hasOwnProperty(r)&&this.unpersisted_superprops[r]!==t||(this.unpersisted_superprops[r]=e)}),this))},tt.prototype.unregister=function(e,t){(t=ot(t)).persistent?this.persistence.unregister(e):delete this.unpersisted_superprops[e]},tt.prototype._register_single=function(e,t){var r={};r[e]=t,this.register(r)},tt.prototype.identify=function(e,t,r,i,o,n,s,a){var c=this.get_distinct_id();if(e&&c!==e){if("string"==typeof e&&0===e.indexOf(Ke))return this.report_error("distinct_id cannot have $device: prefix"),-1;this.register({$user_id:e})}if(!this.get_property("$device_id")){var p=c;this.register_once({$had_persisted_distinct_id:!0,$device_id:p},"")}e!==c&&e!==this.get_property(Fe)&&(this.unregister(Fe),this.register({distinct_id:e})),this._flags.identify_called=!0,this.people._flush(t,r,i,o,n,s,a),e!==c&&this.track("$identify",{distinct_id:e,$anon_distinct_id:c},{skip_hooks:!0})},tt.prototype.reset=function(){this.persistence.clear(),this._flags.identify_called=!1;var e=B.UUID();this.register_once({distinct_id:Ke+e,$device_id:e},"")},tt.prototype.get_distinct_id=function(){return this.get_property("distinct_id")},tt.prototype.alias=function(e,t){if(e===this.get_property(Ne))return this.report_error("Attempting to create alias for existing People user - aborting."),-2;var r=this;return B.isUndefined(t)&&(t=this.get_distinct_id()),e!==t?(this._register_single(Fe,e),this.track("$create_alias",{alias:e,distinct_id:t},{skip_hooks:!0},(function(){r.identify(e)}))):(this.report_error("alias matches current distinct_id - skipping api call."),this.identify(e),-1)},tt.prototype.name_tag=function(e){this._register_single("mp_name_tag",e)},tt.prototype.set_config=function(e){B.isObject(e)&&(B.extend(this.config,e),e.batch_size&&B.each(this.request_batchers,(function(e){e.resetBatchSize()})),this.get_config("persistence_name")||(this.config.persistence_name=this.config.cookie_name),this.get_config("disable_persistence")||(this.config.disable_persistence=this.config.disable_cookie),this.persistence&&this.persistence.update_config(this.config),r.DEBUG=r.DEBUG||this.get_config("debug"))},tt.prototype.get_config=function(e){return this.config[e]},tt.prototype._run_hook=function(e){var t=(this.config.hooks[e]||Je).apply(this,y.call(arguments,1));return void 0===t&&(this.report_error(e+" hook did not return a value"),t=null),t},tt.prototype.get_property=function(e){return this.persistence.load_prop([e])},tt.prototype.toString=function(){var e=this.get_config("name");return e!==Ve&&(e=Ve+"."+e),e},tt.prototype._event_is_disabled=function(e){return B.isBlockedUA(E)||this._flags.disable_all_events||B.include(this.__disabled_events,e)},tt.prototype._gdpr_init=function(){"localStorage"===this.get_config("opt_out_tracking_persistence_type")&&B.localStorage.is_supported()&&(!this.has_opted_in_tracking()&&this.has_opted_in_tracking({persistence_type:"cookie"})&&this.opt_in_tracking({enable_persistence:!1}),!this.has_opted_out_tracking()&&this.has_opted_out_tracking({persistence_type:"cookie"})&&this.opt_out_tracking({clear_persistence:!1}),this.clear_opt_in_out_tracking({persistence_type:"cookie",enable_persistence:!1})),this.has_opted_out_tracking()?this._gdpr_update_persistence({clear_persistence:!0}):this.has_opted_in_tracking()||!this.get_config("opt_out_tracking_by_default")&&!B.cookie.get("mp_optout")||(B.cookie.remove("mp_optout"),this.opt_out_tracking({clear_persistence:this.get_config("opt_out_persistence_by_default")}))},tt.prototype._gdpr_update_persistence=function(e){var t;if(e&&e.clear_persistence)t=!0;else{if(!e||!e.enable_persistence)return;t=!1}this.get_config("disable_persistence")||this.persistence.disabled===t||this.persistence.set_disabled(t),t?this.stop_batch_senders():this._batchers_were_started&&this.start_batch_senders()},tt.prototype._gdpr_call_func=function(e,t){return t=B.extend({track:B.bind(this.track,this),persistence_type:this.get_config("opt_out_tracking_persistence_type"),cookie_prefix:this.get_config("opt_out_tracking_cookie_prefix"),cookie_expiration:this.get_config("cookie_expiration"),cross_site_cookie:this.get_config("cross_site_cookie"),cross_subdomain_cookie:this.get_config("cross_subdomain_cookie"),cookie_domain:this.get_config("cookie_domain"),secure_cookie:this.get_config("secure_cookie"),ignore_dnt:this.get_config("ignore_dnt")},t),B.localStorage.is_supported()||(t.persistence_type="cookie"),e(this.get_config("token"),{track:t.track,trackEventName:t.track_event_name,trackProperties:t.track_properties,persistenceType:t.persistence_type,persistencePrefix:t.cookie_prefix,cookieDomain:t.cookie_domain,cookieExpiration:t.cookie_expiration,crossSiteCookie:t.cross_site_cookie,crossSubdomainCookie:t.cross_subdomain_cookie,secureCookie:t.secure_cookie,ignoreDnt:t.ignore_dnt})},tt.prototype.opt_in_tracking=function(e){e=B.extend({enable_persistence:!0},e),this._gdpr_call_func(ae,e),this._gdpr_update_persistence(e)},tt.prototype.opt_out_tracking=function(e){(e=B.extend({clear_persistence:!0,delete_user:!0},e)).delete_user&&this.people&&this.people._identify_called()&&(this.people.delete_user(),this.people.clear_charges()),this._gdpr_call_func(ce,e),this._gdpr_update_persistence(e)},tt.prototype.has_opted_in_tracking=function(e){return this._gdpr_call_func(pe,e)},tt.prototype.has_opted_out_tracking=function(e){return this._gdpr_call_func(ue,e)},tt.prototype.clear_opt_in_out_tracking=function(e){e=B.extend({enable_persistence:!0},e),this._gdpr_call_func(de,e),this._gdpr_update_persistence(e)},tt.prototype.report_error=function(e,t){U.error.apply(U.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.get_config("error_reporter")(e,t)}catch(t){U.error(t)}},tt.prototype.init=tt.prototype.init,tt.prototype.reset=tt.prototype.reset,tt.prototype.disable=tt.prototype.disable,tt.prototype.time_event=tt.prototype.time_event,tt.prototype.track=tt.prototype.track,tt.prototype.track_links=tt.prototype.track_links,tt.prototype.track_forms=tt.prototype.track_forms,tt.prototype.track_pageview=tt.prototype.track_pageview,tt.prototype.register=tt.prototype.register,tt.prototype.register_once=tt.prototype.register_once,tt.prototype.unregister=tt.prototype.unregister,tt.prototype.identify=tt.prototype.identify,tt.prototype.alias=tt.prototype.alias,tt.prototype.name_tag=tt.prototype.name_tag,tt.prototype.set_config=tt.prototype.set_config,tt.prototype.get_config=tt.prototype.get_config,tt.prototype.get_property=tt.prototype.get_property,tt.prototype.get_distinct_id=tt.prototype.get_distinct_id,tt.prototype.toString=tt.prototype.toString,tt.prototype.opt_out_tracking=tt.prototype.opt_out_tracking,tt.prototype.opt_in_tracking=tt.prototype.opt_in_tracking,tt.prototype.has_opted_out_tracking=tt.prototype.has_opted_out_tracking,tt.prototype.has_opted_in_tracking=tt.prototype.has_opted_in_tracking,tt.prototype.clear_opt_in_out_tracking=tt.prototype.clear_opt_in_out_tracking,tt.prototype.get_group=tt.prototype.get_group,tt.prototype.set_group=tt.prototype.set_group,tt.prototype.add_group=tt.prototype.add_group,tt.prototype.remove_group=tt.prototype.remove_group,tt.prototype.track_with_groups=tt.prototype.track_with_groups,tt.prototype.start_batch_senders=tt.prototype.start_batch_senders,tt.prototype.stop_batch_senders=tt.prototype.stop_batch_senders,tt.prototype.DEFAULT_API_ROUTES=Ye,Le.prototype.properties=Le.prototype.properties,Le.prototype.update_search_keyword=Le.prototype.update_search_keyword,Le.prototype.update_referrer_info=Le.prototype.update_referrer_info,Le.prototype.get_cross_subdomain=Le.prototype.get_cross_subdomain,Le.prototype.clear=Le.prototype.clear;var nt={},st=function(){Te.init=function(e,r,i){if(i)return Te[i]||(Te[i]=nt[i]=rt(e,r,i),Te[i]._loaded()),Te[i];var o=Te;nt[Ve]?o=nt[Ve]:e&&((o=rt(e,r,Ve))._loaded(),nt[Ve]=o),Te=o,1===De&&(t[Ve]=Te),B.each(nt,(function(e,t){t!==Ve&&(Te[t]=e)})),Te._=B}};var at=(De=0,Te=new tt,st(),Te.init(),function(){function e(){e.done||(e.done=!0,et=!0,We=!1,B.each(nt,(function(e){e._dom_loaded()})))}if(w.addEventListener)"complete"===w.readyState?e():w.addEventListener("DOMContentLoaded",e,!1);else if(w.attachEvent){w.attachEvent("onreadystatechange",e);var r=!1;try{r=null===t.frameElement}catch(e){}w.documentElement.doScroll&&r&&function t(){try{w.documentElement.doScroll("left")}catch(e){return void setTimeout(t,1)}e()}()}B.register_event(t,"load",e,!0)}(),Te);e.exports=at}},t={};function r(i){var o=t[i];if(void 0!==o)return o.exports;var n=t[i]={exports:{}};return e[i](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";r.r(i);var e=r(6345),t=r.n(e);const o=Autodesk.Viewing.Private.logger;class n extends Autodesk.Viewing.Private.AnalyticsProviderInterface{constructor(e){super(e),this.initialized=!1}init(){this.options.token||o.warn("Mixpanel token is not defined"),t().init(this.options.token,this.options.config),this.initialized=!0}register(e){t().register(e)}static get name(){return"mixpanel"}static get defaultOptions(){return{token:"7cecb637d6468a8b61f388bbb82072ee",config:{persistence:"localStorage",batch_requests:!0,batch_size:500,batch_flush_interval_ms:15e3,autotrack:!1}}}hasOptedOut(){return t().has_opted_out_tracking()}optOut(e){this.track("OptOutTracking"),t().opt_out_tracking(e)}getDistinctId(){return t().get_distinct_id()}optIn(e){t().opt_in_tracking(e),this.track("OptInTracking")}track(e,r){t().track(e,r)}identify(e){t().identify(e)}}const s=Autodesk.Viewing,a=s.Private;class c extends Autodesk.Viewing.Extension{constructor(e,t){super(e,t)}load(){return!0}unload(){return!0}activate(){return!0}deactivate(){return!1}}s.theExtensionManager.registerExtension("Autodesk.Viewing.MixpanelExtension",c),a.analytics.registerProvider(n)})(),Autodesk.Extensions.MixpanelProvider=i})(); +//# sourceMappingURL=MixpanelProvider.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/Section/Section.min.js b/public/autodesk/extensions/Section/Section.min.js new file mode 100644 index 0000000..dac56c5 --- /dev/null +++ b/public/autodesk/extensions/Section/Section.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var t={3412:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});var i=n(1354),o=n.n(i),a=n(6314),s=n.n(a)()(o());s.push([t.id,".sectionPanel{line-height:14px;text-align:left;z-index:10}.section-horizontal-divider{height:1px;border-top:1px solid rgba(200,200,200,.8)}.section-submenu-select{display:block;position:relative;width:calc(100% - 40px);padding:10px 20px 0px 20px;opacity:.3}.section-panel:hover .section-submenu-select{opacity:.8}.section-submenu-selectlabel{position:relative;display:inline-block;padding-right:20px;padding-bottom:4px}.section-restart{margin:10px 20px 15px 20px;padding:6px 10px 6px 10px;width:calc(100% - 55px);cursor:pointer}.docking-panel:hover .section-restart{background-color:rgba(255,255,255,.12)}.docking-panel .section-restart:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}","",{version:3,sources:["webpack://./extensions/Section/Section.css"],names:[],mappings:"AAAA,cAAc,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,4BAA4B,UAAU,CAAC,yCAAyC,CAAC,wBAAwB,aAAa,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,UAAU,CAAC,6CAA6C,UAAU,CAAC,6BAA6B,iBAAiB,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,iBAAiB,0BAA0B,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,cAAc,CAAC,sCAAsC,sCAAsC,CAAC,sCAAsC,qCAAqC,CAAC,+BAA+B,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,uBAAuB",sourcesContent:[".sectionPanel{line-height:14px;text-align:left;z-index:10}.section-horizontal-divider{height:1px;border-top:1px solid rgba(200,200,200,.8)}.section-submenu-select{display:block;position:relative;width:calc(100% - 40px);padding:10px 20px 0px 20px;opacity:.3}.section-panel:hover .section-submenu-select{opacity:.8}.section-submenu-selectlabel{position:relative;display:inline-block;padding-right:20px;padding-bottom:4px}.section-restart{margin:10px 20px 15px 20px;padding:6px 10px 6px 10px;width:calc(100% - 55px);cursor:pointer}.docking-panel:hover .section-restart{background-color:rgba(255,255,255,.12)}.docking-panel .section-restart:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}"],sourceRoot:""}]);const r=s},6314:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n="",i=void 0!==e[5];return e[4]&&(n+="@supports (".concat(e[4],") {")),e[2]&&(n+="@media ".concat(e[2]," {")),i&&(n+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),n+=t(e),i&&(n+="}"),e[2]&&(n+="}"),e[4]&&(n+="}"),n})).join("")},e.i=function(t,n,i,o,a){"string"==typeof t&&(t=[[null,t,void 0]]);var s={};if(i)for(var r=0;r0?" ".concat(h[5]):""," {").concat(h[1],"}")),h[5]=a),n&&(h[2]?(h[1]="@media ".concat(h[2]," {").concat(h[1],"}"),h[2]=n):h[2]=n),o&&(h[4]?(h[1]="@supports (".concat(h[4],") {").concat(h[1],"}"),h[4]=o):h[4]="".concat(o)),e.push(h))}},e}},1354:t=>{"use strict";t.exports=function(t){var e=t[1],n=t[3];if(!n)return e;if("function"==typeof btoa){var i=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),a="/*# ".concat(o," */");return[e].concat([a]).join("\n")}return[e].join("\n")}},1873:(t,e,n)=>{var i=n(9325).Symbol;t.exports=i},2552:(t,e,n)=>{var i=n(1873),o=n(659),a=n(9350),s=i?i.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?o(t):a(t)}},4128:(t,e,n)=>{var i=n(1800),o=/^\s+/;t.exports=function(t){return t?t.slice(0,i(t)+1).replace(o,""):t}},4840:(t,e,n)=>{var i="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;t.exports=i},659:(t,e,n)=>{var i=n(1873),o=Object.prototype,a=o.hasOwnProperty,s=o.toString,r=i?i.toStringTag:void 0;t.exports=function(t){var e=a.call(t,r),n=t[r];try{t[r]=void 0;var i=!0}catch(t){}var o=s.call(t);return i&&(e?t[r]=n:delete t[r]),o}},9350:t=>{var e=Object.prototype.toString;t.exports=function(t){return e.call(t)}},9325:(t,e,n)=>{var i=n(4840),o="object"==typeof self&&self&&self.Object===Object&&self,a=i||o||Function("return this")();t.exports=a},1800:t=>{var e=/\s/;t.exports=function(t){for(var n=t.length;n--&&e.test(t.charAt(n)););return n}},8221:(t,e,n)=>{var i=n(3805),o=n(124),a=n(9374),s=Math.max,r=Math.min;t.exports=function(t,e,n){var c,l,h,u,p,E,d=0,m=!1,f=!1,v=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function T(e){var n=c,i=l;return c=l=void 0,d=e,u=t.apply(i,n)}function w(t){var n=t-E;return void 0===E||n>=e||n<0||f&&t-d>=h}function y(){var t=o();if(w(t))return g(t);p=setTimeout(y,function(t){var n=e-(t-E);return f?r(n,h-(t-d)):n}(t))}function g(t){return p=void 0,v&&c?T(t):(c=l=void 0,u)}function R(){var t=o(),n=w(t);if(c=arguments,l=this,E=t,n){if(void 0===p)return function(t){return d=t,p=setTimeout(y,e),m?T(t):u}(E);if(f)return clearTimeout(p),p=setTimeout(y,e),T(E)}return void 0===p&&(p=setTimeout(y,e)),u}return e=a(e)||0,i(n)&&(m=!!n.leading,h=(f="maxWait"in n)?s(a(n.maxWait)||0,e):h,v="trailing"in n?!!n.trailing:v),R.cancel=function(){void 0!==p&&clearTimeout(p),d=0,c=E=l=p=void 0},R.flush=function(){return void 0===p?u:g(o())},R}},3805:t=>{t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},346:t=>{t.exports=function(t){return null!=t&&"object"==typeof t}},4394:(t,e,n)=>{var i=n(2552),o=n(346);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==i(t)}},124:(t,e,n)=>{var i=n(9325);t.exports=function(){return i.Date.now()}},9374:(t,e,n)=>{var i=n(4128),o=n(3805),a=n(4394),s=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(a(t))return NaN;if(o(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=o(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=i(t);var n=r.test(t);return n||c.test(t)?l(t.slice(2),n?2:8):s.test(t)?NaN:+t}},5072:t=>{"use strict";var e=[];function n(t){for(var n=-1,i=0;i{"use strict";var e={};t.exports=function(t,n){var i=function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}e[t]=n}return e[t]}(t);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(n)}},540:t=>{"use strict";t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},5056:(t,e,n)=>{"use strict";t.exports=function(t){var e=n.nc;e&&t.setAttribute("nonce",e)}},7825:t=>{"use strict";t.exports=function(t){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=t.insertStyleElement(t);return{update:function(n){!function(t,e,n){var i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var o=void 0!==n.layer;o&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,o&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var a=n.sourceMap;a&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleTagTransform(i,t,e.options)}(e,t,n)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},1113:t=>{"use strict";t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}}},e={};function n(i){var o=e[i];if(void 0!==o)return o.exports;var a=e[i]={id:i,exports:{}};return t[i](a,a.exports,n),a.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nc=void 0;var i={};(()=>{"use strict";n.r(i),n.d(i,{SectionExtension:()=>x});const t=n(8221);var e=null,o=Autodesk.Viewing.Private,a=function(n,i){var a,s,r=n.impl,c=["section"],l=!1,h=!1,u=!1,p=!0,E=i.tintColor,d=i.tintIntensity,m=isNaN(i.gizmoOffsetRight)?200:i.gizmoOffsetRight,f=isNaN(i.gizmoOffsetLeft)?80:i.gizmoOffsetLeft,v=isNaN(i.gizmoOffsetTop)?80:i.gizmoOffsetTop,T=isNaN(i.gizmoOffsetBottom)?80:i.gizmoOffsetBottom,w=new THREE.Vector3,y=new THREE.Vector3,g=[],R=[],x=[],M="",H="gizmo",b=null,A=!1,P=!0,S=[0,1,1,3,3,2,2,0],C=2653930,V=!0;let B,k,z,I,O=new THREE.Vector3;function X(t){B=t,k=B.clone().invert(),z=(new THREE.Matrix3).getNormalMatrix(B),I=(new THREE.Matrix3).getNormalMatrix(k)}function Y(){var t,e;let n=new THREE.Matrix4;const i=null===(t=r.get3DModels()[0])||void 0===t?void 0:t.getData();if(i&&null!==(e=i.loadOptions)&&void 0!==e&&e.applyRefPoint&&i.refPointTransform){const t=i.refPointTransform,e=new THREE.Vector3,o=new THREE.Quaternion,a=new THREE.Vector3;t.decompose(e,o,a),n.makeRotationFromQuaternion(o)}return n}X(Y());const G=t(((t,e,n)=>{o.analytics.track("viewer.section",{from:t,type:e,action:n})}),2e3);function _(){r.invalidate(!1,!1,!0)}function L(){j(),a&&a.update(),s&&s.update()}function j(){if(!a||!a.object)return;let t=function(t){const e=r.worldToClient(t),n=r.getCanvasBoundingClientRect();let i=(new THREE.Vector3).copy(e);return e.xn.width-m&&(i.x=n.width-m),e.yn.height-T&&(i.y=n.height-T),i.x!==e.x||i.y!==e.y?i:void 0}(a.position);if(t){const e=THREE.TransformControls.intersectObjects(t.x,t.y,[a.object],r.camera,!1);e&&(a.object.getWorldPosition(w),y.copy(e.point).sub(w),a.setGizmoOffset(y))}}function N(){l&&1===R.length&&(J(!0),L(),F((new THREE.Plane).setComponents(R[0].x,R[0].y,R[0].z,R[0].w)))}function Z(t){let{objectsMoved:e}=t;e&&N()}!function(){class t extends THREE.MeshBasicMaterial{constructor(t){super(),this.depthTest=!1,this.depthWrite=!1,this.side=THREE.FrontSide,this.transparent=!0,this.setValues(t),this.oldColor=this.color.clone(),this.oldOpacity=this.opacity,this.highlight=function(t){t?(this.color.setRGB(1,230/255,3/255),this.opacity=1):(this.color.copy(this.oldColor),this.opacity=this.oldOpacity)}}}class e extends THREE.LineBasicMaterial{constructor(t){super(),this.depthTest=!1,this.depthWrite=!1,this.transparent=!0,this.linewidth=1,this.setValues(t),this.oldColor=this.color.clone(),this.oldOpacity=this.opacity,this.highlight=function(t){t?(this.color.setRGB(1,230/255,3/255),this.opacity=1):(this.color.copy(this.oldColor),this.opacity=this.oldOpacity)}}}var n=function(t,e,n){const i=[];n=n||1;for(var o=0;o<=64*n;++o)"x"==e&&i.push(new THREE.Vector3(0,Math.cos(o/32*Math.PI),Math.sin(o/32*Math.PI)).multiplyScalar(t)),"y"==e&&i.push(new THREE.Vector3(Math.cos(o/32*Math.PI),0,Math.sin(o/32*Math.PI)).multiplyScalar(t)),"z"==e&&i.push(new THREE.Vector3(Math.sin(o/32*Math.PI),Math.cos(o/32*Math.PI),0).multiplyScalar(t));return(new THREE.BufferGeometry).setFromPoints(i)},i=function(t,e,n,i,o,a){return new THREE.CylinderBufferGeometry(t,e,n,i,o,a).applyMatrix4((new THREE.Matrix4).makeTranslation(0,.5,0))},o=function(t){const e=[];return"X"===t?e.push(new THREE.Vector3(0,0,0),new THREE.Vector3(1,0,0)):"Y"===t?e.push(new THREE.Vector3(0,0,0),new THREE.Vector3(0,1,0)):"Z"===t&&e.push(new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,1)),(new THREE.BufferGeometry).setFromPoints(e)};class a extends THREE.Object3D{constructor(t){super();var e=this;this.init=function(){this.handles=new THREE.Object3D,this.pickers=new THREE.Object3D,this.planes=new THREE.Object3D,this.highlights=new THREE.Object3D,this.hemiPicker=new THREE.Object3D,this.subPickers=new THREE.Object3D,this.add(this.handles),this.add(this.pickers),this.add(this.planes),this.add(this.highlights),this.add(this.hemiPicker),this.add(this.subPickers);var t=new THREE.PlaneBufferGeometry(50,50,2,2),e=new THREE.MeshBasicMaterial({wireframe:!0});e.side=THREE.DoubleSide;var n={XY:new THREE.Mesh(t,e),YZ:new THREE.Mesh(t,e),XZ:new THREE.Mesh(t,e),XYZE:new THREE.Mesh(t,e)};for(var i in this.activePlane=n.XYZE,n.YZ.rotation.set(0,Math.PI/2,0),n.XZ.rotation.set(-Math.PI/2,0,0),n)n[i].name=i,this.planes.add(n[i]),this.planes[i]=n[i],n[i].visible=!1;this.setupGizmos(),this.activeMode="",this.traverse((function(t){if(t instanceof THREE.Mesh){t.updateMatrix();const e=t.geometry.clone();e.applyMatrix4(t.matrix),t.geometry=e,t.position.set(0,0,0),t.rotation.set(0,0,0),t.scale.set(1,1,1)}}))},this.hide=function(){this.traverse((function(t){t.visible=!1}))},this.show=function(){this.traverse((function(t){t.visible=!0,t.parent!=e.pickers&&t.parent!=e.hemiPicker||(t.visible=!1),t.parent==e.planes&&(t.visible=!1)})),this.activePlane.visible=!1},this.highlight=function(t){this.traverse((function(e){e.material&&e.material.highlight&&(e.name==t?e.material.highlight(!0):e.material.highlight(!1))}))},this.setupGizmos=function(){var e=function(t,e){for(var n in t)for(var i=t[n].length;i--;){var o=t[n][i][0],a=t[n][i][1],s=t[n][i][2],r=t[n][i][3];o.name=n,a&&o.position.set(a[0],a[1],a[2]),s&&o.rotation.set(s[0],s[1],s[2]),r&&(o.visble=r),e.add(o)}};if(this.setHandlePickerGizmos(),t)for(var n=Object.keys(this.handleGizmos),i=0;iMath.abs(e.z)&&(this.activePlane=this.planes.XZ)),"Y"==t&&(this.activePlane=this.planes.XY,!n&&Math.abs(e.x)>Math.abs(e.z)&&(this.activePlane=this.planes.YZ)),"Z"==t&&(this.activePlane=this.planes.XZ,!n&&Math.abs(e.x)>Math.abs(e.y)&&(this.activePlane=this.planes.YZ)),"XYZ"==t&&(this.activePlane=this.planes.XYZE),"XY"==t&&(this.activePlane=this.planes.XY),"YZ"==t&&(this.activePlane=this.planes.YZ),"XZ"==t&&(this.activePlane=this.planes.XZ),this.hide(),this.show()},this.init()}},THREE.TransformGizmoRotate=class extends a{constructor(i){super(i),this.setHandlePickerGizmos=function(){this.handleGizmos={RX:[[new THREE.Line(n(1,"x",.5),new e({color:16711680}))]],RY:[[new THREE.Line(n(1,"y",.5),new e({color:65280}))]],RZ:[[new THREE.Line(n(1,"z",.5),new e({color:255}))]],RE:[[new THREE.Line(n(1.25,"z",1),new e({color:65535}))]],RXYZE:[[new THREE.Line(n(1,"z",1),new e({color:16711935}))]]},this.pickerGizmos={RX:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,4,12,Math.PI),new t({color:16711680,opacity:.25})),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],RY:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,4,12,Math.PI),new t({color:65280,opacity:.25})),[0,0,0],[Math.PI/2,0,0]]],RZ:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,4,12,Math.PI),new t({color:255,opacity:.25})),[0,0,0],[0,0,-Math.PI/2]]],RE:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1.25,.12,2,24),new t({color:65535,opacity:.25}))]],RXYZE:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,2,24),new t({color:16711935,opacity:.25}))]]}},this.setActivePlane=function(t){"RE"==t&&(this.activePlane=this.planes.XYZE),"RX"==t&&(this.activePlane=this.planes.YZ),"RY"==t&&(this.activePlane=this.planes.XZ),"RZ"==t&&(this.activePlane=this.planes.XY),this.hide(),this.show()},this.update=function(t,e){THREE.TransformGizmo.prototype.update.apply(this,arguments);var n=new THREE.Matrix4,i=new THREE.Euler(0,0,1),o=new THREE.Quaternion,a=new THREE.Vector3(1,0,0),s=new THREE.Vector3(0,1,0),r=new THREE.Vector3(0,0,1),c=new THREE.Quaternion,l=new THREE.Quaternion,h=new THREE.Quaternion,u=e.clone();i.copy(this.planes.XY.rotation),o.setFromEuler(i),n.makeRotationFromQuaternion(o).invert(),u.applyMatrix4(n),this.traverse((function(t){o.setFromEuler(i),"RX"==t.name&&(c.setFromAxisAngle(a,Math.atan2(-u.y,u.z)),o.multiplyQuaternions(o,c),t.quaternion.copy(o)),"RY"==t.name&&(l.setFromAxisAngle(s,Math.atan2(u.x,u.z)),o.multiplyQuaternions(o,l),t.quaternion.copy(o)),"RZ"==t.name&&(h.setFromAxisAngle(r,Math.atan2(u.y,u.x)),o.multiplyQuaternions(o,h),t.quaternion.copy(o))}))},this.init()}},THREE.TransformGizmoTranslateRotate=class extends a{constructor(e){super(e);var n=this;this.setHandlePickerGizmos=function(){var e=i(0,.05,.2,12,1,!1),n=.15;this.handleGizmos={Z:[[new THREE.Mesh(e,new t({color:16777215})),[0,0,.25],[Math.PI/2,0,0]],[new THREE.Mesh(new THREE.CylinderBufferGeometry(.015,.015,.6,4,1,!1),new t({color:16777215})),[0,0,.5],[Math.PI/2,0,0]]],RX:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.015,12,60,.3*Math.PI),new t({color:16711680})),[0,0,0],[n*Math.PI,-Math.PI/2,0]],[new THREE.Mesh(new THREE.CylinderBufferGeometry(.05,.05,.015,60,1,!1),new t({color:16711680})),[0,0,1],[Math.PI/2,0,0]]],RY:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.015,12,60,.3*Math.PI),new t({color:255})),[0,0,0],[Math.PI/2,0,.35*Math.PI]],[new THREE.Mesh(new THREE.CylinderBufferGeometry(.05,.05,.01,60,1,!1),new t({color:255})),[0,0,1]]]},this.pickerGizmos={Z:[[new THREE.Mesh(new THREE.CylinderBufferGeometry(.12,.12,.65,4,1,!1),new t({color:255,opacity:.25})),[0,0,.5],[Math.PI/2,0,0]]],RX:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,4,12,.3*Math.PI),new t({color:16711680,opacity:.25})),[0,0,0],[n*Math.PI,-Math.PI/2,0]]],RY:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,4,12,.3*Math.PI),new t({color:255,opacity:.25})),[0,0,0],[Math.PI/2,0,.35*Math.PI]]]},this.subPickerGizmos={Z:[[new THREE.Mesh(new THREE.CylinderBufferGeometry(.12,.12,.65,4,1,!1),new t({color:255,opacity:.25})),[0,0,.5],[Math.PI/2,0,0]]]},this.highlightGizmos={Z:[],RX:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.02,12,60,2*Math.PI),new t({color:16711680,opacity:1})),[0,0,0],[0,-Math.PI/2,-Math.PI/2],!1]],RY:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.02,12,60,2*Math.PI),new t({color:255,opacity:1})),[0,0,0],[Math.PI/2,0,0],!1]]},this.hemiPickerGizmos={XYZ:[[new THREE.Mesh(new THREE.SphereBufferGeometry(1.2,8,8,0,Math.PI),new t({color:255})),null,null,!1]]}},this.setActivePlane=function(t,e,n){if("translate"==this.activeMode){var i=new THREE.Matrix4;e.applyMatrix4(i.extractRotation(this.planes.XY.matrixWorld).invert()),"X"==t&&(this.activePlane=this.planes.XY,!n&&Math.abs(e.y)>Math.abs(e.z)&&(this.activePlane=this.planes.XZ)),"Y"==t&&(this.activePlane=this.planes.XY,!n&&Math.abs(e.x)>Math.abs(e.z)&&(this.activePlane=this.planes.YZ)),"Z"==t&&(this.activePlane=this.planes.XZ,!n&&Math.abs(e.x)>Math.abs(e.y)&&(this.activePlane=this.planes.YZ))}else"rotate"==this.activeMode&&("RX"==t&&(this.activePlane=this.planes.YZ),"RY"==t&&(this.activePlane=this.planes.XZ),"RZ"==t&&(this.activePlane=this.planes.XY));this.hide(),this.show()},this.update=function(t,e){if("translate"==this.activeMode)THREE.TransformGizmo.prototype.update.apply(this,arguments);else if("rotate"==this.activeMode){THREE.TransformGizmo.prototype.update.apply(this,arguments);var n=new THREE.Matrix4,i=new THREE.Euler(0,0,1),o=new THREE.Quaternion,a=new THREE.Vector3(1,0,0),s=new THREE.Vector3(0,1,0),r=new THREE.Vector3(0,0,1),c=new THREE.Quaternion,l=new THREE.Quaternion,h=new THREE.Quaternion,u=e.clone();i.copy(this.planes.XY.rotation),o.setFromEuler(i),n.makeRotationFromQuaternion(o).invert(),u.applyMatrix4(n),this.traverse((function(t){o.setFromEuler(i),"RX"==t.name&&(c.setFromAxisAngle(a,Math.atan2(-u.y,u.z)),o.multiplyQuaternions(o,c),t.quaternion.copy(o)),"RY"==t.name&&(l.setFromAxisAngle(s,Math.atan2(u.x,u.z)),o.multiplyQuaternions(o,l),t.quaternion.copy(o)),"RZ"==t.name&&(h.setFromAxisAngle(r,Math.atan2(u.y,u.x)),o.multiplyQuaternions(o,h),t.quaternion.copy(o))}))}},this.show=function(){this.traverse((function(t){(null==n.parent||n.parent.useAllPickers||t.parent!=n.handles)&&(t.visible=!0),t.material&&(t.material.opacity=t.material.oldOpacity),t.parent!=n.pickers&&t.parent!=n.hemiPicker&&t.parent!=n.subPickers||(t.visible=!1),t.parent!=n.planes&&t.parent!=n.highlights||(t.visible=!1)})),this.activePlane.visible=!1},this.highlight=function(t){this.traverse((function(e){e.material&&e.material.highlight&&(e.name==t?(e.parent!=n.highlights&&e.parent!=n.handles||(e.visible=!0),e.material.highlight(!0)):(e.material.highlight(!1),e.material.opacity=.1))}))},this.init()}},THREE.TransformGizmoScale=class extends a{constructor(n){super(n),this.setHandlePickerGizmos=function(){var n=i(.125,.125,.125),a=o("X"),s=o("Y"),r=o("Z");this.handleGizmos={X:[[new THREE.Mesh(n,new t({color:16711680})),[.5,0,0],[0,0,-Math.PI/2]],[new THREE.Line(a,new e({color:16711680}))]],Y:[[new THREE.Mesh(n,new t({color:65280})),[0,.5,0]],[new THREE.Line(s,new e({color:65280}))]],Z:[[new THREE.Mesh(n,new t({color:255})),[0,0,.5],[Math.PI/2,0,0]],[new THREE.Line(r,new e({color:255}))]],XYZ:[[new THREE.Mesh(new THREE.BoxBufferGeometry(.125,.125,.125),new t({color:16777215,opacity:.25}))]]},this.pickerGizmos={X:[[new THREE.Mesh(new THREE.CylinderBufferGeometry(.2,0,1,4,1,!1),new t({color:16711680,opacity:.25})),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new THREE.Mesh(new THREE.CylinderBufferGeometry(.2,0,1,4,1,!1),new t({color:65280,opacity:.25})),[0,.6,0]]],Z:[[new THREE.Mesh(new THREE.CylinderBufferGeometry(.2,0,1,4,1,!1),new t({color:255,opacity:.25})),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new THREE.Mesh(new THREE.BoxBufferGeometry(.4,.4,.4),new t({color:16777215,opacity:.25}))]]}},this.setActivePlane=function(t,e,n){var i=new THREE.Matrix4;e.applyMatrix4(i.extractRotation(this.planes.XY.matrixWorld).invert()),"X"==t&&(this.activePlane=this.planes.XY,!n&&Math.abs(e.y)>Math.abs(e.z)&&(this.activePlane=this.planes.XZ)),"Y"==t&&(this.activePlane=this.planes.XY,!n&&Math.abs(e.x)>Math.abs(e.z)&&(this.activePlane=this.planes.YZ)),"Z"==t&&(this.activePlane=this.planes.XZ,!n&&Math.abs(e.x)>Math.abs(e.y)&&(this.activePlane=this.planes.YZ)),"XYZ"==t&&(this.activePlane=this.planes.XYZE),this.hide(),this.show()},this.init()}};const s=new THREE.Vector3,r=new THREE.Vector3,c=new THREE.Raycaster;class l extends THREE.Object3D{constructor(t,e,n,i){switch(super(),e=void 0!==e?e:document,this.gizmo={},n){case"translate":this.gizmo[n]=new THREE.TransformGizmoTranslate(i);break;case"rotate":this.gizmo[n]=new THREE.TransformGizmoRotate(i);break;case"transrotate":this.gizmo[n]=new THREE.TransformGizmoTranslateRotate(i);break;case"scale":this.gizmo[n]=new THREE.TransformGizmoScale(i)}if(this.add(this.gizmo[n]),this.gizmo[n].hide(),this.object=void 0,this.snap=null,this.snapDelta=0,this.space="world",this.size=1,this.axis=null,this.useAllPickers=!0,this.unitX=new THREE.Vector3(1,0,0),this.unitY=new THREE.Vector3(0,1,0),this.unitZ=new THREE.Vector3(0,0,1),this.normal=new THREE.Vector3(0,0,1),"transrotate"===n){var o,a=[new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,1)],s=(new THREE.BufferGeometry).setFromPoints(a),r=new THREE.LineBasicMaterial({color:0,linewidth:2,depthTest:!1});this.startLine=new THREE.Line(s,r),a=[new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,1)],s=(new THREE.BufferGeometry).setFromPoints(a),r=new THREE.LineBasicMaterial({color:16770563,linewidth:2,depthTest:!1}),this.endLine=new THREE.Line(s,r),a=[new THREE.Vector3(0,-1,0),new THREE.Vector3(0,1,0)],s=(new THREE.BufferGeometry).setFromPoints(a),r=new THREE.LineDashedMaterial({color:0,linewidth:1,depthTest:!1}),this.centerLine=new THREE.Line(s,r),(o=THREE.ImageUtils.loadTexture(Autodesk.Viewing.Private.getResourceUrl("res/textures/centerMarker_X.png"))).magFilter=o.minFilter=THREE.NearestFilter,s=new THREE.CircleBufferGeometry(.1,32),r=new THREE.MeshBasicMaterial({opacity:1,side:THREE.DoubleSide,transparent:!0,map:o}),this.centerMark=new THREE.Mesh(s,r),this.centerMark.rotation.set(Math.PI/2,0,0),this.ticks={},(o=THREE.ImageUtils.loadTexture(Autodesk.Viewing.Private.getResourceUrl("res/textures/cardinalPoint.png"))).magFilter=o.minFilter=THREE.NearestFilter,r=new THREE.MeshBasicMaterial({depthTest:!1,opacity:1,transparent:!0,side:THREE.DoubleSide,map:o});var c=.25;this.ticks.RX=new THREE.Object3D,s=new THREE.PlaneBufferGeometry(.12,c);var l=new THREE.Mesh(s,r);l.position.set(0,0,-1.275),l.rotation.set(Math.PI/2,Math.PI/2,0),this.ticks.RX.add(l),(l=l.clone()).position.set(0,1.275,0),l.rotation.set(0,Math.PI/2,0),this.ticks.RX.add(l),(l=l.clone()).position.set(0,0,1.275),l.rotation.set(0,Math.PI/2,Math.PI/2),this.ticks.RX.add(l),(l=l.clone()).position.set(0,-1.275,0),l.rotation.set(0,Math.PI/2,0),this.ticks.RX.add(l),this.ticks.RY=new THREE.Object3D,(l=l.clone()).position.set(0,0,-1.275),l.rotation.set(Math.PI/2,0,0),this.ticks.RY.add(l),(l=l.clone()).position.set(-1.275,0,0),l.rotation.set(Math.PI/2,0,Math.PI/2),this.ticks.RY.add(l),(l=l.clone()).position.set(0,0,1.275),l.rotation.set(Math.PI/2,0,0),this.ticks.RY.add(l),(l=l.clone()).position.set(1.275,0,0),l.rotation.set(Math.PI/2,0,Math.PI/2),this.ticks.RY.add(l)}var h=this,u=!1,p=n,E={type:"change"},d={type:"mouseDown"},m={type:"mouseUp",mode:p},f={type:"objectChange"},v=new THREE.Vector3,T=new THREE.Vector3,w=new THREE.Vector3,y=new THREE.Vector3,g=1;this.clientScale=1;var R=new THREE.Matrix4,x=new THREE.Vector3,M=new THREE.Matrix4,H=new THREE.Vector3,b=new THREE.Quaternion,A=new THREE.Vector3,P=new THREE.Vector3,S=new THREE.Vector3,C=new THREE.Quaternion,V=new THREE.Quaternion,B=new THREE.Quaternion,k=new THREE.Quaternion,z=new THREE.Quaternion,I=new THREE.Vector3,O=new THREE.Vector3,X=new THREE.Matrix4,Y=new THREE.Matrix4,G=new THREE.Vector3,_=new THREE.Vector3,L=new THREE.Euler,j=new THREE.Matrix4,N=new THREE.Vector3;function Z(e,n){return THREE.TransformControls.intersectObjects(e.canvasX,e.canvasY,n,t,!0)}new THREE.Euler,this.attach=function(t){h.object=t,this.gizmo[p].show(),h.update(),h.updateUnitVectors()},this.detach=function(t){h.object=void 0,this.axis=null,this.gizmo[p].hide()},this.setMode=function(t){"scale"==(p=t||p)&&(h.space="local"),this.gizmo[p].show(),this.update(),h.dispatchEvent(E)},this.getPicker=function(){return h.gizmo[p].hemiPicker.children},this.setPosition=function(t){this.object.position.copy(t),this.update()},this.setNormal=function(t){b.setFromUnitVectors(this.normal,t),this.unitX.applyQuaternion(b),this.unitY.applyQuaternion(b),this.unitZ.applyQuaternion(b),this.normal.copy(t),this.object&&this.object.quaternion.multiply(b),this.update()},this.setRotation=function(t){this.object&&(this.object.quaternion.setFromRotationMatrix(t),this.update(),this.updateUnitVectors())},this.setSnap=function(t,e){h.snap=t,h.snapDelta=e},this.setSize=function(t){h.size=t,this.update(),h.dispatchEvent(E)},this.setSpace=function(t){h.space=t,this.update(),h.dispatchEvent(E)},this.update=function(n){if(void 0!==h.object){var i;if(h.object.updateMatrixWorld(),_.setFromMatrixPosition(h.object.matrixWorld),L.setFromRotationMatrix(M.extractRotation(h.object.matrixWorld)),t.updateMatrixWorld(),N.setFromMatrixPosition(t.matrixWorld),this.position.copy(_),this.gizmoOffset&&this.position.add(this.gizmoOffset),this.updateMatrixWorld(),this.quaternion.setFromEuler(L),this.normal.set(0,0,1),this.normal.applyEuler(L),t.isPerspective){var o=this.position.distanceTo(N);i=2*Math.tan(t.fov*Math.PI/360)*o}else i=t.top-t.bottom;var a=e.getBoundingClientRect();g=100*this.clientScale*i/a.height,this.scale.set(g,g,g),n&&this.gizmo[p].highlight(h.axis)}},this.setGizmoOffset=function(t){this.gizmoOffset=t||new THREE.Vector3(0,0,0),this.update()},this.updateUnitVectors=function(){this.unitX.set(1,0,0),this.unitY.set(0,1,0),this.unitZ.set(0,0,1),this.unitX.applyEuler(L),this.unitY.applyEuler(L),this.unitZ.applyEuler(L)},this.showRotationGizmos=function(t){for(var e=this.gizmo[p].handles.children,n=0;n!t.getDoNotCut())),m=[];const f=new THREE.Matrix4;D.start(p,(function(c,p,v,T){var w=v.getFragmentList();if(w.isFragVisible(c)&&(w.getWorldBounds(c,u),e.xBoxPlane(t,u))){const n=w.getGeometry(c),i=w.getMaterial(c);n&&!n.is2d&&!n.isLines&&i.cutplanes&&(h=i,w.getWorldMatrix(c,f),e.xMeshPlane(t,{geometry:n,matrixWorld:f,fragId:c},m))}if(T){if(m.length){var y=new THREE.Box3;e.convertToPlaneCoords(a,m,y);var g=new o.VertexBufferBuilder(!1,8*m.length),R=function(t){return t&&t.color||new THREE.Color(16777215)}(h),x=0|.25*R.r*255.5,M=0|.25*R.g*255.5,H=4278190080|(0|.25*R.b*255.5)<<16|M<<8|x,b=new e.EdgeSet(m,y,1e-6*y.getSize(new THREE.Vector3).length());b.snapEdges(),b.sanitizeEdges(),b.stitchContours();var A=b.triangulate({skipOpenContour:!0});if(A){for(let t=0;t{r.invalidate(!0,!0)}))}var W="Autodesk.Viewing.Extension.Section.SectionTool";r.setCutPlaneSetFor2DRendering(W);var U=[];function Q(t){function e(e){e&&e.traverse((function(e){e instanceof THREE.Mesh&&e.material&&(t?r.matman().adjustMaterialMRTSetting(e.material):e.material.needsUpdate=!0)}))}e(r.scene.getObjectByName("section3D")),e(r.sceneAfter.getObjectByName("section2D"))}function q(t,n){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;var o,a=(new THREE.Quaternion).setFromUnitVectors(new THREE.Vector3(0,0,1),t.normal);o=new THREE.PlaneBufferGeometry(i,i);var s=new THREE.MeshBasicMaterial({opacity:0,color:C,side:THREE.DoubleSide,depthTest:!1,depthWrite:!1,transparent:!0}),c=new e(o,s,t);const l=t.projectPoint(n,new THREE.Vector3);c.position.copy(l),c.quaternion.multiply(a);var h=r.currentLightPreset();h=Math.max(0,h);var u=Autodesk.Viewing.Private.LightPresets[h].bgColorGradient,p="rgb("+(255-u[0])+","+(255-u[1])+","+(255-u[2])+")",E=new THREE.LineBasicMaterial({color:p,linewidth:1,depthTest:!1,depthWrite:!1,transparent:!0}),d=c.geometry.getAttribute("position");const m=[];for(var f=0;f0){var i=n.matrixWorld.clone().invert();const t=new THREE.Vector3;e=n.geometry.getAttribute("position");for(let a=0;a0&&void 0!==arguments[0])||arguments[0];K((function(t){t instanceof e&&t.update()})),1===R.length&&F((new THREE.Plane).setComponents(R[0].x,R[0].y,R[0].z,R[0].w)),r.setCutPlaneSet(W,R,t)}function tt(t){for(var e=0;e0&&(1===R.length&&F((new THREE.Plane).setComponents(R[0].x,R[0].y,R[0].z,R[0].w)),r.setCutPlaneSet(W,R)),tt(t)}function nt(t,e){t.attach(e),t.setPosition(e.position),t.visible=!0}function it(t){if(!a||!t)return!1;var e=function(t){var e=new THREE.Vector3,n=t.geometry;return n.computeBoundingBox(),e.x=(n.boundingBox.max.x+n.boundingBox.min.x)/2,e.y=(n.boundingBox.max.y+n.boundingBox.min.y)/2,e.z=(n.boundingBox.max.z+n.boundingBox.min.z)/2,t.localToWorld(e),e}(t).sub(t.getWorldPosition(new THREE.Vector3));return a.setGizmoOffset(e),!0}function ot(t,e){let n=function(t,e){return[new THREE.Vector3(t.min.x,t.min.y,t.min.z).applyMatrix4(e),new THREE.Vector3(t.min.x,t.min.y,t.max.z).applyMatrix4(e),new THREE.Vector3(t.min.x,t.max.y,t.min.z).applyMatrix4(e),new THREE.Vector3(t.min.x,t.max.y,t.max.z).applyMatrix4(e),new THREE.Vector3(t.max.x,t.min.y,t.min.z).applyMatrix4(e),new THREE.Vector3(t.max.x,t.min.y,t.max.z).applyMatrix4(e),new THREE.Vector3(t.max.x,t.max.y,t.min.z).applyMatrix4(e),new THREE.Vector3(t.max.x,t.max.y,t.max.z).applyMatrix4(e)]}(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:new THREE.Matrix4),i=Number.MIN_VALUE;for(let t=0;ti&&(i=o)}return i}this.setPlaneLocal=function(t){let e=t.clone().applyMatrix3(z).normalize();this.setPlane(e,void 0,!0,!0)},this.setPlane=function(t,e){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];var o=r.getVisibleBounds(),s=o.getCenter(new THREE.Vector3),c=new THREE.Group;c.applyMatrix4(B),c.updateMatrixWorld(),e||(e=this.getSectionDistance(t)),i&&function(t){return r.api.navigation.getEyeVector().dot(t)>0}(t)&&(t.negate(),e=-e),e=void 0!==e?e:-1*s.dot(t);var h=q(new THREE.Plane(t.clone().applyMatrix3(I).normalize(),e),s.clone().applyMatrix4(k),2*o.getBoundingSphere(new THREE.Sphere).radius);c.add(h),h.update(),R.push(h.planeVec),g.push(c),r.addOverlay(H,c),a&&(nt(a,h),h.material.opacity=0,it(h),a.showRotationGizmos(!0),x=a.getPicker()),$(n),l&&L()};var at,st,rt,ct,lt=(at=new THREE.Matrix3,st=new THREE.Vector3,rt=new THREE.Vector3,ct=new THREE.Vector3,function(t,e,n,i){at.set(t.normal.x,t.normal.y,t.normal.z,e.normal.x,e.normal.y,e.normal.z,n.normal.x,n.normal.y,n.normal.z);var o=at.determinant();return 0===o?null:(st.crossVectors(e.normal,n.normal).multiplyScalar(-t.constant),rt.crossVectors(n.normal,t.normal).multiplyScalar(-e.constant),ct.crossVectors(t.normal,e.normal).multiplyScalar(-n.constant),(i||new THREE.Vector3).copy(st).add(rt).add(ct).divideScalar(o))}),ht=function(t,e,n){return THREE.TransformControls.intersectObjects(t.canvasX,t.canvasY,e,r.camera,n)};function ut(){var t=r.scene.getObjectByName("section3D");t&&r.scene.remove(t);var e=r.sceneAfter.getObjectByName("section2D");e&&r.sceneAfter.remove(e)}this.isActive=function(){return l},this.getSectionDistance=function(t){var e=r.api.navigation.getEyeVector(),n=r.rayIntersect(new THREE.Ray(r.camera.position,e));return n&&n.intersectPoint&&-1*n.intersectPoint.dot(t)},this.setViewerSection=function(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];var e;this.clearSection(t);var n=r.getCutPlaneSet("__set_view");if(1===n.length){a.clientScale=1;var i=n[0];e=new THREE.Vector3(i.x,i.y,i.z);var o=i.w;this.setPlane(e,o,t),M="SET_VIEW_PLANE",r.setCutPlaneSet("__set_view",void 0,t)}},this.setSection=function(t){var e;this.clearSection(),a.clientScale=1;var n=r.getCutPlaneSet("__set_view");switch(1===n.length&&"BOX"!==t&&"OBJ_SET_VIEW_PLANE"!==t&&(t="SET_VIEW_PLANE"),t){case"X":e=new THREE.Vector3(1,0,0),this.setPlaneLocal(e);break;case"Y":e=new THREE.Vector3(0,1,0),this.setPlaneLocal(e);break;case"Z":e=new THREE.Vector3(0,0,1),this.setPlaneLocal(e);break;case"OBJ_SET_VIEW_PLANE":case"SET_VIEW_PLANE":var i=n[0];e=new THREE.Vector3(i.x,i.y,i.z),this.setPlane(e,i.w);break;case"OBJ_BOX":case"BOX":!function(t){var e,n,i=[new THREE.Vector3(1,0,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,0,1),new THREE.Vector3(-1,0,0),new THREE.Vector3(0,-1,0),new THREE.Vector3(0,0,-1)],o=[[[1,2],[1,5],[2,4],[4,5]],[[3,5],[0,5],[2,3],[0,2]],[[1,3],[0,1],[3,4],[0,4]],[[1,5],[1,2],[4,5],[2,4]],[[2,3],[0,2],[3,5],[0,5]],[[0,1],[3,1],[0,4],[3,4]]],c=new THREE.Group,l=r.getVisibleBounds(),h=new THREE.Box3(l.min,l.getCenter(new THREE.Vector3)),u=h.getCenter(new THREE.Vector3),p=[],E=[],d=!1;if(t&&6===t.length){for(let e=0;e0&&void 0!==arguments[0])||arguments[0];for(a&&a.detach(),s&&s.detach();R.length>0;)R.pop();for(;g.length>0;){var e=g.pop();r.removeOverlay(H,e)}D.start(null),ut(),r.setCutPlaneSet(W,null,t)},this.isPlaneOn=function(){return p},this.showPlane=function(t){tt(t)},this.attachControl=function(t){a&&s&&(t?(nt(a,g[0].children[0]),a.highlight(),"BOX"===M&&nt(s,g[0])):(a.detach(),s.detach()))},this.resetSection=function(){this.setSection(M)},this.getNames=function(){return c},this.getName=function(){return c[0]},this.register=function(){},this.deregister=function(){this.clearSection(),A&&(r.removeOverlay(H,a),a.removeEventListener("change",_),a=null,r.removeOverlay(H,s),s.removeEventListener("change",_),s.removeEventListener("change",j),s=null,r.removeOverlayScene(H),n.removeEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,L),n.removeEventListener(Autodesk.Viewing.ISOLATE_EVENT,N),n.removeEventListener(Autodesk.Viewing.HIDE_EVENT,N),n.removeEventListener(Autodesk.Viewing.SHOW_EVENT,N),n.removeEventListener(Autodesk.Viewing.MODEL_TRANSFORM_CHANGED_EVENT,N),n.removeEventListener(Autodesk.Viewing.FRAGMENTS_LOADED_EVENT,N),n.removeEventListener(Autodesk.Viewing.FRAGMENTS_UNLOADED_EVENT,N),n.removeEventListener(Autodesk.Viewing.SCENE_UPDATED_EVENT,Z),A=!1)},this.getPriority=function(){return 70},this.activate=function(){X(Y()),function(){if(A)return r.addOverlay(H,a),void r.addOverlay(H,s);(a=new THREE.TransformControls(r.camera,r.canvas,"transrotate")).addEventListener("change",_),a.setSnap(Math.PI/2,Math.PI/36),(s=new THREE.TransformControls(r.camera,r.canvas,"translate")).addEventListener("change",_),s.addEventListener("change",j),void 0===r.overlayScenes[H]&&r.createOverlayScene(H),r.addOverlay(H,a),r.addOverlay(H,s),n.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,L),n.addEventListener(Autodesk.Viewing.ISOLATE_EVENT,N),n.addEventListener(Autodesk.Viewing.HIDE_EVENT,N),n.addEventListener(Autodesk.Viewing.SHOW_EVENT,N),n.addEventListener(Autodesk.Viewing.MODEL_TRANSFORM_CHANGED_EVENT,N),n.addEventListener(Autodesk.Viewing.FRAGMENTS_LOADED_EVENT,N),n.addEventListener(Autodesk.Viewing.FRAGMENTS_UNLOADED_EVENT,N),n.addEventListener(Autodesk.Viewing.SCENE_UPDATED_EVENT,Z),A=!0}(),l=!0,h=!1,P=!0,R=R||[],et(!0)},this.deactivate=function(){if(l=!1,h=!1,this.keepCutPlanesOnDeactivate){r.removeOverlay(H,a),r.removeOverlay(H,s);for(let t=0;t1?.25:0,(null===(i=g[0])||void 0===i?void 0:i.children.length)>1&&t!==n.object&&it(n.object),_(),j()}return!1},this.handleDoubleClick=function(){return!1},this.handleSingleTap=function(t){return this.handleSingleClick(t,0)},this.handleDoubleTap=function(){return!1},this.handleKeyDown=function(){return!1},this.handleKeyUp=function(){return!1},this.handleWheelInput=function(){return!1},this.handleButtonDown=function(t){return h=!0,!!s.onPointerDown(t)||a.onPointerDown(t)},this.handleButtonUp=function(t){return h=!1,u&&(u=!1,this.recomputePivot()),!!s.onPointerUp(t)||a.onPointerUp(t)},this.handleMouseMove=function(t){if(h){if(s.onPointerMove(t))return u=!0,$(),a.update(),G("Canvas","Box","translate"),!0;if(a.onPointerMove(t)){if(u=!0,$(),J(),M.includes("BOX"))G("Canvas","Box","transform");else{const t=-1!=a.axis.search("R")?"rotate":"translate";G("Canvas","Plane",t)}return!0}}if(s.visible=void 0!==s.object,"touch"!==t.pointerType){var e,n=t,i=ht(n,null===(e=g[0])||void 0===e?void 0:e.children);i&&(P=!1);var o=!!(P||i||ht(n,x,!0));a.visible=o,s.visible=s.visible&&o,tt(o)}return!!s.onPointerHover(t)||a.onPointerHover(t)},this.handleGesture=function(t){switch(t.type){case"dragstart":return b="drag",this.handleButtonDown(t,0);case"dragmove":return"drag"===b&&this.handleMouseMove(t);case"dragend":return"drag"===b&&(b=null,this.handleButtonUp(t,0))}return!1},this.handleBlur=function(){return!1},this.handleResize=function(){},this.handlePressHold=function(){return!1},this.recomputePivot=function(){var t=this.getSectionBoxValues(!0);if(t){var e=t.sectionBox;r.api.navigation.setPivotPoint(new THREE.Vector3(e[0]+.5*(e[3]-e[0]),e[1]+.5*(e[4]-e[1]),e[2]+.5*(e[5]-e[2])))}},this.getSectionBoxValues=function(t){var e=g[0];if(!e)return null;var n=e.children;if(n.length<6)return null;var i=n[0].position.x,o=n[1].position.y,a=n[2].position.z,s=n[3].position.x,c=n[4].position.y,l=n[5].position.z,h={x:0,y:0,z:0};return t||(h=r.model.getData().globalOffset||h),{sectionBox:[Math.min(s,i)+h.x,Math.min(o,c)+h.y,Math.min(a,l)+h.z,Math.max(s,i)+h.x,Math.max(o,c)+h.y,Math.max(a,l)+h.z],sectionBoxTransform:(new THREE.Matrix4).identity().toArray()}},this.getSectionPlaneValues=function(t){var e=g[0];if(!e)return null;var n=e.children;if(1!==n.length)return null;var i={x:0,y:0,z:0};t||(i=r.model.getData().globalOffset||i);var o=n[0].plane,a=o.constant-THREE.Vector3.prototype.dot.call(i,o.normal);return{sectionPlane:[o.normal.x,o.normal.y,o.normal.z,a]}},this.getSectionPlaneSet=function(){return r.getCutPlaneSet(W)},this.getSectionPlanes=function(){const t=r.getCutPlaneSet("__set_view");return t.length>0?t:r.getCutPlaneSet(W)},this.notifyCutplanesChanged=function(){var t=U.length;U.length=0;for(var e=r.getCutPlaneSets(),n=0;n2&&void 0!==arguments[2])||arguments[2];if(!t||!e)return!1;const s="OBJ_SET_VIEW_PLANE",c=-1*e.dot(t),l=new THREE.Plane(t,c);M=s;const h=[new THREE.Vector4(l.normal.x,l.normal.y,l.normal.z,l.constant)];r.setCutPlaneSet("__set_view",h),this.setSection(s),null===(n=a)||void 0===n||n.showRotationGizmos(o);const u=e.clone().sub(g[0].children[0].getWorldPosition(O));return null===(i=a)||void 0===i||i.setGizmoOffset(u),!0}};var s=n(5072),r=n.n(s),c=n(7825),l=n.n(c),h=n(7659),u=n.n(h),p=n(5056),E=n.n(p),d=n(540),m=n.n(d),f=n(1113),v=n.n(f),T=n(3412),w={};w.styleTagTransform=v(),w.setAttributes=E(),w.insert=u().bind(null,"head"),w.domAPI=l(),w.insertStyleElement=m();r()(T.A,w);T.A&&T.A.locals&&T.A.locals;const y=Autodesk.Viewing.Private,g=Autodesk.Viewing.UI,R=y.analytics;var x=function(t,e){Autodesk.Viewing.Extension.call(this,t,e),this.viewer=t,this.name="section",this.modes=["x","y","z","box"],this.buttons={},this.onViewerSetView=this.onViewerSetView.bind(this),this._onCutPlanesChanged=this._onCutPlanesChanged.bind(this),this._onShowAll=this._onShowAll.bind(this)};x.prototype=Object.create(Autodesk.Viewing.Extension.prototype),x.prototype.constructor=x;var M=x.prototype;M.load=function(){var t=this,e=this.viewer;this.tool=new a(e,{tintColor:{r:1,g:1,b:0},tintIntensity:.2}),e.toolController.registerTool(this.tool,this.setActive.bind(this)),this.sectionStyle=null,this.supportedStyles=["X","Y","Z","BOX"],this.displaySectionHatches=this.displaySectionHatches.bind(this),this.viewer.prefs.addListeners(y.Prefs3D.DISPLAY_SECTION_HATCHES,this.displaySectionHatches),e.addEventListener(Autodesk.Viewing.SET_VIEW_EVENT,this.onViewerSetView),e.addEventListener(Autodesk.Viewing.CUTPLANES_CHANGE_EVENT,this._onCutPlanesChanged),e.addEventListener(Autodesk.Viewing.SHOW_ALL_EVENT,this._onShowAll),e.addEventListener(Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT,t.tool.notifyRenderOptionChanged),this.HOTKEYS_ID="Autodesk.Section.Hotkeys";var n=[{keycodes:[Autodesk.Viewing.KeyCode.ESCAPE],onRelease:function(){if(0===t.viewer.getAggregateSelection().length)return t.deactivate()}}];return e.getHotkeyManager().pushHotkeys(this.HOTKEYS_ID,n),this.viewer.registerContextMenuCallback("Autodesk.Section",((t,e)=>{!function(t,e,n){var i;if(!n.hasSelected)return;const o=t.viewer,a=o.getAggregateSelection();if(1===a.length&&a[0].model.is2d())return;const s=o.impl.selector.getSelectionBounds(),r={title:"Section",target:[]};r.target.push({title:"Section Box",target:()=>{t.setSectionBox(s),R.track("viewer.section",{from:"Contextual",type:"Box",action:"Enable"})}});const c=a.map((t=>t.selection)).flat(),l=new Array,h=o.model.getInstanceTree();if(!h)return;c.forEach((t=>{h.enumNodeChildren(t,(t=>{0===h.getChildCount(t)&&l.push(t)}),!0)}));const u=a.map((t=>t.model.id)),p=o.impl.hitTest(n.canvasX,n.canvasY,!1,l,u);if(null!=p&&null!==(i=p.face)&&void 0!==i&&i.normal&&p.model&&-1!==l.indexOf(p.dbId)){var E;const e=new THREE.Matrix4;null===(E=p.model.getFragmentList())||void 0===E||E.getWorldMatrix(p.fragId,e);const n=(new THREE.Matrix3).getNormalMatrix(e),i=p.face.normal.clone().applyMatrix3(n).normalize();r.target.push({title:"Section Plane",target:()=>{t.setSectionPlane(i,p.point,!1),R.track("viewer.section",{from:"Contextual",type:"Plane",action:"Enable"})}})}e.push(r)}(this,t,e)})),this.viewer.loadExtension("Autodesk.CompGeom")},M.unload=function(){var t=this.viewer;return t.unregisterContextMenuCallback("Autodesk.Section"),t.getHotkeyManager().popHotkeys(this.HOTKEYS_ID),this.destroyUI(),t.removeEventListener(Autodesk.Viewing.SET_VIEW_EVENT,this.onViewerSetView),t.removeEventListener(Autodesk.Viewing.CUTPLANES_CHANGE_EVENT,this._onCutPlanesChanged),t.removeEventListener(Autodesk.Viewing.SHOW_ALL_EVENT,this._onShowAll),t.removeEventListener(Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT,this.tool.notifyRenderOptionChanged),this.viewer.prefs.removeListeners(y.Prefs3D.DISPLAY_SECTION_HATCHES,this.displaySectionHatches),t.toolController.deregisterTool(this.tool),this.tool=null,!0},M.toggle=function(){if(this.isActive())this.enableSectionTool(!1);else{var t=this.sectionStyle||"X";this.setSectionStyle(t,!0)}return this.isActive()},M.getSectionStyle=function(){return this.sectionStyle},M.setSectionStyle=function(t,e){if(-1===this.supportedStyles.indexOf(t))return!1;var n=this.isActive(),i=this.sectionStyle!==t||!e;return this.sectionStyle=t,n&&i?this.tool.setSection(t):n||(this.enableSectionTool(!0),i?this.tool.setSection(t):this.tool.attachControl(!0)),!0},M.setSectionFromPlane=function(t){if(this.deactivate(),t)this.tool.setSectionFromPlane(t),this.tool.attachControl(!1),this.isActive()||this.tool.showPlane(!1);else{this.tool.clearSection();var e=this.viewer.toolController.setIsLocked(!1);this.enableSectionTool(!1),this.viewer.toolController.setIsLocked(e)}},M.getSectionPlanes=function(){return this.tool.getSectionPlanes()},M.enableSectionTool=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var n=this.viewer.toolController,i=this.tool.isActive();if(t&&!i)return n.activateTool("section"),this.sectionToolButton&&this.sectionToolButton.setState(Autodesk.Viewing.UI.Button.State.ACTIVE),!0;if(!t&&i){const t=this.tool.keepCutPlanesOnDeactivate;return this.tool.keepCutPlanesOnDeactivate=e,n.deactivateTool("section"),this.tool.keepCutPlanesOnDeactivate=t,this.sectionToolButton&&this.sectionToolButton.setState(Autodesk.Viewing.UI.Button.State.INACTIVE),!0}return t&&n.activateToolModality("section"),!1},M.getViewValues=function(t){var e=this.tool.getSectionBoxValues(t);if(e)return e;var n=this.tool.getSectionPlaneValues(t);return n||null},M.getState=function(t){const e=this.viewer.getFirstModel();if(e&&!e.is2d()){t.cutplanes=t.cutplanes||[];for(var n=this.tool.getSectionPlaneSet(),i=0;i=n&&e>=i?"x":n>e&&n>=i?"y":"z"},M.onViewerSetView=function(){this.deactivate()},M.onToolbarCreated=function(t){this.sectionToolButton=new g.ComboButton("toolbar-sectionTool"),this.sectionToolButton.setToolTip("Section analysis"),this.sectionToolButton.setIcon("adsk-icon-section-analysis"),this.createSubmenu(this.sectionToolButton);var e=t.getControl(Autodesk.Viewing.TOOLBAR.MODELTOOLSID);if(e){var n=e.getControl("toolbar-resetTool");n?e.addControl(this.sectionToolButton,{index:e.indexOf(n.getId())}):e.addControl(this.sectionToolButton,{index:0})}},M.createSubmenu=function(t){var e=this,n=this.viewer;function i(t,n){return e.buttons[n]=t,function(){var i=t.getState(),o=function(){t instanceof g.ComboButton==!1?e.activate(n):(e.enableSectionTool(!0),e.tool.attachControl(!0))};const a=-1!==n.toLowerCase().indexOf("box")?"Box":"Plane";i===g.Button.State.INACTIVE?(t.setState(g.Button.State.ACTIVE),Autodesk.Viewing.isMobileDevice()?setTimeout(o,1):o(),R.track("viewer.section",{from:"Toolbar",type:a,action:"Enable"})):i===g.Button.State.ACTIVE&&(t.setState(g.Button.State.INACTIVE),e.deactivate(),R.track("viewer.section",{from:"Toolbar",type:a,action:"Disable"})),e.sectionStyle=n.toUpperCase()}}function o(){var t,i=(t=new THREE.Vector3,function(e,n,i){return t.subVectors(e,n),t.lengthSq(){this.tool.updateCapMeshes((new THREE.Plane).setComponents(t.x,t.y,t.z,t.w))}))}},Autodesk.Viewing.theExtensionManager.registerExtension("Autodesk.Section",x)})(),Autodesk.Extensions.Section=i})(); +//# sourceMappingURL=Section.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/Snapping/Snapping.min.js b/public/autodesk/extensions/Snapping/Snapping.min.js new file mode 100644 index 0000000..1a83029 --- /dev/null +++ b/public/autodesk/extensions/Snapping/Snapping.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={5439:(e,t,i)=>{"use strict";i.r(t),i.d(t,{intersectLines:()=>n,nearestPointOnCircularArc:()=>r});const r=(e,t,i,r,n,s)=>{const o=(s=s||new THREE.Vector2).copy(e).sub(t).normalize(),a=Math.atan2(o.y,o.x);if(Autodesk.Extensions.CompGeom.angleInsideArc(a,r,n))return o.multiplyScalar(i).add(t);const c=Autodesk.Extensions.CompGeom.getEllipsePoint(r,t.x,t.y,i,i),l=Autodesk.Extensions.CompGeom.getEllipsePoint(n,t.x,t.y,i,i),d=c.distanceToSquared(e)<=l.distanceToSquared(e);return s.copy(d?c:l),s},n=function(e,t,i,r,n,s){let o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1e-5;const a=(r.y-i.y)*(t.x-e.x)-(r.x-i.x)*(t.y-e.y);if(Math.abs(a)1||r<0||r>1)return null}return(s=s||new THREE.Vector2).x=e.x+c*(t.x-e.x),s.y=e.y+c*(t.y-e.y),s}},6450:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Snapper:()=>y});var r=i(4981),n=i(5439);const s=Autodesk.Viewing.MeasureCommon,o=s.EPSILON,a=s.SnapType,c=s.SnapResult;var l=.001;const d=Autodesk.Viewing,u=d.Private.VertexBufferReader;function h(e,t){return Math.abs(e-t)<=l}function p(e,t){return Math.abs(e.x-t.x)<=l&&Math.abs(e.y-t.y)<=l&&Math.abs(e.z-t.z)<=l}function g(e,t,i){if(t.equals(i))return e.distanceTo(t);var r,n,s=new THREE.Vector3,o=new THREE.Vector3;return s.subVectors(t,e),o.subVectors(i,t),n=s.dot(o),s.subVectors(i,t),(n=-n/s.dot(s))<0?r=e.distanceTo(t):n>1?r=e.distanceTo(i):(s.subVectors(e,t),o.subVectors(e,i),s.cross(o),o.subVectors(i,t),r=Math.sqrt(s.dot(s))/Math.sqrt(o.dot(o))),r}const E={Unknown:0,Line:1,CircularArc:2,EllipticalArc:3};class m{constructor(e){this.type=E.Unknown,this.viewportId=e,this.distance=0,this.lineStart=null,this.lineEnd=null,this.radius=0,this.radiusX=0,this.radiusY=0,this.center=null,this.startAngle=0,this.endAngle=0}fromLine(e,t){return this.type=E.Line,this.lineStart=e.clone(),this.lineEnd=t.clone(),this}fromCircularArc(e,t,i,r){return this.type=E.CircularArc,this.center=e.clone(),this.radius=t,this.start=i,this.end=r,this}fromEllipticalArc(e,t,i,r,n){return this.type=E.EllipticalArc,this.center=e.clone(),this.radiusX=t,this.radiusY=i,this.start=r,this.end=n,this}isLine(){return this.type===E.Line}isCircularArc(){return this.type===E.CirularArc}isEllipticalArc(){return this.type===E.EllipticalArc}getIntersection(e,t){if(this.isLine()&&e.isLine())return(0,n.intersectLines)(this.lineStart,this.lineEnd,e.lineStart,e.lineEnd,!1,t)}}const v=(e,t,i)=>{if(e.sort(((e,t)=>e.distance-t.distance)),e.length<2)return null;const r={viewportId:e[0].viewportId,snapPoint:new THREE.Vector3(0,0,t.z)},n=e[0];for(let s=1;s0?(c.faceId=h,c.applyMatrix4(n),c):null},this.faceSnapping=function(e,t){var i=new THREE.Vector3,r=new THREE.Vector3,n=new THREE.Vector3;const s=new THREE.Geometry;let o;o=t.index&&(t.index.array||t.ib);var a=t.groups;if(!a||0===a.length){let e;e=t.vb??t.attributes.position.array,a=[{start:0,count:o?o.length:e.length,index:0}]}const c=this.makeReadVertexFunc(t),l=c(e.a);for(var d=0;d0?this.getTrianglesOnSameFace(s,e,c):null},this.getTrianglesOnSameFace=function(e,t,i){const r=e.vertices,n=i(t.a),s=i(t.b),o=i(t.c),a=new THREE.Geometry,c=Math.pow(10,5),l=[],d={};let u=-1;for(let e=0;e0;){const e=h.shift();if(p.has(e))continue;p.add(e),g.push(e);const t=l[e];for(const i of t.edges)i.triangles.forEach((t=>t!==e&&h.push(t)))}const E=[];let m=0;return g.forEach((e=>{a.faces.push(new THREE.Face3(m++,m++,m++)),E.push(r[3*e]),E.push(r[3*e+1]),E.push(r[3*e+2])})),a.vertices=E,a},this.edgeSnappingWithTopology=function(e,t,r,n){let{matrixWorld:s}=n;const o=new THREE.Geometry;var a,c=Number.MAX_VALUE,l=new THREE.Vector3,d=new THREE.Vector3;if(void 0!==t.index&&null!=r){const i=this.makeReadVertexFunc(t);for(var u=0;u=c&&o.vertices.length>0&&(w=c,o.applyMatrix4(s),i.geomEdge=o)},this.extractLineGeometry=function(e,t){const i=this.makeReadVertexFunc(t),r=i(e.a),n=i(e.b),s=new THREE.Geometry;return s.vertices.push(r,n),s},this.edgeSnapping=function(e,t){const i=[],r=e.vertices.length;for(var n=!0,s=!0,o=!0,a=0;a=0;--g)t.push(i[a[g]]),t.push(i[a[g]+1]),i.splice(a[g],2)}while(a.length>0);return t},this.vertexSnappingWithTopology=function(e,t){var i=Number.MAX_VALUE,r=new THREE.Vector3;if(!e)return r;if(e.vertices.length>1){const o=e.vertices[0],a=e.vertices[e.vertices.length-1];var n=t.distanceTo(o),s=t.distanceTo(a);n<=s?(i=n,r=o.clone()):(i=s,r=a.clone())}return V=i,r},this.vertexSnapping=function(e,t){var i=Number.MAX_VALUE,r=new THREE.Vector3;const n=e.vertices.length;for(let s=0;s0&&e.y>=0?Math.atan(e.y/e.x):e.x>=0&&e.y<0?Math.atan(e.y/e.x)+2*Math.PI:e.x<0&&e.y<=0||e.x<=0&&e.y>0?Math.atan(e.y/e.x)+Math.PI:null};function b(e,t,i){this.viewer=e,this.snapper=t,this.lineGeom=new THREE.Geometry,this.circularArc=null,this.circularArcCenter,this.circularArcRadius,this.ellipticalArc=null,this.ellipticalArcCenter,this.minDist=Number.MAX_VALUE,this.matrix=new THREE.Matrix4,this.vpIdLine=null,this.vpIdCircular=null,this.vpIdElliptical=null,this.detectRadius=i,this.snapCandidates=[]}b.prototype.onLineSegment=function(e,t,i,r,n){var s=this.snapper.getIntersectPoint(),o=new THREE.Vector3(e,t,s.z),a=new THREE.Vector3(i,r,s.z);this.matrix&&(o.applyMatrix4(this.matrix),a.applyMatrix4(this.matrix));var c=g(s,o,a);c>this.detectRadius||(this.snapCandidates.push(new m(n,c).fromLine(o,a)),cthis.detectRadius)return;var h=this.snapper.angleVector2(c);let p;if(r>i&&h>=i&&h<=r)p=new THREE.CircleGeometry(s,100,i,r-i);else{if(!(r=i||h<=r)))return;p=new THREE.CircleGeometry(s,100,i,2*Math.PI-i+r)}p.vertices.splice(0,1),p.applyMatrix4((new THREE.Matrix4).makeTranslation(e,t,a.z)),this.circularArc=p,this.circularArcCenter=new THREE.Vector3(e,t,a.z),this.circularArcRadius=s,this.snapPoint=new THREE.Vector3(d.x,d.y,a.z),this.vpIdCircular=o},b.prototype.onEllipticalArc=function(e,t,i,r,n,o,a,c){var l=this.snapper.getIntersectPoint(),d=new THREE.Vector2(l.x,l.y),u=n-this.detectRadius,p=o-this.detectRadius,g=n+this.detectRadius,E=o+this.detectRadius,v=(d.x-e)*(d.x-e)/(u*u)+(d.y-t)*(d.y-t)/(p*p),y=(d.x-e)*(d.x-e)/(g*g)+(d.y-t)*(d.y-t)/(E*E),f=new THREE.Vector2(e,t);d.sub(f),d.x*=o,d.y*=n;var T=this.snapper.angleVector2(d);if(r>2*Math.PI&&(r=2*Math.PI),v>=1&&y<=1&&(r>i&&T>=i&&T<=r||r=i||T<=r))){var w=((e,t,i,r,n,s,o)=>{let a=new THREE.Geometry;for(let c=0;c1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return;let{dbId:r,fragId:n,intersectPoint:s,model:o=E.model}=e;if(o.is3d())return;i.modelId=e.model?e.model.id:null,i.hasTopology=!1,i.intersectPoint=s;let c,l=1;if(E.impl.is2d||(c=o.getModelToViewerTransform(),c&&(l=c.getMaxScaleOnAxis(),i.intersectPoint=s.clone(),i.intersectPoint.applyMatrix4(o.getInverseModelToViewerTransform()))),i.radius=this.setDetectRadius(s)/l,!(null!=o.getFragmentList()))return S=!0,i.geomType=a.SNAP_VERTEX,i.geomVertex=s,void(c&&i.intersectPoint.applyMatrix4(c));var d=new b(E,this,i.radius);if(t.enumSegments){const e=i.intersectPoint.x-i.radius,r=i.intersectPoint.y-i.radius,n=i.intersectPoint.x+i.radius,s=i.intersectPoint.y+i.radius;t.enumSegments(e,r,n,s,d)}else{var h=n;if(void 0===h){if(!A)return;h=[]}else Array.isArray(h)||(h=[h]);for(var p=0;pe)))],r.forEach((e=>e.applyMatrix4(c))),i.circularArcRadius&&(i.circularArcRadius*=l),i.radius*=l}},this.snapping2DOverlay=function(e,t,r,n){i.hasTopology=!1,i.intersectPoint=e,i.radius=n||this.setDetectRadius(e);for(var s=new b(E,this,i.radius),o=0;oe.viewportId===P;e.snapCandidates=e.snapCandidates.filter(t)}const r=v(e.snapCandidates,t,e.detectRadius);if(r)return i.viewportIndex2d=r.viewportId,i.snapPoint=r.snapPoint,i.geomType=a.SNAP_INTERSECTION,i.geomVertex=r.snapPoint,void(S=!0);if(e.circularArc){if(i.viewportIndex2d=e.vpIdCircular,i.snapPoint=e.snapPoint,null!==P&&P!==i.viewportIndex2d)return;const r=e.circularArc.vertices[0],n=e.circularArc.vertices[e.circularArc.vertices.length-1];t.distanceTo(r)1e-5)return}i.intersectPoint.distanceTo(e)<2*i.radius&&(i.geomVertex=e,i.geomType=a.SNAP_MIDPOINT)}},this.setPerpendicular=function(e){i.isPerpendicular=e},this.lineStripToPieces=function(e){const t=e.vertices;for(var i=t.length-2;i>0;i--)t.splice(i,0,t[i])},this.setDetectRadius=function(e){var t=E.navigation,i=t.getCamera(),r=t.getPosition(),n=e.clone(),s=i.isPerspective?n.sub(r).length():t.getEyeVector().length(),o=t.getVerticalFov(),a=2*s*Math.tan(THREE.Math.degToRad(.5*o)),c=t.getScreenViewport(),l=this.getWindow().devicePixelRatio||1;return this.detectRadiusInPixels*a/(c.height*l)},this.handleButtonDown=function(){return R=!0,!1},this.handleButtonUp=function(){return R=!1,!1},this.handleMouseMove=function(e){return R||this.onMouseMove({x:e.canvasX,y:e.canvasY}),!1},this.handleSingleTap=function(e){return this.handleMouseMove(e)},this.handlePressHold=function(e){if(d.isMobileDevice())switch(e.type){case"press":x=!0,this.onMouseMove({x:e.canvasX,y:e.canvasY});break;case"pressup":this.onMouseMove({x:e.canvasX,y:e.canvasY}),x=!1}return!1},this.handleGesture=function(e){if(d.isMobileDevice()&&x)switch(e.type){case"dragstart":case"dragmove":this.onMouseMove({x:e.canvasX,y:e.canvasY});break;case"dragend":this.onMouseMove({x:e.canvasX,y:e.canvasY}),x=!1}return!1},this.onMouseDown=function(e){return this.onMouseMove(e)},this.onMouseMove=function(e){var t,r;this.clearSnapped();var n=E.impl.snappingHitTest(e.x,e.y,!1);if(!n&&A){var s=E.impl.clientToViewport(e.x,e.y);n={intersectPoint:E.impl.intersectGroundViewport(s)}}if(!n||!n.intersectPoint)return!1;const o=(null===(t=n.model)||void 0===t?void 0:t.isLeaflet())||E.impl.is2d&&(null===(r=E.model)||void 0===r?void 0:r.isLeaflet());if(n.face)this.snapping3D(n);else if(!n.dbId&&0!==n.dbId||o){(A||o)&&this.snappingRasterPixel(n)}else this.snapping2D(n);return this.snapMidpoint(),!(M&&!M(i))||(this.clearSnapped(),!1)}}d.GlobalManagerMixin.call(y.prototype)},4981:(e,t,i)=>{"use strict";i.r(t),i.d(t,{NullSnapperIndicator:()=>g,SnapperIndicator:()=>E,getXYZFromPos:()=>p});const r=Autodesk.Viewing.MeasureCommon,n=r.isEqualVectors,s=r.EPSILON,o=r.SnapType,a="MeasureTool-snapper-geometries",c="MeasureTool-snapper-indicator",l=.2,d=1.2;let u=null;const h=new THREE.Vector3;function p(e,t){return h.x=e.getX(t),h.y=e.getY(t),h.z=e.getZ(t),h}class g{isNull(){return!0}render(){}removeOverlay(e){}clearOverlay(e){}clearOverlays(){}addOverlay(e,t){}drawFace(e,t,i){}cylinderMesh(e,t,i,r){return new THREE.Mesh}renderGeometry(e){}renderVertexIndicator(e){}renderMidpointIndicator(e){}renderEdgeIndicator(e){}renderCircleIndicator(e){}renderPerpendicular(e){}renderPixelIndicator(e){}renderIndicator(e){}drawLine(e,t,i,r){}drawPoint(e,t,i){}drawCircle(e,t,i){}setScale(e){return 1}setPointScale(e){}setCircleScale(e){}setEdgeScale(e){}updatePointScale(e){}updateEdgeScale(e){}onCameraChange(){}destroy(){}}class E extends g{constructor(e,t){super(),this.viewer=e,this.snapper=t,this.overlayType=0,this.previewsIntersectPoint=null,this.viewer.impl.createOverlayScene(a),this.viewer.impl.createOverlayScene(c),this.geometryMaterial=new THREE.MeshPhongMaterial({color:52224,opacity:.5,transparent:!0,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide}),this.indicatorMaterial=new THREE.MeshBasicMaterial({color:16742144,opacity:1,transparent:!1,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide})}isNull(){return!1}render(){const e=this.snapper.getSnapResult();n(this.previewsIntersectPoint,e.intersectPoint,s)||this.clearOverlay(a),this.clearOverlay(c),e.isEmpty()||((this.snapper.renderSnappedGeometry||e.hasTopology&&this.snapper.renderSnappedTopology)&&this.renderGeometry(e),this.renderIndicator(e),this.previewsIntersectPoint=e.intersectPoint.clone())}removeOverlay(e){this.viewer.impl.clearOverlay(e,!0),this.viewer.impl.removeOverlayScene(e)}clearOverlay(e){this.removeOverlay(e),this.viewer.impl.createOverlayScene(e)}clearOverlays(){this.removeOverlay(a),this.viewer.impl.createOverlayScene(a),this.removeOverlay(c),this.viewer.impl.createOverlayScene(c),this.previewsIntersectPoint=null}addOverlay(e,t){this.viewer.impl.addOverlay(e,t)}drawFace(e,t,i){const r=new THREE.Mesh(e,t,!0);i===a&&(this.overlayType=1),this.addOverlay(i,r)}cylinderMesh(e,t,i,r){const n=(new THREE.Vector3).subVectors(t,e),s=new THREE.Matrix4;s.lookAt(e,t,(new THREE.Object3D).up),s.multiply((new THREE.Matrix4).set(1,0,0,0,0,0,1,0,0,-n.length(),0,0,0,0,0,1)),r=r||.5;let o=new THREE.CylinderGeometry(r,r,1,8,1,!0);const a=new THREE.Mesh(o,i);return o=null,a.applyMatrix4(s),a.position.x=(t.x+e.x)/2,a.position.y=(t.y+e.y)/2,a.position.z=(t.z+e.z)/2,a}renderGeometry(e){if(!n(this.previewsIntersectPoint,e.intersectPoint,s))switch(e.geomType){case o.SNAP_VERTEX:o.RASTER_PIXEL,this.drawPoint(e.geomVertex,this.geometryMaterial,a);break;case o.SNAP_EDGE:case o.SNAP_CURVEDEDGE:case o.SNAP_CIRCULARARC:case o.SNAP_MIDPOINT:this.drawLine(e.geomEdge,this.geometryMaterial,.3,a);break;case o.SNAP_FACE:case o.SNAP_CURVEDFACE:this.drawFace(e.geomFace,this.geometryMaterial,a)}}renderVertexIndicator(e){const t=r.getSnapResultPosition(e,this.viewer),i=this.setScale(t),n=d*i,s=this.viewer.navigation.getCameraRightVector().multiplyScalar(n),o=this.viewer.navigation.getCameraUpVector().multiplyScalar(n),a=new THREE.BufferGeometry,u=[],h=new THREE.Vector3;h.addVectors(t,s),h.addVectors(h,o),u[0]=h.clone(),h.subVectors(t,s),h.addVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),h.subVectors(t,s),h.subVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.subVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),h.subVectors(t,s),h.addVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),h.addVectors(t,s),h.addVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c)}renderMidpointIndicator(e){const t=e.geomVertex,i=this.setScale(t),r=d*i,n=this.viewer.navigation.getCameraRightVector().multiplyScalar(r),s=this.viewer.navigation.getCameraUpVector().multiplyScalar(r),o=new THREE.BufferGeometry,a=[],u=new THREE.Vector3;u.addVectors(t,n),u.subVectors(u,s),a[0]=u.clone(),u.subVectors(t,n),u.subVectors(u,s),a[1]=u.clone(),o.setFromPoints(a),this.drawLine(o,this.indicatorMaterial,l,c),u.subVectors(t,n),u.subVectors(u,s),a[0]=u.clone(),u.addVectors(t,s),a[1]=u.clone(),o.setFromPoints(a),this.drawLine(o,this.indicatorMaterial,l,c),u.addVectors(t,n),u.subVectors(u,s),a[0]=u.clone(),u.addVectors(t,s),a[1]=u.clone(),o.setFromPoints(a),this.drawLine(o,this.indicatorMaterial,l,c)}renderEdgeIndicator(e){const t=r.getSnapResultPosition(e,this.viewer),i=this.setScale(t),n=d*i,s=this.viewer.navigation.getCameraRightVector().multiplyScalar(n),o=this.viewer.navigation.getCameraUpVector().multiplyScalar(n),a=new THREE.BufferGeometry,u=[],h=new THREE.Vector3;h.addVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.subVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c)}renderCircleIndicator(e){const t=r.getSnapResultPosition(e,this.viewer);this.drawCircle(t,this.indicatorMaterial,c)}renderPerpendicular(e){const t=r.getSnapResultPosition(e,this.viewer),i=this.setScale(t),n=d*i,s=this.viewer.navigation.getCameraRightVector().multiplyScalar(n),o=this.viewer.navigation.getCameraUpVector().multiplyScalar(n),a=new THREE.BufferGeometry,u=[],h=new THREE.Vector3;u[0]=t.clone(),h.subVectors(t,s),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),h.subVectors(t,s),h.subVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.subVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),h.subVectors(t,s),h.addVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),u[0]=t.clone(),h.subVectors(t,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c)}renderPixelIndicator(e){const t=r.getSnapResultPosition(e,this.viewer),i=this.setScale(t),n=d*i,s=this.viewer.navigation.getCameraRightVector().multiplyScalar(n),o=this.viewer.navigation.getCameraUpVector().multiplyScalar(n),a=new THREE.BufferGeometry,u=[],h=new THREE.Vector3;h.subVectors(t,s),h.addVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,s),h.addVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.subVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c)}renderIndicator(e){if(e.isPerpendicular)this.renderPerpendicular(e);else if(e.snapToArc)e.isArc&&e.geomType===o.SNAP_CIRCULARARC&&this.viewer.model.is2d()&&!this.viewer.model.isPdf()&&this.renderVertexIndicator(e);else switch(e.geomType){case o.SNAP_VERTEX:case o.SNAP_INTERSECTION:this.renderVertexIndicator(e);break;case o.SNAP_MIDPOINT:this.renderMidpointIndicator(e);break;case o.SNAP_CIRCLE_CENTER:this.renderCircleIndicator(e);break;case o.SNAP_EDGE:case o.SNAP_CURVEDEDGE:this.renderEdgeIndicator(e);break;case o.SNAP_CIRCULARARC:this.viewer.model.is2d()?this.renderVertexIndicator(e):this.renderCircleIndicator(e);break;case o.SNAP_FACE:case o.SNAP_CURVEDFACE:this.renderVertexIndicator(e);break;case o.RASTER_PIXEL:this.renderPixelIndicator(e)}}drawLine(e,t,i,r){let n,s;r===a&&(this.overlayType=2),e instanceof THREE.Geometry?(console.warn("SnapperIndicator.drawLine(geom, material, width, overlayName): THREE.Geometry has been depecrated and the geom argument should use a THREE.BufferGeometry instead"),n=e.vertices.length):(s=e.getAttribute("position"),n=s.count);for(let o=0;o{var r=Autodesk.Viewing,n=AutodeskNamespace("Autodesk.Viewing.Extensions.Snapping");function s(t,i){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e.exports[r]=t[r],i[r]=t[r])}s(i(5439),n),s(i(6450),n),s(i(4981),n);class o extends r.Extension{constructor(e,t){super(e,t)}load(){return this.viewer.loadExtension("Autodesk.CompGeom")}unload(){return!0}activate(){return!0}deactivate(){return!1}}r.theExtensionManager.registerExtension("Autodesk.Snapping",o)}},t={};function i(r){var n=t[r];if(void 0!==n)return n.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,i),s.exports}i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r=i(2573);Autodesk.Extensions.Snapping=r})(); +//# sourceMappingURL=Snapping.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/ViewCubeUi/ViewCubeUi.min.js b/public/autodesk/extensions/ViewCubeUi/ViewCubeUi.min.js new file mode 100644 index 0000000..413fe8e --- /dev/null +++ b/public/autodesk/extensions/ViewCubeUi/ViewCubeUi.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={4962:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(1354),i=n.n(o),r=n(6314),a=n.n(r)()(i());a.push([e.id,".viewcube,.viewcubeWrapper{display:block;position:absolute;outline:none;width:170px;height:170px;right:-1px;top:-1px;opacity:.7;margin:0;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;-o-transition:opacity .2s ease;transition:opacity .2s ease}.viewcubeWrapper{pointer-events:none}.viewcube{pointer-events:auto}.rewindFrame{background-color:#fff;position:absolute;height:56px;width:56px;z-index:1002}.dropDownMenu{position:absolute;min-width:220px;margin:0;z-index:1001;background-color:#fff;font-family:sans-serif;font-size:14px;list-style-type:none;border:solid;border-width:1px;border-color:#979797}.dropDownMenuItem{position:relative;width:calc(100% - 24px);height:21px;padding-left:24px;padding-top:4px;background-color:#fff;cursor:pointer}.dropDownMenuCheckbox{position:relative;width:calc(100% - 4px);padding-top:4px;height:21px;margin-left:4px;background-color:#fff;cursor:pointer}.dropDownMenuCheck{padding-top:2px;cursor:pointer}.dropDownMenuCheckText{position:relative;padding-left:2px;margin:0;cursor:pointer}.dropDownMenuItemDisabled{color:#999;position:relative;width:calc(100% - 5px);height:23px;background-color:#fff;cursor:pointer}.dropDownMenuItem:hover{background-color:#e7eef6}.dropDownMenuCheckbox:hover{background-color:#e7eef6}.textBox{font-size:15px;background-color:#000;opacity:.6;padding:2px 10px;border-radius:2px;position:fixed;display:none;font-family:Monospace;color:#fff;z-index:1000}#colorCode{position:absolute;left:0px;top:0px}#text,#steeringWheel{position:absolute;left:0px;top:0px;z-index:900}.homeViewWrapper{display:block;outline:none;margin:18px 0px 0px -20px;opacity:.7;width:24px;height:24px;background-image:url(data:image/png;base64,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);cursor:pointer;pointer-events:auto}.homeViewWrapper:hover{opacity:1}.homeViewWrapper.no-viewcube{position:absolute;right:12px;top:10px;margin:0}.homeViewMenu{display:none;position:absolute;right:10px;top:28px;background-color:#fff;border:1px solid #979797;z-index:1}.homeViewMenuItem{padding:5px 20px;font-family:sans-serif;font-size:14px;cursor:pointer;z-index:2}.homeViewMenuItem:hover{background-color:#e7eef6}.homeViewWrapper .homeViewMenuHandle{display:none;position:relative;left:18px;top:18px}","",{version:3,sources:["webpack://./extensions/ViewCubeUi/ViewCubeUi.css"],names:[],mappings:"AAAA,2BAA2B,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,mCAAmC,CAAC,gCAAgC,CAAC,+BAA+B,CAAC,8BAA8B,CAAC,2BAA2B,CAAC,iBAAiB,mBAAmB,CAAC,UAAU,mBAAmB,CAAC,aAAa,qBAAqB,CAAC,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,iBAAiB,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,cAAc,CAAC,oBAAoB,CAAC,YAAY,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,kBAAkB,iBAAiB,CAAC,uBAAuB,CAAC,WAAW,CAAC,iBAAiB,CAAC,eAAe,CAAC,qBAAqB,CAAC,cAAc,CAAC,sBAAsB,iBAAiB,CAAC,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,qBAAqB,CAAC,cAAc,CAAC,mBAAmB,eAAe,CAAC,cAAc,CAAC,uBAAuB,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,0BAA0B,UAAU,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,WAAW,CAAC,qBAAqB,CAAC,cAAc,CAAC,wBAAwB,wBAAwB,CAAC,4BAA4B,wBAAwB,CAAC,SAAS,cAAc,CAAC,qBAAqB,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,YAAY,CAAC,qBAAqB,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,aAAa,CAAC,YAAY,CAAC,yBAAyB,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,4qIAA4qI,CAAC,cAAc,CAAC,mBAAmB,CAAC,uBAAuB,SAAS,CAAC,6BAA6B,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,SAAS,CAAC,kBAAkB,gBAAgB,CAAC,sBAAsB,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,wBAAwB,wBAAwB,CAAC,qCAAqC,YAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ",sourcesContent:[".viewcube,.viewcubeWrapper{display:block;position:absolute;outline:none;width:170px;height:170px;right:-1px;top:-1px;opacity:.7;margin:0;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;-o-transition:opacity .2s ease;transition:opacity .2s ease}.viewcubeWrapper{pointer-events:none}.viewcube{pointer-events:auto}.rewindFrame{background-color:#fff;position:absolute;height:56px;width:56px;z-index:1002}.dropDownMenu{position:absolute;min-width:220px;margin:0;z-index:1001;background-color:#fff;font-family:sans-serif;font-size:14px;list-style-type:none;border:solid;border-width:1px;border-color:#979797}.dropDownMenuItem{position:relative;width:calc(100% - 24px);height:21px;padding-left:24px;padding-top:4px;background-color:#fff;cursor:pointer}.dropDownMenuCheckbox{position:relative;width:calc(100% - 4px);padding-top:4px;height:21px;margin-left:4px;background-color:#fff;cursor:pointer}.dropDownMenuCheck{padding-top:2px;cursor:pointer}.dropDownMenuCheckText{position:relative;padding-left:2px;margin:0;cursor:pointer}.dropDownMenuItemDisabled{color:#999;position:relative;width:calc(100% - 5px);height:23px;background-color:#fff;cursor:pointer}.dropDownMenuItem:hover{background-color:#e7eef6}.dropDownMenuCheckbox:hover{background-color:#e7eef6}.textBox{font-size:15px;background-color:#000;opacity:.6;padding:2px 10px;border-radius:2px;position:fixed;display:none;font-family:Monospace;color:#fff;z-index:1000}#colorCode{position:absolute;left:0px;top:0px}#text,#steeringWheel{position:absolute;left:0px;top:0px;z-index:900}.homeViewWrapper{display:block;outline:none;margin:18px 0px 0px -20px;opacity:.7;width:24px;height:24px;background-image:url(data:image/png;base64,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);cursor:pointer;pointer-events:auto}.homeViewWrapper:hover{opacity:1}.homeViewWrapper.no-viewcube{position:absolute;right:12px;top:10px;margin:0}.homeViewMenu{display:none;position:absolute;right:10px;top:28px;background-color:#fff;border:1px solid #979797;z-index:1}.homeViewMenuItem{padding:5px 20px;font-family:sans-serif;font-size:14px;cursor:pointer;z-index:2}.homeViewMenuItem:hover{background-color:#e7eef6}.homeViewWrapper .homeViewMenuHandle{display:none;position:relative;left:18px;top:18px}"],sourceRoot:""}]);const s=a},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",o=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),o&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),o&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,o,i,r){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(o)for(var s=0;s0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=r),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),i&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=i):u[4]="".concat(i)),t.push(u))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(o),r="/*# ".concat(i," */");return[t].concat([r]).join("\n")}return[t].join("\n")}},5072:e=>{"use strict";var t=[];function n(e){for(var n=-1,o=0;o{"use strict";var t={};e.exports=function(e,n){var o=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var o="";n.supports&&(o+="@supports (".concat(n.supports,") {")),n.media&&(o+="@media ".concat(n.media," {"));var i=void 0!==n.layer;i&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),o+=n.css,i&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var r=n.sourceMap;r&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleTagTransform(o,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0;var o={};(()=>{"use strict";n.r(o),n.d(o,{ViewCubeUi:()=>U});const e=THREE;let t={uniforms:{tCube:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",e.ShaderChunk.common,e.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvWorldPosition = transformDirection( position, modelMatrix );","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",e.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform samplerCube tCube;","uniform float tFlip;","varying vec3 vWorldPosition;",e.ShaderChunk.common,e.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",e.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")};const i=Autodesk.Viewing,r=i.Private,a=r.DDSLoader,{createShaderMaterial:s}=r.ShaderUtils,c=r.WebGLRenderer,p=r.logger,u=i.isMobileDevice,{errorCodeString:A,ErrorCodes:l}=i,h=i.endpoint,d=i.getGlobal,m=i.GlobalManagerMixin,w=1e-5,v=e.MeshBasicMaterial;var f=function(e){return Math.abs(e-1)<1e-12},C=function(e){return!(!f(e.length())||!f(Math.abs(e.x))&&!f(Math.abs(e.y))&&!f(Math.abs(e.z)))};const g=12040636;function b(t){var n=t/2,o=16711680,r=65280,a=255,s=new e.Matrix4,c=[],p=new e.PlaneBufferGeometry(50,50),u=function(t,n){var o=i.getGlobal().document.createElement("canvas");o.width=o.height=128;var r=o.getContext("2d");r.font="128px Arial",r.fillStyle="rgba(255,255,255,1)",r.textAlign="center",r.textBaseline="middle",r.fillText(t,o.width/2,o.height/2);var a=new e.Texture(o);return a.needsUpdate=!0,new e.Mesh(p,new v({map:a,side:e.DoubleSide,transparent:!0,color:n,depthWrite:!1,depthTest:!0}))};this.triadScene=new e.Scene,this.triadLabelScene=new e.Scene;var A=new e.BoxGeometry(t,10,10),l=new e.Mesh(A,new v({color:o})),h=new e.Mesh(A,new v({color:r})),d=new e.Mesh(A,new v({color:a}));l.applyMatrix4(s.makeTranslation(5,-n,-n)),h.applyMatrix4(s.makeRotationZ(Math.PI/2)),h.applyMatrix4(s.makeTranslation(-n,5,-n)),d.applyMatrix4(s.makeRotationY(Math.PI/2)),d.applyMatrix4(s.makeTranslation(-n,-n,5)),this.triadScene.add(l),this.triadScene.add(h),this.triadScene.add(d);var m=u("X",o),w=u("Y",r),g=u("Z",a),b=function(e){var t=-(50+n)/2-20,o=n+50;m.position.set(o,t,t),w.position.set(t,o,t),g.position.set(t,t,o),e&&(m.position.applyQuaternion(e),w.position.applyQuaternion(e),g.position.applyQuaternion(e))};b(),c.push(m),c.push(w),c.push(g),this.triadLabelScene.add(m),this.triadLabelScene.add(w),this.triadLabelScene.add(g),this.orient=function(t,n){if(C(t)&&C(n)&&!(this.up&&this.front&&t.equals(this.up)&&n.equals(this.front))){this.up=t.clone(),this.front=n.clone();var o,i,r,a,s=0,c=0;t.x?(o="x",i="y",r="z",s=2*Math.PI/3):t.y?(o="y",i="z",r="x"):t.z&&(o="z",i="x",r="y",s=-2*Math.PI/3),f(-n[i])?c=Math.PI:n[r]&&(c=-n[r]*t[o]*Math.PI/2),a=f(-t[o])?Math.PI:0;var p=new e.Quaternion,u=new e.Quaternion,A=new e.Vector3(1,1,1);A.normalize(),u.setFromAxisAngle(A,s),p.setFromAxisAngle(t,c),u.multiply(p),p.setFromAxisAngle(n,a),u.multiply(p),b(u),this.triadScene.setRotationFromQuaternion(u)}},this.getSprites=function(){return c}}function x(n,o,i,f,x){var y=this;m.call(this);var V=o,M=o.camera;o.setCube(this);const B=V.center.clone().sub(M.position).normalize(),P=V.sceneFrontDirection.clone().cross(V.sceneUpDirection),E=B.dot(V.sceneUpDirection),T=B.dot(V.sceneFrontDirection),I=B.dot(P);1-Math.abs(E)0?"bottom":"top":1-Math.abs(T)0?"front":"back":1-Math.abs(Math.abs(I))0?"left":"right":y.currentFace="front",y.showTriad=x&&x.showTriad,y.localizeResourcePath=f;var k,S,R,F,D,z,L,Y,O,U,q,Q,N,W=["top,front","top right","top,left","top,back","bottom,front","bottom,right","bottom,left","bottom,back","left,front","front,right","right,back","back,left"],X=["front,top,right","back,top,right","front,top,left","back,top,left","front,bottom,right","back,bottom,right","front,bottom,left","back,bottom,left"],G=["Go Home",null,"Orthographic","Perspective","Perspective with Ortho Faces",null,"Set current view as Home","Focus and set as Home","Reset Home",null,"Set current view as Front","Set current view as Top","Reset orientation"],H=[!0,null,!0,!0,!0,null,!0,!0,!0,null,!0,!0,!0],Z=[null,null,function(){return!V.orthographicFaces&&!M.isPerspective},function(){return!V.orthographicFaces&&M.isPerspective},function(){return V.orthographicFaces},null,null,null,null,null,null,null,null],K=[];y.pcam=new e.PerspectiveCamera(45,1,1,2e3),y.ocam=new e.OrthographicCamera(-265,265,265,-265,-1e3,1e3),y.ocam.fov=y.pcam.fov,y.ocam.aspect=y.pcam.aspect,y.camera=M.isPerspective?y.pcam:y.ocam,y.camera.position.copy(M.position),y.center=new e.Vector3(0,0,0),y.camera.lookAt(y.center);var j,J,_,$,ee,te,ne,oe=[],ie=[],re=[],ae=[],se=[],ce=null,pe=null,ue=null,Ae=0,le=0,he=!0,de=!1,me=!1,we=!1,ve=-1!=navigator.userAgent.search("Chrome"),fe=-1!=navigator.platform.search("Win32"),Ce=!1,ge=!1,be=null,xe=[];this.width=0,this.height=0,this.animSpeed=500,this.animate=!0,this.compass=!1,this.viewScaleFactorCompass=1.5,this.viewScale=1,this.draggable=!0,this.wantHomeButton=!1,this.wantRollArrows=!0,this.wantContextMenu=!0,this.inactiveOpacity=.5;var ye=function(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top,w:t.width,h:t.height}},Ve=function(e){e.preventDefault(),e.stopPropagation();var t=y.getDocument();me=t.pointerLockElement===i||t.mozPointerLockElement===i||t.webkitPointerLockElement===i},Me=function(){y.renderCompass?(y.rollMesh.position.set(Ae+30,Ae+30,0),y.rollLeftMesh.position.set(Ae+30,1.5*Ae,.1),y.rollRightMesh.position.set(1.5*Ae,Ae+30,.1),y.contextMesh.position.set(1.6*Ae,-1.6*Ae,0)):(y.rollMesh.position.set(.5*Ae+20,.5*Ae+20,0),y.rollLeftMesh.position.set(.5*Ae+20,Ae+20,.1),y.rollRightMesh.position.set(Ae+20,.5*Ae+20,.1),y.contextMesh.position.set(Ae,-Ae,0))},Be=function(){V.navApi.isActionEnabled("orbit")&&(i.style.opacity="1.0",ge=!1),requestAnimationFrame(y.render)},Pe=function(e){if(ge||V.viewCubeMenuOpen||!V.navApi.isActionEnabled("orbit"))V.navApi.isActionEnabled("orbit")&&(i.style.opacity=1);else{var t=Math.max(4*Math.abs((e.clientX-ne.x)/ne.w-.5)-1,0),n=Math.max(4*Math.abs((e.clientY-ne.y)/ne.h-.5)-1,0),o=Math.max(0,Math.min(Math.sqrt(t*t+n*n),1));i.style.opacity=1-o*(1-y.inactiveOpacity)}},Ee=function(){V.viewCubeMenuOpen||(i.style.opacity=y.inactiveOpacity,ge=!0,requestAnimationFrame(y.render))},Te=function(t){var n=new Image,o=y.getWindow(),i=h.getUseCredentials()&&(-1===t.indexOf("://")||-1!==t.indexOf(o.location.host));n.crossOrigin=i?"use-credentials":"anonymous";var r=new e.Texture(n);return n.onload=function(){r.needsUpdate=!0,++le>=11&&requestAnimationFrame(y.render)},n.src=t,r},Ie=function(){var e,t,n=[],o=[];for(n[0]=Qe(0,0),n[1]=Qe(0,Math.PI/2),n[2]=Qe(0,-Math.PI/2),n[3]=Qe(0,Math.PI),n[4]=Qe(Math.PI/2,0),n[5]=Qe(Math.PI/2,Math.PI/2),n[6]=Qe(Math.PI/2,-Math.PI/2),n[7]=Qe(Math.PI/2,Math.PI),o[0]=qe(0,0,0),o[1]=qe(0,Math.PI/2,0),o[2]=qe(0,-Math.PI/2,0),o[3]=qe(0,Math.PI,0),o[4]=qe(Math.PI/2,0,0),o[5]=qe(Math.PI/2,Math.PI/2,0),o[6]=qe(Math.PI/2,-Math.PI/2,0),o[7]=qe(Math.PI/2,Math.PI,0),o[8]=qe(0,0,Math.PI/2),o[9]=qe(0,0,-Math.PI/2),o[10]=qe(-Math.PI/2,0,-Math.PI/2),o[11]=qe(-Math.PI,0,-Math.PI/2),oe.push(Ue(0,0)),oe[0].name="front",re.push(oe[0]),se.push(oe[0]),R.add(oe[0]),oe.push(Ue(0,Math.PI/2)),oe[1].name="right",re.push(oe[1]),se.push(oe[1]),R.add(oe[1]),oe.push(Ue(0,Math.PI)),oe[2].name="back",re.push(oe[2]),se.push(oe[2]),R.add(oe[2]),oe.push(Ue(0,-Math.PI/2)),oe[3].name="left",re.push(oe[3]),se.push(oe[3]),R.add(oe[3]),oe.push(Ue(Math.PI/2,0)),oe[4].name="bottom",re.push(oe[4]),se.push(oe[4]),R.add(oe[4]),oe.push(Ue(-Math.PI/2,0)),oe[5].name="top",re.push(oe[5]),se.push(oe[5]),R.add(oe[5]),e=oe.length,t=0;t0?(n.clientX=e.touches[0].clientX,n.clientY=e.touches[0].clientY,n.pageX=e.touches[0].pageX,n.pageY=e.touches[0].pageY,n.screenX=e.touches[0].screenX,n.screenY=e.touches[0].screenY,n.movementX=n.screenX-t.prevX,n.movementY=n.screenY-t.prevY,n.which=V.navApi.getUseLeftHandedInput()?3:1):n=t.prevCoords:(n.clientX=e.clientX,n.clientY=e.clientY,n.pageX=e.pageX,n.pageY=e.pageY,n.screenX=e.screenX,n.screenY=e.screenY,n.which=e.which,de?(n.movementX=e.movementX||e.mozMovementX||e.webkitMovementX||0,n.movementY=e.movementY||e.mozMovementY||e.webkitMovementY||0):(n.movementX=n.screenX-t.prevX,n.movementY=n.screenY-t.prevY)),t.prevX=n.screenX,t.prevY=n.screenY,t.prevCoords=n,n}var Fe=function(e){if(e.preventDefault(),e.stopPropagation(),V.navApi.isActionEnabled("orbit")&&!V.currentlyAnimating){var t,n=Re(e,y);ne=ye(i),i.removeEventListener("mousemove",Ye,!1),y.addDocumentEventListener("mouseup",Le,!1),y.addDocumentEventListener("touchend",Le,!1),V.navApi.getUsePivotAlways()||(V.pivot.copy(V.center),V.navApi.setPivotPoint(V.center),V.navApi.setPivotSetFlag(!1)),V.startInteraction(n.pageX,n.pageY);var o=V.navApi.getUseLeftHandedInput()?1:3;n.which!==o&&(y.animSpeed<=0?p.error("animSpeed cannot be 0 or less, use ViewCube.animate flag to turn on and off animation",A(l.VIEWER_INTERNAL_ERROR)):(t=Se(n,ne),ke(t,y.camera,se).length>0&&(Xe(),y.draggable&&(y.addDocumentEventListener("mousemove",De,!1),y.addDocumentEventListener("touchmove",De,!1),de&&(i.requestPointerLock(),we=ve&&fe)))))}},De=function(t){if(t.preventDefault(),t.stopPropagation(),y.animSpeed<=0)return y.removeDocumentEventListener("mousemove",De,!1),y.removeDocumentEventListener("touchmove",De,!1),void p.error("animSpeed cannot be 0 or less",A(l.VIEWER_INTERNAL_ERROR));if(!V.currentlyAnimating){var n=Re(t,y);de&&we&&(we=!1,n.movementX=n.movementY=0),me&&(n.movementX>300||n.movementY>300)&&(n.movementX=0,n.movementY=0),n.movementX!==n.movementY||0!==n.movementX?(he=!1,Ce=!0,V.showPivot(!0),V.currentCursor=new e.Vector2(n.pageX,n.pageY),V.orbit(V.currentCursor,V.startCursor,new e.Vector3(-n.movementX,n.movementY,0),V.startState),y.camera.lookAt(y.center),requestAnimationFrame(y.render)):V.currentlyAnimating=!1}},ze=function(e){(e||(y.removeDocumentEventListener("mouseup",Le,!1),y.removeDocumentEventListener("touchend",Le,!1)),y.removeDocumentEventListener("mousemove",De,!1),y.removeDocumentEventListener("touchmove",De,!1),i.addEventListener("mousemove",Ye,!1),me)&&y.getDocument().exitPointerLock()};this.registerOnViewTypeChangedCb=function(e){e instanceof Function&&(be=e)},this.setViewType=function(e){switch(e){case r.VIEW_TYPES.ORTHOGRAPHIC:y.camera=y.ocam;break;case r.VIEW_TYPES.PERSPECTIVE:y.camera=y.pcam;break;case r.VIEW_TYPES.PERSPECTIVE_ORTHO_FACES:y.camera=he?y.ocam:y.pcam;break;default:return}be&&be(e)};var Le=function(e){var t,n,o;if(e.preventDefault(),e.stopPropagation(),V.currentlyAnimating||Ce)return V.endInteraction(),V.showPivot(!1),Ce=!1,void ze(!1);var r=Re(e,y);if(V.viewCubeMenuOpen){var a=r.clientX-ne.x,s=r.clientY-ne.y;if(V.menuOrigin.x<=a&&a<=V.menuOrigin.x+V.menuSize.x&&V.menuOrigin.y<=s&&s<=V.menuOrigin.y+V.menuSize.y){var c=Math.floor((s-5-V.menuOrigin.y)/25),u=function(e){p.track({name:"navigation/"+e,aggregate:"count"})};switch(c){case 0:u("home"),V.goHome();break;case 1:u("setortho"),y.setViewType(c);break;case 2:u("setpersp"),y.setViewType(c);break;case 3:y.setViewType(c);break;case 4:u("sethome"),V.setCurrentViewAsHome(!1);break;case 5:u("focushome"),V.setCurrentViewAsHome(!0);break;case 6:u("resethome"),V.resetHome();break;case 7:u("setfront"),V.setCurrentViewAsFront();break;case 8:u("settop"),V.setCurrentViewAsTop();break;case 9:V.resetOrientation()}}return V.viewCubeMenuOpen=!1,V.removeDropdownMenu(i),(r.clientXne.w+ne.x||r.clientYne.h+ne.y)&&Ee(),y.mouseMoveSave&&y.processMouseMove(y.mouseMoveSave),V.endInteraction(),void ze(!1)}var A=V.navApi.getUseLeftHandedInput()?1:3;if(r.which===A)return V.viewCubeMenuOpen=!0,V.drawDropdownMenu(G,H,Z,r.clientX,r.clientY,i,ne),void ze(!0);var l=Se(r,ne);if(t=ke(l,y.camera,se),n=ke(l,Y,ie),o=ke(l,Y,ae),n.length>0&&he){for(var h,d=["top","bottom","right","left","front","back"],m=V.getOrientation(),w={front:{up:[0,1,2,3],right:[2,3,1,0],down:[1,0,3,2],left:[3,2,0,1]},right:{up:[0,1,5,4],right:[5,4,1,0],down:[1,0,4,5],left:[4,5,0,1]},left:{up:[0,1,4,5],right:[4,5,1,0],down:[1,0,5,4],left:[5,4,0,1]},back:{up:[0,1,3,2],right:[3,2,1,0],down:[1,0,2,3],left:[2,3,0,1]},top:{up:[5,4,2,3],right:[2,3,4,5],down:[4,5,3,2],left:[3,2,5,4]},bottom:{up:[4,5,2,3],right:[2,3,5,4],down:[5,4,3,2],left:[3,2,4,5]}}[y.currentFace][m],v=0;v<4;v++)if(n[0].object===ie[v]){h=d[w[v]];break}V.calculateCubeTransform(h),y.currentFace=h,V.elapsedTime=0,V.sphericallyInterpolateTransition()}if(o.length>0){if(V.elapsedTime=0,y.wantHomeButton&&o[0].object===ae[ee])return V.goHome(),void ze(!1);if(y.wantContextMenu&&o[0].object===ae[te])return V.viewCubeMenuOpen=!0,V.drawDropdownMenu(G,H,Z,r.clientX,r.clientY,i,ne),void ze(!0);if(y.wantRollArrows&&he&&(o[0].object===ae[J]||o[0].object===ae[_])){var f=o[0].object===ae[_],C={center:V.center.clone(),position:M.position.clone(),pivot:M.pivot.clone(),fov:M.fov,worldUp:V.sceneUpDirection.clone(),isOrtho:!1===M.isPerspective},g=V.center.clone().sub(M.position).normalize();f?C.up=M.up.clone().cross(g):(C.up=M.up.clone().multiplyScalar(-1),C.up.cross(g)),C.up.normalize(),V.goToView(C)}}if(t.length>0){let n=t[0].object.name;y.mouseMoveSave=e,y.cubeRotateTo(n)}ze(!1)};this.cubeRotateTo=function(e){y.currentFace=e,V.orthographicFaces&&-1!==y.currentFace.indexOf(",")&&V.setCameraOrtho(!1),V.calculateCubeTransform(y.currentFace),V.elapsedTime=0,V.sphericallyInterpolateTransition((function(){y.mouseMoveSave&&y.processMouseMove(y.mouseMoveSave)}))},this.processMouseMove=function(e){var t,n,o;if(V.viewCubeMenuOpen||V.currentlyAnimating)y.mouseMoveSave=e;else{y.mouseMoveSave=null;var i=Re(e,y),r=Se(i,ne);if(t=ke(r,y.camera,re),n=ke(r,Y,ie),o=ke(r,Y,ae),ce&&!Ce&&(ce.material.color.setHex(g),ce=null,requestAnimationFrame(y.render)),n.length>0&&!Ce){ce=n[0].object;for(var a=j.children.length;--a>=0;)if(ce===ie[a]){(ce=j.children[a]).material.color.setHex(45055);break}requestAnimationFrame(y.render)}pe&&!Ce&&(pe.material.opacity=0,pe=null,requestAnimationFrame(y.render)),t.length>0&&!Ce&&((pe=t[0].object).material.opacity=.3,requestAnimationFrame(y.render)),o.length>0&&!Ce?ue!==o[0].object&&(y.wantHomeButton&&o[0].object===ae[ee]?(ue=o[0].object,ae[ee].material.map=xe[0]):y.wantRollArrows&&o[0].object===ae[J]?(ue=o[0].object,ae[$].material.map=xe[1]):y.wantRollArrows&&o[0].object===ae[_]?(ue=o[0].object,ae[$].material.map=xe[2]):y.wantContextMenu&&o[0].object===ae[te]?(ue=o[0].object,ae[te].material.map=xe[6]):y.wantHomeButton&&ue===ae[ee]?(ue=null,ae[ee].material.map=xe[3]):!y.wantRollArrows||ue!==ae[J]&&ue!==ae[_]&&ue!==ae[$]?y.wantContextMenu&&ue===ae[te]&&(ue=null,ae[te].material.map=xe[5]):(ue=null,ae[$].material.map=xe[4]),requestAnimationFrame(y.render)):null===ue||Ce||(y.wantHomeButton&&ue===ae[ee]?(ue=null,ae[ee].material.map=xe[3]):!y.wantRollArrows||ue!==ae[J]&&ue!==ae[_]&&ue!==ae[$]?y.wantContextMenu&&ue===ae[te]&&(ue=null,ae[te].material.map=xe[5]):(ue=null,ae[$].material.map=xe[4]),requestAnimationFrame(y.render))}};var Ye=function(e){V.navApi.isActionEnabled("orbit")&&y.processMouseMove(e)},Oe=function(){ne=ye(i),y.width=i.offsetWidth,y.height=i.offsetHeight,y.pcam.aspect=y.ocam.aspect=y.width/y.height,y.pcam.updateProjectionMatrix(),y.ocam.updateProjectionMatrix(),y.camera.topFov=y.camera.bottomFov=y.camera.fov/2,y.camera.leftFov=y.camera.rightFov=y.camera.aspect*y.camera.fov/2,y.pcam.aspect=y.ocam.aspect=y.camera.aspect,y.pcam.topFov=y.ocam.topFov=y.camera.topFov,y.pcam.bottomFov=y.ocam.bottomFov=y.camera.bottomFov,y.pcam.leftFov=y.ocam.leftFov=y.camera.leftFov,y.pcam.rightFov=y.ocam.rightFov=y.camera.rightFov;const e=y.getWindow().devicePixelRatio;y.renderer.getPixelRatio()!==e?y.renderer.setPixelRatio(e):y.renderer.setSize(y.width,y.height),requestAnimationFrame(y.render)},Ue=function(t,n){var o,i=Math.floor(.45*Ae/2)||45,r=Math.floor(.6*Ae/2)||60,a=i+r,s=new e.BufferGeometry,c=new e.Vector3(0,0,0),p=new e.Vector3(r,-r,a),u=new e.Vector3(r,r,a),A=new e.Vector3(-r,r,a),l=new e.Vector3(-r,-r,a),h=new Float32Array([c.x,c.y,c.z,p.x,p.y,p.z,u.x,u.y,u.z,A.x,A.y,A.z,l.x,l.y,l.z]);s.setAttribute("position",new e.BufferAttribute(h,3));return s.index=new e.BufferAttribute(new Uint16Array([1,2,3,1,3,4]),1),s.applyMatrix4((new e.Matrix4).makeRotationX(t)),s.applyMatrix4((new e.Matrix4).makeRotationY(n)),s.computeVertexNormals(),o=new v({opacity:0,color:45055,transparent:!0}),new e.Mesh(s,o)},qe=function(t,n,o){var i,r=Math.floor(.45*Ae/2)||45,a=Math.floor(.6*Ae/2)||60,s=r+a,c=new e.BufferGeometry,p=new e.Vector3(a,s,s),u=new e.Vector3(-a,s,s),A=new e.Vector3(-a,a,s),l=new e.Vector3(a,a,s),h=new e.Vector3(a,s,a),d=new e.Vector3(-a,s,a),m=new e.Vector3(-a,s,s),w=new e.Vector3(a,s,s),f=new Float32Array([p.x,p.y,p.z,u.x,u.y,u.z,A.x,A.y,A.z,l.x,l.y,l.z,h.x,h.y,h.z,d.x,d.y,d.z,m.x,m.y,m.z,w.x,w.y,w.z]);c.setAttribute("position",new e.BufferAttribute(f,3));return c.index=new e.BufferAttribute(new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7]),1),c.applyMatrix4((new e.Matrix4).makeRotationX(t)),c.applyMatrix4((new e.Matrix4).makeRotationY(n)),c.applyMatrix4((new e.Matrix4).makeRotationZ(o)),c.computeVertexNormals(),i=new v({opacity:0,color:45055,transparent:!0}),new e.Mesh(c,i)},Qe=function(t,n){var o,i=Math.floor(.45*Ae/2)||45,r=Math.floor(.6*Ae/2)||60,a=i+r,s=new e.BufferGeometry,c=new e.Vector3(a,a,a),p=new e.Vector3(r,a,a),u=new e.Vector3(r,r,a),A=new e.Vector3(a,r,a),l=new e.Vector3(a,a,r),h=new e.Vector3(a,a,a),d=new e.Vector3(a,r,a),m=new e.Vector3(a,r,r),w=new e.Vector3(a,a,a),f=new e.Vector3(a,a,r),C=new e.Vector3(r,a,r),g=new e.Vector3(r,a,a),b=new Float32Array([c.x,c.y,c.z,p.x,p.y,p.z,u.x,u.y,u.z,A.x,A.y,A.z,l.x,l.y,l.z,h.x,h.y,h.z,d.x,d.y,d.z,m.x,m.y,m.z,w.x,w.y,w.z,f.x,f.y,f.z,C.x,C.y,C.z,g.x,g.y,g.z]);s.setAttribute("position",new e.BufferAttribute(b,3));return s.index=new e.BufferAttribute(new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11]),1),s.applyMatrix4((new e.Matrix4).makeRotationX(t)),s.applyMatrix4((new e.Matrix4).makeRotationY(n)),s.computeVertexNormals(),o=new v({opacity:0,color:45055,transparent:!0}),new e.Mesh(s,o)},Ne=function(t){var n=V.cubeFront.clone(),o=V.sceneUpDirection.clone(),i=n.clone().cross(o);o.copy(i).cross(n),n.normalize(),o.normalize(),i.normalize();var r=new e.Vector3(n.x,o.x,i.x).multiplyScalar(t.x);return r.add(new e.Vector3(n.y,o.y,i.y).multiplyScalar(t.y)),r.add(new e.Vector3(n.z,o.z,i.z).multiplyScalar(t.z)),r};this.render=function(){y.camera=M.isPerspective?y.pcam:y.ocam;var t=y.compass?y.viewScaleFactorCompass*y.viewScale:y.viewScale,n=V.center.clone().sub(M.position).normalize(),o=M.up.normalize(),i=new e.Matrix4;n=Ne(n),o=Ne(o),y.camera.position.copy(n),y.camera.position.multiplyScalar(-t/y.camera.position.length()),y.camera.up=o.normalize(),y.camera.lookAt(y.center),We();var r=y.renderTriad&&C(V.sceneUpDirection)&&C(V.sceneFrontDirection),a=y.renderer;if(a){for(var s=0;s{i.drawImage(n,0,0,y.width,y.height),r.URL.revokeObjectURL(n.src),o.toBlob((t=>{e(t)}),"image/png")}}),"image/png")}))};var We=function(){!(he=V.isFaceView())||ge||V.currentlyAnimating?Xe():Ge(),ge?He():Ze(),ge?Ke():je()},Xe=function(){z.remove(j),ae[$].material.opacity=0,ae[te].material.opacity=0},Ge=function(){z.add(j);var e=y.wantRollArrows?1:0;ae[$].material.opacity=e,ae[te].material.opacity=e},He=function(){N.material.opacity=u()?1:0},Ze=function(){N.material.opacity=y.wantContextMenu?1:0},Ke=function(){q.material.opacity=0},je=function(){q.material.opacity=y.wantHomeButton?1:0};this.refreshCube=function(){Oe()},this.setSize=function(e,t){if(y.width=e,y.height=t,i.children.length>1)for(var n=1;n0&&void 0!==arguments[0])||arguments[0];this.initCompass(),y.renderCompass!==e&&(y.prevRenderCompass=y.renderCompass,y.renderCompass=e,Me(),requestAnimationFrame(y.render))},this.setCompassRotation=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.initCompass();const t=e-y.northAngle;0!==t&&(y.northAngle=e,y.compassPointerMeshUp.rotateZ(t),y.compassPointerMeshDown.rotateZ(t),requestAnimationFrame(y.render))},this.initCompass=function(){if(y.hasCompass)return;y.hasCompass=!0,y.northAngle=0;let t="res/textures/",n=Autodesk.Viewing.Private.getResourceUrl;L=new e.Scene;const o=2.9*Ae;let i=new e.PlaneBufferGeometry(o,o,2,2),r=new v({color:0,side:e.DoubleSide,map:Te(n(t+"VCcompass-pointer-b.png")),transparent:!0}),a=new v({color:0,side:e.DoubleSide,map:Te(n(t+"VCcompass-base.png")),transparent:!0});const s=new e.Mesh(i,r),c=new e.Mesh(i,r),p=new e.Mesh(i,a);y.compassPointerMeshUp=s,y.compassPointerMeshDown=c;const u=-Math.PI/2;p.rotateX(u),s.rotateX(u),c.rotateX(u);const A=.5*-Ae-(Math.floor(.25*Ae/2)||25);p.translateZ(A),s.translateZ(A+.1),c.translateZ(A-.1),L.add(p),L.add(s),L.add(c),requestAnimationFrame(y.render)},this.showControls=function(e){e||void 0===e?Be():Ee()},this.dtor=function(){this.renderer=null,be=null},this.refreshTexture=function(n){var o=Autodesk.Viewing.Private.getResourceUrl,i=this.localizeResourcePath||"res/textures/",r=(new a).load(o(i+"VCcrossRGBA8small.dds"),n);r.minFilter=r.maxFilter=e.LinearFilter,this.texture&&this.texture.dispose(),this.texture=r;var c=this.material;c||((c=s(t)).depthWrite=!1,this.material=c);return c.uniforms.tCube.value=r,c},this.localize=function(){const e=d();this.localizeResourcePath=e.LOCALIZATION_REL_PATH,this.refreshTexture((()=>{requestAnimationFrame(this.render)}))},function(){var t=i.getBoundingClientRect();y.width=t.width,y.height=t.height,ne=ye(i),(Y=new e.PerspectiveCamera(70,y.height/y.width,1,1e4)).position.set(0,0,500),k=new e.Scene,S=new e.Scene,R=new e.Scene,F=new e.Scene,z=new e.Scene,he=!0,Ae=160,y.viewScale=4*Ae;var n=y.refreshTexture(),o=e.LinearFilter,r=Autodesk.Viewing.Private.getResourceUrl,a="res/textures/",s=new e.BoxGeometry(Ae,Ae,Ae,4,4,4),u=new e.BoxGeometry(Ae+1,Ae+1,Ae+1,4,4,4);(O=new e.Mesh(s,n)).position.set(0,0,0),S.add(O);var A=Te(r(a+"VCedge1.png"));A.minFilter=A.maxFilter=o,(U=new e.Mesh(u,new v({map:A,transparent:!0}))).position.set(0,0,0),F.add(U),D=new b(Ae+20),Array.prototype.push.apply(K,D.getSprites());var l=Ae+5,h=new e.BufferGeometry;const d=new Float32Array([-30,0,0,30,0,0,0,-30,0]);h.setAttribute("position",new e.BufferAttribute(d,3));h.index=new e.BufferAttribute(new Uint16Array([1,0,2]),1);var m=new v({color:g,depthTest:!1,depthWrite:!1,transparent:!1,opacity:1}),w=new v({color:g,depthTest:!1,depthWrite:!1,transparent:!1,opacity:1}),f=new v({color:g,depthTest:!1,depthWrite:!1,transparent:!1,opacity:1}),C=new v({color:g,depthTest:!1,depthWrite:!1,transparent:!1,opacity:1}),x=new e.PlaneBufferGeometry(.5*Ae,.3*Ae,2,2),M=new v({transparent:!0,opacity:0}),B=new e.Mesh(h,m),P=new e.Mesh(x,M);B.position.set(0,l,0),P.position.set(0,.9*l,.1);var E=new e.Mesh(h,w),T=new e.Mesh(x,M);E.position.set(0,-l,0),T.position.set(0,.9*-l,.1),E.rotation.z+=Math.PI,T.rotation.z+=Math.PI;var I=new e.Mesh(h,f),L=new e.Mesh(x,M);I.position.set(l,0,0),L.position.set(.9*l,0,.1),I.rotation.z-=Math.PI/2,L.rotation.z-=Math.PI/2;var W=new e.Mesh(h,C),X=new e.Mesh(x,M);W.position.set(-l,0,0),X.position.set(.9*-l,0,.1),W.rotation.z+=Math.PI/2,X.rotation.z+=Math.PI/2,(j=new e.Object3D).position.set(0,0,0),j.add(B),j.add(E),j.add(I),j.add(W),z.add(P),z.add(T),z.add(L),z.add(X),z.add(j),ie.push(P),ie.push(T),ie.push(L),ie.push(X);var G=new e.PlaneBufferGeometry(Ae/3,Ae/3,2,2),H=new v({map:Te(r(a+"VChome.png")),transparent:!0});(q=new e.Mesh(G,H)).position.set(-Ae,Ae,0),ee=ae.length,z.add(q),ae.push(q);var Z=new e.PlaneBufferGeometry(1.5*Ae,1.5*Ae,2,2),oe=new v({map:Te(r(a+"VCarrows.png")),depthTest:!1,depthWrite:!1,transparent:!0}),re=new e.Mesh(Z,oe);y.rollMesh=re;var se=new e.PlaneBufferGeometry(.6*Ae,.45*Ae,2,2),ce=new v({transparent:!0,opacity:0}),pe=new e.Mesh(se,ce);y.rollLeftMesh=pe;var ue=new e.PlaneBufferGeometry(.45*Ae,.6*Ae,2,2),le=new v({transparent:!0,opacity:0}),me=new e.Mesh(ue,le);y.rollRightMesh=me,z.add(re),z.add(pe),z.add(me),J=ae.length,ae.push(pe),_=ae.length,ae.push(me),$=ae.length,ae.push(re);var we=new e.PlaneBufferGeometry(Ae/2.3,Ae/2.3,2,2),ve=new v({map:Te(r(a+"VCcontext.png")),transparent:!0,depthTest:!1,depthWrite:!1});N=new e.Mesh(we,ve),y.contextMesh=N,te=ae.length,z.add(N),ae.push(N),Me();var fe=new e.BufferGeometry;const Ce=Math.floor(.2*Ae/2)||20;let ge=new Float32Array([0,0,0,-Ae/2,-Ae/2-Ce,-Ae/2,Ae/2,-Ae/2-Ce,-Ae/2,Ae/2,-Ae/2-Ce,Ae/2,-Ae/2,-Ae/2-Ce,Ae/2]);fe.setAttribute("position",new e.BufferAttribute(ge,3));var be;if(fe.index=new e.BufferAttribute(new Uint16Array([4,3,2,4,2,1]),1),be=new v({color:0,transparent:!0,opacity:.5}),Q=new e.Mesh(fe,be),k.add(Q),Ie(),"CANVAS"===V.renderer.toUpperCase()?y.renderer=new e.CanvasRenderer:"WEBGL"===V.renderer.toUpperCase()?(y.renderer=new c({alpha:!0,antialias:!1}),y.renderer.name="ViewCubeRenderer"):(p.warn("Incorrect use of Autocam.renderer property"),y.renderer=new e.CanvasRenderer),y.useTransparency(!0),y.setSize(y.width,y.height),y.camera.topFov=y.camera.bottomFov=y.camera.fov/2,y.camera.leftFov=y.camera.rightFov=y.camera.aspect*y.camera.fov/2,y.pcam.topFov=y.ocam.topFov=y.camera.topFov,y.pcam.bottomFov=y.ocam.bottomFov=y.camera.bottomFov,y.pcam.leftFov=y.ocam.leftFov=y.camera.leftFov,y.pcam.rightFov=y.ocam.rightFov=y.camera.rightFov,y.renderer.autoClear=!1,y.renderer.setSize(y.width,y.height),y.renderer.sortObjects=!1,i.appendChild(y.renderer.domElement),i.addEventListener("touchstart",Fe,!1),i.addEventListener("mousedown",Fe,!1),i.addEventListener("mousemove",Ye,!1),de=!1){var Be=y.getDocument();Be.exitPointerLock=Be.exitPointerLock||Be.mozExitPointerLock||Be.webkitExitPointerLock,i.requestPointerLock=i.requestPointerLock||i.mozRequestPointerLock||i.webkitRequestPointerLock,y.addDocumentEventListener("pointerlockchange",Ve,!1),y.addDocumentEventListener("mozpointerlockchange",Ve,!1),y.addDocumentEventListener("webkitpointerlockchange",Ve,!1)}xe.push(Te(r(a+"VChomeS.png"))),xe.push(Te(r(a+"VCarrowsS0.png"))),xe.push(Te(r(a+"VCarrowsS1.png"))),xe.push(Te(r(a+"VChome.png"))),xe.push(Te(r(a+"VCarrows.png"))),xe.push(Te(r(a+"VCcontext.png"))),xe.push(Te(r(a+"VCcontextS.png")))}()}r.ViewCube=x;var y=n(5072),V=n.n(y),M=n(7825),B=n.n(M),P=n(7659),E=n.n(P),T=n(5056),I=n.n(T),k=n(540),S=n.n(k),R=n(1113),F=n.n(R),D=n(4962),z={};z.styleTagTransform=F(),z.setAttributes=I(),z.insert=E().bind(null,"head"),z.domAPI=B(),z.insertStyleElement=S();V()(D.A,z);D.A&&D.A.locals&&D.A.locals;const L=Autodesk.Viewing,Y=Autodesk.Viewing.Private,O=L.getGlobal();function U(e,t){L.Extension.call(this,e,t),this.container=null,this.cube=null,this.viewcube=null,this.homeViewContainer=null,this._created=!1,this._initTriadVisibility=!1,this.refreshCube=this.refreshCube.bind(this),this.displayViewCube=this.displayViewCube.bind(this),this.setViewType=this.setViewType.bind(this),this._updateView=this._updateView.bind(this),this._onModelAdded=this._onModelAdded.bind(this)}U.prototype=Object.create(Autodesk.Viewing.Extension.prototype),U.prototype.constructor=U,Object.assign(U.prototype,{load:function(){if(this.create(),this._displayViewCube(this.viewer.impl.is2d),this.localize(),this.viewer.dispatchEvent({type:L.VIEW_CUBE_CREATED_EVENT}),this.viewer.addEventListener(L.VIEWER_RESIZE_EVENT,this.refreshCube),this.viewer.prefs.addListeners(Y.Prefs3D.VIEW_CUBE,this.displayViewCube),this.viewer.prefs.addListeners(Y.Prefs3D.VIEW_TYPE,this.setViewType),this.viewer.model){const e=this.viewer.getVisibleModels().filter((e=>!!this.viewer.impl.is2d===e.is2d()));this._onModelAdded({model:e[0]})}return this.viewer.addEventListener(L.MODEL_ADDED_EVENT,this._onModelAdded),this._setDefaultView(),!0},unload:function(){return this.viewer.prefs.removeListeners(Y.Prefs3D.VIEW_CUBE,this.displayViewCube),this.viewer.prefs.removeListeners(Y.Prefs3D.VIEW_TYPE,this.setViewType),this.viewer.removeEventListener(L.VIEWER_RESIZE_EVENT,this.refreshCube),this.viewer.removeEventListener(L.MODEL_ADDED_EVENT,this._onModelAdded),this.container&&(this.viewer.container.removeChild(this.container),this.viewcube=null),this.cube&&(this.cube.dtor(),this.cube=null),this.homeViewContainer=null,this.hideHomeViewMenu=null,this.viewer=null,!0},create:function(){this._created||(this.initContainer(),this.initHomeButton(),this._created=!0)},initContainer:function(){var e=this.getDocument();this.container=e.createElement("div"),this.container.className="viewcubeWrapper",this.viewer.container.appendChild(this.container)},initHomeButton:function(){if(!this.homeViewContainer){var e=this.getDocument().createElement("div");e.className="homeViewWrapper",this.container.appendChild(e),this.homeViewContainer=e;var t=this;e.addEventListener("click",(function(){t.viewer.navigation.setRequestHomeView(!0)}))}},setVisible:function(e){this.container.style.display=e?"block":"none"},_setDefaultView:function(){this.viewer.impl.is2d||this.viewer.impl.getModelCamera(this.viewer.model)||this.viewer.prefs.dispatchEvent(Y.Prefs3D.VIEW_TYPE)},_updateView:function(e){if(!this.viewer.impl.is2d&&!this.viewer.prefs.set(Y.Prefs3D.VIEW_TYPE,e)){e!==this.viewer.autocam.getViewType()&&this.viewer.prefs.dispatchEvent(Y.Prefs3D.VIEW_TYPE)}},setViewType:function(e){!this.viewer.impl.is2d&&this.cube&&this.cube.setViewType(e)},showTriad:function(e){this.cube?this.cube.showTriad(e):this._initTriadVisibility=e},setViewCube:function(e){this.cube&&this.cube.cubeRotateTo(e)},displayHomeButton:function(e){this.homeViewContainer&&(this.homeViewContainer.style.display=e?"":"none")},displayViewCube:function(e,t){if(t&&this.viewer.prefs.set(Y.Prefs3D.VIEW_CUBE,e),!e||this.cube||this.viewer.impl.is2d){if(!this.cube)return void this._positionHomeButton()}else{var n=this.getDocument();this.viewcube=n.createElement("div"),this.viewcube.className="viewcube",this.container.appendChild(this.viewcube),this.cube=new x("cube",this.viewer.autocam,this.viewcube,O.LOCALIZATION_REL_PATH),this.cube.registerOnViewTypeChangedCb(this._updateView),this.cube.setGlobalManager(this.globalManager),this.container.appendChild(this.homeViewContainer),this._initTriadVisibility&&this.showTriad(!0),delete this._initTriadVisibility}this.viewcube.style.display=e?"block":"none",this._positionHomeButton(),e&&this.viewer.autocam.refresh()},localize:function(){this.cube&&this.cube.localize()},showCompass:function(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.cube&&this.cube.showCompass(e)},setCompassRotation:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.cube&&this.cube.setCompassRotation(e)},_initCompass:function(e){var t;const n=e&&e.getData(),o=n&&n.metadata;let i=o&&o["world north vector"];if(i=i&&i.XYZ,i=i&&new THREE.Vector3(i[0],i[1],i[2]),!i)return;const r=o&&o["custom values"],a=this.viewer.autocam.sceneFrontDirection.clone(),s=this.viewer.autocam.sceneUpDirection.clone();let c=new THREE.Vector3;c.crossVectors(a,i);const p=i.angleTo(a)*(c.dot(s)<0?-1:1);let u=r&&r.angleToTrueNorth||0;u*=Math.PI/180;const A=null!=n&&null!==(t=n.loadOptions)&&void 0!==t&&t.applyRefPoint?0:p+u;this.cube.initCompass(),this.setCompassRotation(A),this.showCompass(!!this.viewer.prefs.get(Y.Prefs3D.VIEW_CUBE_COMPASS))},_displayViewCube:function(e){const t=!e&&this.viewer.prefs.get(Y.Prefs3D.VIEW_CUBE);this.displayViewCube(t)},_onModelAdded:function(e){this._displayViewCube(this.viewer.impl.is2d),!this.cube||this.cube.hasCompass||this.viewer.impl.is2d||this._initCompass(e.model)},_positionHomeButton:function(){this.homeViewContainer&&(this.cube&&this.viewcube&&"block"===this.viewcube.style.display?this.homeViewContainer.classList.remove("no-viewcube"):this.homeViewContainer.classList.add("no-viewcube"))},refreshCube:function(){this.cube&&this.cube.refreshCube()}}),L.theExtensionManager.registerExtension("Autodesk.ViewCubeUi",U)})(),Autodesk.Extensions.ViewCubeUi=o})(); +//# sourceMappingURL=ViewCubeUi.min.js.map \ No newline at end of file diff --git a/public/autodesk/lmvworker.min.js b/public/autodesk/lmvworker.min.js new file mode 100644 index 0000000..55f4ecf --- /dev/null +++ b/public/autodesk/lmvworker.min.js @@ -0,0 +1,2 @@ +var LMV;(()=>{var t={6247:(t,e,r)=>{"use strict";function n(t){return t[t.LMV_APP_NAMESPACE]=t[t.LMV_APP_NAMESPACE]||{}}function i(){const t="undefined"!=typeof window&&null!==window?window:"undefined"!=typeof self&&null!==self?self:r.g;return t.USE_LMV_APP_NAMESPACES?(t.globalProxy||(t.globalProxy=new Proxy({},{get(e,r){let n=t[r];return"function"==typeof n?function(t,e){return new Proxy(e,{get:(t,e)=>t[e],apply:(e,r,n)=>e.call(t||r,...n)})}(t,n):n},set:(e,r,i)=>(Object.prototype.hasOwnProperty.call(t,r)?t[r]!==i&&(t[r]=i):(n(t)[r]=i,Object.defineProperty(t,r,{get:()=>n(t)[r],set:e=>{n(t)[r]=e}})),!0)})),t.globalProxy):t}var s;r.d(e,{mS:()=>i,Xb:()=>f,Gz:()=>u,nr:()=>d,CN:()=>c});const o=i(),a=(o&&o.document,"undefined"!=typeof navigator),u=function(){return!a};function c(){return"undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0)}a&&navigator.userAgent.match(/Edge|Trident\/7\./),a&&navigator.userAgent.match(/Trident\/7\./);const h=a&&(/ip(ad|hone|od)/.test(navigator.userAgent.toLowerCase())||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1||/^ip(ad|hone|od)$/.test(null===(s=navigator.platform)||void 0===s?void 0:s.toLowerCase()));const l=a&&-1!==navigator.userAgent.toLowerCase().indexOf("android");function f(){return!!a&&(h||l)}function d(){if(!a)return!1;var t=navigator.userAgent.toLowerCase();return-1!==t.indexOf("safari")&&-1===t.indexOf("chrome")}},3293:(t,e,r)=>{"use strict";r.d(e,{z:()=>l});var n=r(2759),i=new ArrayBuffer(8),s=new Uint8Array(i),o=new Uint16Array(i),a=new Int32Array(i),u=new Uint32Array(i),c=new Float32Array(i),h=new Float64Array(i);function l(t){this.buffer=t,this.offset=0,this.byteLength=t.length}l.prototype.seek=function(t){this.offset=t},l.prototype.getBytes=function(t){var e=new Uint8Array(this.buffer.buffer,this.offset,t);return this.offset+=t,e},l.prototype.getVarints=function(){var t,e=0,r=0;do{e|=(127&(t=this.buffer[this.offset++]))<32767&&(t|=4294901760),t},l.prototype.getInt32=function(){var t=this.buffer,e=s,r=this.offset;return e[0]=t[r],e[1]=t[r+1],e[2]=t[r+2],e[3]=t[r+3],this.offset+=4,a[0]},l.prototype.getUint32=function(){var t=this.buffer,e=s,r=this.offset;return e[0]=t[r],e[1]=t[r+1],e[2]=t[r+2],e[3]=t[r+3],this.offset+=4,u[0]},l.prototype.getFloat32=function(){var t=this.buffer,e=s,r=this.offset;return e[0]=t[r],e[1]=t[r+1],e[2]=t[r+2],e[3]=t[r+3],this.offset+=4,c[0]},l.prototype.getIndicesArray=function(t,e,r){for(var n=this.buffer,i=new Uint8Array(t,e,2*r),s=this.offset,o=0,a=2*r;o{"use strict";r.d(e,{J:()=>h});var n,i,s,o,a,u=r(3293),c=r(7365);function h(t){var e=this.stream=new u.z(t),r=e.getInt32();this.type=e.getString(r),this.version=e.getInt32(),this.types=null,this.entryOffsets=[];var n=e.offset;e.seek(e.byteLength-8);var i=e.getUint32();this.typesOffset=e.getUint32(),e.seek(this.typesOffset);var s=this.readU32V();this.types=[];for(var o=0;o=this.getEntryCounts())return null;this.stream.seek(this.entryOffsets[t]);var e=this.stream.getUint32();return e>=this.types.length?null:this.types[e]},h.prototype.readPathID=function(){let t,e=this.stream;if(this.version<2){let r=e.getUint16();if(!r)return null;if(e.getUint16(),1==r)return"";t=e.getUint16();for(let n=2;n{"use strict";function n(t,e,r){var n,i,s,o,a,u;for(n="",s=r,i=0;i>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(o);break;case 12:case 13:a=t[e+i++],n+=String.fromCharCode((31&o)<<6|63&a);break;case 14:a=t[e+i++],u=t[e+i++],n+=String.fromCharCode((15&o)<<12|(63&a)<<6|63&u)}return n}function i(t,e,r){var n,i,s,o=r||0;if(i=t.length,e)for(n=0;n=1&&s<=127?e[o++]=s:s>2047?(e[o++]=224|s>>12&15,e[o++]=128|s>>6&63,e[o++]=128|63&s):(e[o++]=192|s>>6&31,e[o++]=128|63&s);else for(n=0;n=1&&s<=127?o++:o+=s>2047?3:2;return o-(r||0)}r.d(e,{$d:()=>c,GB:()=>l,Pd:()=>f,TN:()=>u,WC:()=>i,_f:()=>h,jI:()=>n,xH:()=>a});var s=!0,o=1048576;function a(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=t.length),s)return r>o?function(t,e,r){var n,i,s,o,a,u,c,h;for(n="",a=[],s=r,u=0,i=0;i>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:a.push(String.fromCharCode(o));break;case 12:case 13:c=t[e+i++],a.push(String.fromCharCode((31&o)<<6|63&c));break;case 14:c=t[e+i++],h=t[e+i++],a.push(String.fromCharCode((15&o)<<12|(63&c)<<6|63&h))}(++u>=32768||i>=s)&&(n+=a.join(""),a.length=0,u=0)}return n}(t,e,r):n(t,e,r);for(var i="",a=e,u=e+r;a=48&&i<=57&&(r=10*r+(i-48)),n++}return r}function l(t,e){for(var r=0,n=0,i=t.length;n=48&&c<=57?(u=10*u+(c-48),a=!0):44==c||93==c?a&&(s[r++]=u,a=!1,u=0):(a=!1,u=0),n++}return s}function f(t){for(var e=0,r=t.length-1,n=0;n{"use strict";r.d(e,{s:()=>n});const n={deduceUVRepetition:function(t){for(var e in t.vblayout)if(0==e.indexOf("uv")&&0!=e.indexOf("uvw"))for(var r=t.vblayout[e].offset,n=t.vbstride,i=t.vb,s=t.vb.length/n,o=0,a=r;o2||u<0||c>2||c<0){t.vblayout[e].isPattern=!0;break}}},computeBounds3D:function(t){var e,r,n,i,s,o=1/0,a=1/0,u=1/0,c=-1/0,h=-1/0,l=-1/0,f=t.vbstride,d=t.vblayout.position.offset,p=t.vb,m=t.vb.length/f;for(e=0,r=d;e(n=p[r])&&(o=n),a>(i=p[r+1])&&(a=i),u>(s=p[r+2])&&(u=s),cx&&(x=A)}b.radius=Math.sqrt(x)},bboxUnion:function(t,e){e.min.xt.max.x&&(t.max.x=e.max.x),e.max.y>t.max.y&&(t.max.y=e.max.y),e.max.z>t.max.z&&(t.max.z=e.max.z)}}},8661:(t,e,r)=>{"use strict";r.d(e,{nW:()=>b,d$:()=>g,xL:()=>v,uq:()=>y});var n=2*Math.PI,i=[0,1,3,0,3,2];function s(t,e,r,n){var i=e||65536;this.FULL_COUNT=0|(r||32767),this.useInstancing=t,this.useCompactBuffers=n,this.stride=10,this.allocVcount=4*(this.useInstancing?i/4:i),this.vb=new ArrayBuffer(this.stride*this.allocVcount),this.vbf=new Float32Array(this.vb),this.vbi=new Int32Array(this.vb),this.ib=this.useInstancing?null:new Uint16Array(i),this.minLineWidth=Number.MAX_VALUE,this.reset(0)}s.FORCE_BUTT_CAPS_FOR_TESTING=!1,s.prototype.reset=function(t){this.vcount=t,this.icount=0,this.minx=this.miny=1/0,this.maxx=this.maxy=-1/0,this.dbIds={},this.lastDbId=null,this.colors={},this.numEllipticals=0,this.numCirculars=0,this.numTriangleGeoms=0,this.numMiterLines=0,this.hasLineStyles=!1,this.changeTracking={},this.stride=10},s.prototype.expandStride=function(){var t=this.stride;if(!(t>=12)){for(var e=this.stride+2,r=new ArrayBuffer(e*this.allocVcount),n=new Uint8Array(this.vb),i=new Uint8Array(r),s=0,o=this.vcount;sthis.maxx&&(this.maxx=t),ethis.maxy&&(this.maxy=e)},s.prototype.addToBoundsWithLineWidth=function(t,e,r,n,i){if(i<0)return this.addToBounds(t,e),void this.addToBounds(r,n);const s=[Math.min(t,r)-.5*i,Math.max(t,r)+.5*i],o=[Math.min(e,n)-.5*i,Math.max(e,n)+.5*i];this.addToBounds(s[0],o[0]),this.addToBounds(s[1],o[1])};var o=new Int32Array(1);function a(t){return o[0]=t,o[0]}s.prototype.trackChanges=function(t,e,r,n,i,s){if(r!==this.lastDbId&&(this.dbIds[a(r)]=1,this.lastDbId=r),s&&(this.hasLineStyles=!0),this.useCompactBuffers){var o=this.changeTracking;u("geomType",t),u("color",e),u("dbId",r),u("layerId",n),u("viewportId",i),u("linePattern",s),this.colors[a(e)]=1}function u(e,r){void 0===o[e]?o[e]=t:o[e]===r&&(o[e+"Varies"]=!0)}},s.prototype.setCommonVertexAttribs=function(t,e,r,n,i,s,o,a){this.trackChanges(r,n,i,s,o,a),e&=255,r&=255,a&=255,s&=65535,o&=65535,this.vbi[t+8]=e|r<<8|a<<16,this.vbi[t+6]=n,this.vbi[t+7]=i,this.vbi[t+9]=s|o<<16},s.prototype.addVertexTriangleGeom=function(t,e,r,n,i,s,o,a,u,c){for(var h=this.vcount,l=this.vbf,f=this.useInstancing?1:4,d=0;d=0&&a>0&&i>0&&(this.minLineWidth=Math.min(this.minLineWidth,a)),s.FORCE_BUTT_CAPS_FOR_TESTING&&(d=!0,p=!0);var v=1;d&&p?v=8:d?v=9:p&&(v=10);for(var y=this.useInstancing?1:4,b=0;b=0&&u>0&&(this.minLineWidth=Math.min(this.minLineWidth,u));for(var g=this.useInstancing?1:4,v=0;v6&&void 0!==arguments[6]?arguments[6]:0;if(!this.useInstancing){var a=this.vcount,u=this.stride*a,c=this.vbf;return c[u]=t,c[u+1]=e,this.setCommonVertexAttribs(u,0,o,r,n,i,s,0),this.vcount++,a}},s.prototype.addVertexPolytriangle=function(t,e,r,n,i,s){this.useInstancing||(this.addVertex(t,e,r,n,i,s),this.addToBounds(t,e))},s.prototype.addVertexMSDFPolytriangle=function(t,e,r,n,i,s,o,a){this.addVertexTexPolytriangle(t,e,r,n,i,s,o,a,6)},s.prototype.addIndices=function(t,e){if(!this.useInstancing){var r=this.ib,n=this.icount;if(n+t.length>=r.length){var i=new Uint16Array(2*Math.max(t.length,r.length));for(let t=0;t1e-4&&Math.abs(m-n)>1e-4){var g=t+s*Math.cos(r),v=e+o*Math.sin(r);this.addSegment(g,v,g,v,0,c,h,l,f,d);var y=t+s*Math.cos(i),b=e+o*Math.sin(i);this.addSegment(y,b,y,b,0,c,h,l,f,d)}else this.addToBoundsWithLineWidth(t-s,e-o,t+s,e+o,c);const a=33554431;var x=this.addVertexLine(t,e,0,1e-4,0,0,a,l,f,d);this.finalizeQuad(x)}var w=this.addVertexArc(t,e,r,i,s,o,a,c,h,l,f,d);this.finalizeQuad(w)},s.prototype.addTexturedQuad=function(t,e,r,n,i,s,o,a,u){var c=this.addVertexTexQuad(t,e,r,n,i,s,o,a,u);this.finalizeQuad(c);var h=.5*Math.cos(i),l=.5*Math.sin(i),f=Math.abs(r*h)+Math.abs(n*l),d=Math.abs(r*l)+Math.abs(n*h);this.addToBounds(t-f,e-d),this.addToBounds(t+f,e+d)},s.prototype.addVertexImagePolytriangle=function(t,e,r,n,i,s,o,a){return this.addVertexTexPolytriangle(t,e,r,n,i,s,o,a,7)},s.prototype.addVertexTexPolytriangle=function(t,e,r,n,i,s,o,a,u){if(this.useInstancing)return;let c=this.vcount,h=this.vbf;this.addVertex(t,e,i,s,o,a,u),h[c*this.stride+2]=r,h[c*this.stride+3]=n,this.addToBounds(t,e)},s.prototype.isFull=function(t){t=t||3;var e=this.useInstancing?4:1;return this.vcount*e+t>this.FULL_COUNT},s.prototype.makeCompactVertexLayout=function(){var t=Object.keys(this.colors),e=Object.keys(this.dbIds);if(10!==this.stride)return null;var r=t.length+e.length;if(t.length+e.length>65536)return null;var n=new Int32Array(r+1);n[0]=0;var i=1;for(let e=0;e>8&255){case 0:a[w]=d(this.vbf[b]),a[w+1]=p(this.vbf[b+1]);break;case 1:case 8:case 9:case 10:a[w]=d(this.vbf[b]),a[w+1]=p(this.vbf[b+1]),a[w+2]=g(this.vbf[b+2]),a[w+3]=m(this.vbf[b+3]),a[w+4]=v(this.vbf[b+4]);break;case 2:a[w]=d(this.vbf[b]),a[w+1]=p(this.vbf[b+1]),a[w+2]=g(this.vbf[b+2]),a[w+3]=g(this.vbf[b+3]),a[w+4]=v(this.vbf[b+4]),a[w+5]=m(this.vbf[b+5]);break;case 3:case 11:break;case 4:a[w]=d(this.vbf[b]),a[w+1]=p(this.vbf[b+1]),a[w+2]=g(this.vbf[b+2]),a[w+3]=m(this.vbf[b+3]),a[w+4]=m(this.vbf[b+4]);break;case 5:a[w]=d(this.vbf[b]),a[w+1]=p(this.vbf[b+1]),a[w+2]=d(this.vbf[b+2]),a[w+3]=p(this.vbf[b+3]),a[w+4]=d(this.vbf[b+4]),a[w+5]=p(this.vbf[b+5]);break;default:console.error("Unknown geometry type")}a[w+6]=this.colors[this.vbi[b+6]]||0,a[w+7]=this.dbIds[this.vbi[b+7]]||0,o[x+4]=this.vbi[b+8],o[x+5]=this.vbi[b+9]}var _={};_.vb=new Float32Array(s),_.vbstride=6;var I=this.useInstancing?1:0;return _.vblayout={fields1:{offset:0,itemSize:2,bytesPerItem:2,divisor:I,normalized:!0},fields2:{offset:1,itemSize:4,bytesPerItem:2,divisor:I,normalized:!0},uvIdColor:{offset:3,itemSize:2,bytesPerItem:2,divisor:I,normalized:!1},flags4b:{offset:4,itemSize:4,bytesPerItem:1,divisor:I,normalized:!1},layerVp4b:{offset:5,itemSize:4,bytesPerItem:1,divisor:I,normalized:!1}},_.unpackXform={x:u,y:c,z:h,w:l},_.texData=n,_},s.prototype.makeWideVertexLayout=function(){var t={};t.vb=new Float32Array(this.vb.slice(0,this.vcount*this.stride*4)),t.vbstride=this.stride;var e=this.useInstancing?1:0;return t.vblayout={fields1:{offset:0,itemSize:2,bytesPerItem:4,divisor:e,normalized:!1},fields2:{offset:2,itemSize:4,bytesPerItem:4,divisor:e,normalized:!1},color4b:{offset:6,itemSize:4,bytesPerItem:1,divisor:e,normalized:!0},dbId4b:{offset:7,itemSize:4,bytesPerItem:1,divisor:e,normalized:!1},flags4b:{offset:8,itemSize:4,bytesPerItem:1,divisor:e,normalized:!1},layerVp4b:{offset:9,itemSize:4,bytesPerItem:1,divisor:e,normalized:!1}},t.vblayout.extraParams={offset:this.stride-2,itemSize:2,bytesPerItem:4,divisor:e,normalized:!1},t},s.prototype.toMesh=function(){var t=null;if(this.useCompactBuffers&&(t=this.makeCompactVertexLayout()),t||(t=this.makeWideVertexLayout()),this.useInstancing){t.numInstances=this.vcount;var e=new Int32Array([0,1,2,3]);t.vblayout.instFlags4b={offset:0,itemSize:4,bytesPerItem:1,divisor:0,normalized:!1},t.vblayout.instFlags4b.array=e.buffer,t.indices=new Uint16Array(i)}else t.indices=new Uint16Array(this.ib.buffer.slice(0,2*this.icount));t.dbIds=this.dbIds;var r=this.maxx-this.minx,n=this.maxy-this.miny,s=Math.max(r,n);return t.boundingBox={min:{x:this.minx,y:this.miny,z:.001*-s},max:{x:this.maxx,y:this.maxy,z:.001*s}},t.boundingSphere={center:{x:.5*(this.minx+this.maxx),y:.5*(this.miny+this.maxy),z:0},radius:.5*Math.sqrt(r*r+n*n)},t};var u=function(t,e){function r(){function r(t,e){return Math.abs(t-e)<.001}r(t,0)&&(t=0),r(e,0)&&(e=0),r(t,n)&&(t=n),r(e,n)&&(e=n)}if(r(),t>e)for(;t>n;)t-=n,e-=n;else for(;e>n;)t-=n,e-=n;return r(),t<0&&e>0&&(t+=n),{start:t,end:e}},c=r(1706),h=r(6118),l=r(2816),f=r(3293),d=r(6916),p=r(7480),m=16383,g={dt_object:0,dt_void:1,dt_byte:2,dt_int:3,dt_float:4,dt_double:5,dt_varint:6,dt_point_varint:7,dt_byte_array:32,dt_int_array:33,dt_float_array:34,dt_double_array:35,dt_varint_array:36,dt_point_varint_array:37,dt_arc:38,dt_circle:39,dt_circular_arc:40,dt_string:63,dt_last_data_type:127},v={st_object_member:0,st_fill:1,st_fill_off:2,st_clip_off:3,st_layer:4,st_link:5,st_line_weight:6,st_miter_angle:7,st_miter_length:8,st_line_pattern_ref:9,st_back_color:10,st_color:11,st_markup:12,st_object_id:13,st_markup_id:14,st_reset_rel_offset:15,st_font_ref:16,st_begin_object:32,st_clip:33,st_line_caps:34,st_line_join:35,st_line_pattern_def:36,st_font_def:37,st_viewport:38,st_sheet:42,st_arc:43,st_polyline:44,st_raster:45,st_text:46,st_polytriangle:47,st_dot:48,st_end_object:63,st_last_semantic_type:127};function y(t){return 1&t?-(t>>>1):t>>>1}function b(t,e,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(this.metadata=t,this.scaleX=1,this.scaleY=1,this.bbox={min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}},this.is2d=!0,this.layersMap={},this.fontDefs={},this.fontCount=0,this.fontId=0,this.manifestAvailable=!1,this.geomMetricsSum=0,this.objectMemberQueue=[],this.propertydb={attrs:[],avs:[],ids:[],values:[],offsets:[],viewables:[]},t){var i=t.page_dimensions;this.paperWidth=i.page_width,this.paperHeight=i.page_height,this.scaleX=this.paperWidth/i.plot_width,this.scaleY=this.paperHeight/i.plot_height,this.hidePaper=i.hide_paper;var o=this.paperWidth,a=this.paperHeight;this.bbox.max.x=o,this.bbox.max.y=a;var u=t.page_dimensions||{};if(isFinite(u.paper_rotation)&&0!==u.paper_rotation){var h=u.paper_rotation*Math.PI/180,l=Math.cos(h),f=Math.sin(h),d=o*l,p=o*f,g=-a*f,v=a*l;this.bbox.min.x=Math.min(0,d,g,d+g),this.bbox.max.x=Math.max(0,d,g,d+g),this.bbox.min.y=Math.min(0,p,v,p+v),this.bbox.max.y=Math.max(0,p,v,p+v)}isFinite(u.paper_offset_x)&&0!==u.paper_offset_x&&(this.bbox.min.x+=u.paper_offset_x,this.bbox.max.x+=u.paper_offset_x),isFinite(u.paper_offset_y)&&0!==u.paper_offset_y&&(this.bbox.min.y+=u.paper_offset_y,this.bbox.max.y+=u.paper_offset_y);var y=0;for(var b in this.layersMap[0]=y++,t.layers){var x=parseInt(b);this.layersMap[x]=y++}if(this.layerCount=y,this.createLayerGroups(t.layers),t.geom_metrics){var w=Object.keys(t.geom_metrics).map((function(e){return t.geom_metrics[e]}));this.geomMetricsSum=w.reduce(((t,e)=>t+e))}}this.hidePaper=this.hidePaper||n.modelSpace,this.noShadow=!!n.noShadow,this.hasPageShadow=!1,this.opCount=0,this.excludeTextGeometry=n.excludeTextGeometry,this.extendStringsFetching=n.extendStringsFetching,this.fontFaces=[],this.fontFamilies=[],this.viewports=[{}],this.currentVpId=0,this.viewports[0].geom_metrics=this.currentGeomMetrics={arcs:0,circles:0,circ_arcs:0,viewports:0,clips:0,colors:0,db_ids:0,dots:0,fills:0,layers:0,line_caps:0,line_joins:0,line_patterns:0,line_pat_refs:0,plines:0,pline_points:0,line_weights:0,links:0,miters:0,ptris:0,ptri_indices:0,ptri_points:0,rasters:0,texts:0,strings:[]},this.clips=[0],this.strings=[],this.stringDbIds=[],this.stringBoxes=[],this.extendStringsFetching&&(this.stringCharWidths=[],this.stringAngles=[],this.stringPositions=[],this.stringHeights=[]),this.currentStringNumber=-1,this.currentStringBox=new c.K,this.linkBoxes=[],this.currentLinkBox=new c.K,this.objectNumber=0,this.currentFakeId=-2,this.imageNumber=0,this.linkNumber=0,this.maxObjectNumber=0,this.objectStack=[],this.objectNameStack=[],this.parseObjState={polyTriangle:{},viewport:{},clip:{},raster:{},text:{},fontDef:{},uknown:{}},this.layer=0,this.bgColor="number"==typeof n.bgColor?n.bgColor:4294967295,this.contrastColor=this.color=this.fillColor=4278190080,this.hidePaper&&(this.contrastColor=4294967040),this.isMobile=n&&!!n.isMobile;var _=this.isMobile,I=this.isMobile;if(this.max_vcount=this.isMobile?m:void 0,this.currentVbb=new s(_,void 0,this.max_vcount,I),this.meshes=[],this.numCircles=this.numEllipses=this.numPolylines=this.numLineSegs=0,this.numPolytriangles=this.numTriangles=0,this.error=!1,this.offsetX=0,this.offsetY=0,e){this.manifestAvailable=!0,this.imageId2URI={};for(var A=e.assets,O=0,S=A.length;O>16&255,r=t>>8&255,n=255&t;return(t>>24&255)<<24|(e=255-e)<<16|(r=255-r)<<8|255-n},b.prototype.mapColor=function(t,e){if(!this.hidePaper||0!==this.bgColor)return t;var r=255&t;return r<127||r===(65280&t)>>8&&r===(16711680&t)>>16&&e&&(t&=1442840575),t},b.prototype.parsePointPositions=function(){var t=this.stream.getVarints(),e=this.stream.getVarints();return t=y(t),e=y(e),t+=this.offsetX,e+=this.offsetY,this.offsetX=t,this.offsetY=e,[this.tx(t),this.ty(e)]},b.prototype.parserAssert=function(t,e,r){return t!=e&&(d.vF.warn("Expect "+e+"; actual type is "+t+"; in function "+r),this.error=!0,!0)},b.prototype.unhandledTypeWarning=function(t,e){d.vF.warn("Unhandled semantic type : "+e+" in function "+t)},b.prototype.parseObject=function(){var t=this.stream.getVarints();switch(this.objectStack.push(t),t){case v.st_sheet:this.objectNameStack.push("sheet"),this.objectMemberQueue.unshift("paperColor");break;case v.st_viewport:this.objectNameStack.push("viewport"),this.objectMemberQueue.unshift("units","transform");break;case v.st_clip:this.objectNameStack.push("clip"),this.objectMemberQueue.unshift("contourCounts","points","indices");break;case v.st_polytriangle:this.objectNameStack.push("polyTriangle"),this.objectMemberQueue.unshift("points","indices","colors");break;case v.st_raster:this.objectNameStack.push("raster"),this.objectMemberQueue.unshift("position","width","height","imageId");break;case v.st_text:this.currentStringNumber=this.strings.length,0===this.objectNumber&&(this.objectNumber=this.currentFakeId--),this.currentStringBox.makeEmpty(),this.objectNameStack.push("text"),this.objectMemberQueue.unshift("string","position","height","widthScale","rotation","oblique","charWidths");break;case v.st_font_def:this.objectNameStack.push("fontDef"),this.objectMemberQueue.unshift("name","fullName","flags","spacing","panose");break;case v.st_end_object:if(this.objectStack.pop(),this.objectStack.length){switch(this.objectStack.pop()){case v.st_polytriangle:this.actOnPolyTriangle();break;case v.st_viewport:this.actOnViewport();break;case v.st_clip:this.actOnClip();break;case v.st_raster:this.actOnRaster();break;case v.st_text:this.actOnText();break;case v.st_font_def:this.actOnFontDef()}var e=this.objectNameStack.pop(),r=this.parseObjState[e];for(var n in r)r[n]=null}else this.parserAssert(0,1,"parseEndObject (Stack Empty)");this.objectMemberQueue.length=0;break;default:this.objectNameStack.push("unknown"),this.error=!0,this.unhandledTypeWarning("parseObject",t)}},b.prototype.initSheet=function(t){if(!this.hidePaper&&(this.bgColor=t,this.metadata)){var e=this.paperWidth,r=this.paperHeight,n={x:0,y:0},i={x:e,y:0},s={x:0,y:r},o=this.metadata.page_dimensions||{};if(isFinite(o.paper_rotation)&&0!==o.paper_rotation){var a=o.paper_rotation*Math.PI/180,u=Math.cos(a),c=Math.sin(a);i.y=e*c,i.x=e*u,s.x=-r*c,s.y=r*u}isFinite(o.paper_offset_x)&&0!==o.paper_offset_x&&(n.x=o.paper_offset_x),isFinite(o.paper_offset_y)&&0!==o.paper_offset_y&&(n.y=o.paper_offset_y);var h=this.currentVbb,l=[n.x,n.y,n.x+i.x,n.y+i.y,n.x+i.x+s.x,n.y+i.y+s.y,n.x+s.x,n.y+s.y],f=[t,t,t,t],d=[0,1,2,0,2,3];if(!this.noShadow){var p=.0075*e,m={x:i.x*p/e,y:i.y*p/e},g={x:s.x*p/r,y:s.y*p/r},v={x:n.x+m.x,y:n.y+m.y},y={x:n.x+i.x,y:n.y+i.y},b=4283782485;l=l.concat([v.x-g.x,v.y-g.y,v.x-g.x+i.x,v.y-g.y+i.y,v.x+i.x,v.y+i.y,v.x,v.y,y.x,y.y,y.x+m.x,y.y+m.y,y.x+m.x-g.x+s.x,y.y+m.y-g.y+s.y,y.x-g.x+s.x,y.y-g.y+s.y]),f=f.concat([b,b,b,b,b,b,b,b]),d=d.concat([4,5,6,4,6,7,8,9,10,8,10,11]),this.hasPageShadow=!0}this.addPolyTriangle(l,f,d,4294967295,-1,0,!1),h.addSegment(n.x,n.y,n.x+i.x,n.y+i.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+i.x,n.y+i.y,n.x+i.x+s.x,n.y+i.y+s.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+i.x+s.x,n.y+i.y+s.y,n.x+s.x,n.y+s.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+s.x,n.y+s.y,n.x,n.y,0,1e-6,4278190080,-1,0,this.currentVpId)}},b.prototype.setObjectMember=function(t){if(!this.objectMemberQueue.length)return d.vF.warn("Unexpected object member. "+t+" on object "+this.objectNameStack[this.objectNameStack.length-1]),!1;var e=this.objectMemberQueue.shift(),r=this.objectNameStack[this.objectNameStack.length-1];return"sheet"==r&&"paperColor"==e?(this.initSheet(t),!0):!!r&&(this.parseObjState[r][e]=t,!0)},b.prototype.parseString=function(){var t=this.stream,e=t.getVarints(),r=t.getVarints(),n=t.getString(r);if(e===v.st_object_member){if(this.setObjectMember(n))return}else d.vF.info("Unexpected opcode semantic type for string.");return n},b.prototype.actOnFontDef=function(){var t=this.parseObjState.fontDef;this.fontDefs[++this.fontCount]=t,this.fontId=this.fontCount},b.prototype.parsePoint=function(){var t=this.stream.getVarints(),e=this.parsePointPositions();if(t===v.st_object_member){if(this.setObjectMember(e))return}else d.vF.info("Unexpected opcode semantic type for point.");return e},b.prototype.parsePointsArray=function(){var t=this.stream,e=t.getVarints(),r=t.getVarints();if(r){r/=2;for(var n,i=[],s=0;se){var r=t;t=e,e=r}if(u[t]){var n=u[t],i=n.lastIndexOf(e);-1==i?n.push(e):n[i]=-1}else u[t]=[e]}function l(r,o){if(r>o){var h=r;r=o,o=h}var l=u[r];l&&-1!=l.indexOf(o)&&(a.flushBuffer(4),a.currentVbb.addSegment(t[2*r],t[2*r+1],t[2*o],t[2*o+1],0,c,a.mapColor(e?e[r]:n,!0),i,s,a.currentVpId),e&&e[r]!=e[o]&&d.vF.warn("Gouraud triangle encountered. Will have incorrect antialiasing."))}if(this.objectStack[this.objectStack.length-1]==v.st_text&&(c=-.5),o){u=new Array(t.length/2);for(let t=0,e=r.length;t1)for(var h=0;h{const e=new Array(256);for(let t=0;t<256;t++){let r=t.toString(16);1===r.length&&(r="0"+r),e[t]=r}var r=new Array(20),n=new Array(10);t.exports={binToPackedString:function(t,e,r){for(var i=20===r?n:[],s=0;s>8&255]}return n.join("")},packedToBin:function(t,e,r){for(let n=0;n>8&255}}}},3314:(t,e,r)=>{const{WebSocketBase:n,STATE:i}=r(4318),s=r(5982).packedToBin,o=r(5982).binToPackedString;class a extends n{clone(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const e=new a(this.url,this.queryParams,this.headers,this.onResourcesReceived,this.onResourceFailed,this.onConnectionFailed);return this.authorizeUrns.forEach((r=>{e.addAuthorizeUrn(r,t)})),e}_decodeMessage(t){const e=new Int32Array(t,0,3);if(827019343!==e[0])return void console.error("Invalid message format",e[0].toString(16),e[1],t);const r=String.fromCharCode(255&e[1]),n=e[2],i=new Int32Array(t,12,n),s=new Uint8Array(t,12+4*n),a=[],u=[],c=[];for(let t=0;t{const n=r(169),i="undefined"!=typeof navigator,s=function(){return!i},o=Object.freeze({CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3});t.exports.WebSocketBase=class{constructor(t,e,r,i,s,o){this.ws=null,this.url=t,this.queryParams=e,this.headers=r,this.numRequestsSent=0,this.numRequestsReceived=0,this.authorizeUrns=new Set,this._retriedOpen=0,this.retryEvent=null,this.hasPermanentError=void 0===n||!this.url,this.lastError=null,this.lastErrorNumInFlight=null,this.onResourcesReceived=i,this.onResourceFailed=s,this.onConnectionFailed=o,this._pendingSends=new Map,this._numPendingSends=0,this.inFlightRequests=new Map,this.msgBuffer=new Uint8Array(201)}addAuthorizeUrn(t){var e;let r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.authorizeUrns.has(t)||this.hasPermanentError||(r&&this._openWebSocket(),(null===(e=this.ws)||void 0===e?void 0:e.readyState)===o.OPEN&&this.ws.send("/auth/"+t),this.authorizeUrns.add(t))}_openWebSocket(){if(this.ws||this.hasPermanentError)return;let t=this.url.replace("https:","wss:").replace("http:","ws:").replace(":7124",":7125");this.queryParams&&(t+="?"+this.queryParams),this.ws=new n(t,void 0,s()?{headers:this.headers}:{}),this.ws.onopen=()=>{this.accountIdSent=null,this.ws.binaryType="arraybuffer",s()||this.ws.send("/headers/"+JSON.stringify(this.headers)),this.ws.send("/options/"+JSON.stringify({batch_responses:!0,report_errors:!0}));for(const t of this.authorizeUrns)this.ws.send("/auth/"+t)},this.ws.onmessage=t=>this._decodeMessage(t.data),this.ws.onclose=t=>{1e3!==t.code||0!==this.inFlightRequests.size?(console.warn("Abnormal socket close.","pending sends:",this._numPendingSends,"in flight",this.inFlightRequests.size,"event:",t),this._pendingSends=new Map,this._numPendingSends=0,this._retriedOpen<3?(console.warn("Retrying"),this._retriedOpen++,this.retryEvent=setTimeout((()=>{this.retryEvent=null,this.ws=null,this._openWebSocket()}),2e3)):(console.error("Too many WebSocket failures. Giving up."),this.hasPermanentError=!0,this.lastError=t,this.lastErrorNumInFlight=this.inFlightRequests.size),this.onConnectionFailed(this.inFlightRequests),this.inFlightRequests.clear()):this.closeWebSocket()}}closeWebSocket(){if(!this.ws)return;console.assert(0===this.inFlightRequests.size,"closeWebSocket called even though there are requests in flight"),this.retryEvent&&(clearTimeout(this.retryEvent),this.retryEvent=null),this.ws.onclose=null;const t=this.ws;this.ws.readyState===o.CONNECTING?this.ws.onopen=()=>t.close(1e3,"no more work expected"):this.ws.close(1e3,"no more work expected"),this.ws=null}_decodeMessage(t){throw new Error("Implement!")}_flushSendQueue(){throw new Error("Implement!")}requestResource(){throw new Error("Implement!")}},t.exports.STATE=o},7480:(t,e,r)=>{"use strict";r.d(e,{$f:()=>i,tG:()=>n});const n={UNKNOWN_FAILURE:1,BAD_DATA:2,NETWORK_FAILURE:3,NETWORK_ACCESS_DENIED:4,NETWORK_FILE_NOT_FOUND:5,NETWORK_SERVER_ERROR:6,NETWORK_UNHANDLED_RESPONSE_CODE:7,BROWSER_WEBGL_NOT_SUPPORTED:8,BAD_DATA_NO_VIEWABLE_CONTENT:9,BROWSER_WEBGL_DISABLED:10,BAD_DATA_MODEL_IS_EMPTY:11,UNSUPORTED_FILE_EXTENSION:13,VIEWER_INTERNAL_ERROR:14,WEBGL_LOST_CONTEXT:15,LOAD_CANCELED:16};function i(t){return"ErrorCode:"+t+"."}},1136:(t,e,r)=>{"use strict";r.d(e,{PG:()=>h}),r(4423),r(9479),r(8845),r(7656),r(5105),r(7467),r(586),r(1517),r(3777),r(4190),r(2359),r(6097),r(9172),r(7019),r(7273),r(1723),r(7415),r(9929),r(7583),r(5122),r(6385),r(230),r(7268),r(9733),r(8179),r(456),r(4017),r(9310),r(3062),r(6369),r(5637),r(2848),r(4842),r(4746),r(3454),r(6660),r(5941),r(2101),r(2917),r(7628),r(5186),r(2978),r(2527),r(9852),r(2376),r(617),r(3067),r(6820),r(8288),r(5509),r(5223),r(321),r(1927),r(1632),r(4377),r(9522),r(6771),r(2516),r(8931),r(2514),r(5694),r(2774),r(3283),r(9536),r(1926),r(4483),r(6215),r(8898),r(4176),r(3275),r(2793),r(7208),r(7348),r(6957),r(9732),r(3742),r(6422),r(2451),r(6270),r(9848);var n=r(6916),i=r(7480),s=r(2759),o=r(577),a=r(6247),u=r(4406),c=r(9861);let h={WORKER_REGISTER_FILE_PORT:"REGISTER_FILE_PORT",WORKER_READ_FILE:"READ_FILE"};var l=!1;function f(t){var e=t.split("/");if(0==e.length)return t;for(var r=[],n=0;n=200&&t.statusCode<400),s=t;!r&&function(t,e){return!!("gzip"===t.headers["content-encoding"]||e.endsWith(".json.gz")||e.endsWith("FragmentList.pack")||e.endsWith("LightList.bin")||e.endsWith("CameraList.bin")||e.endsWith("CameraDefinitions.bin")||e.endsWith("LightDefinitions.bin"))}(t,b.pathname)&&(s=t.pipe(e.createGunzip())),"json"!==v.responseType&&"text"!==v.responseType&&v.responseType||s.setEncoding("utf8");var o=[],a=(Buffer.allocUnsafe(65536),0);s.on("data",(function(t){o.push(t),v.ondata&&v.ondata(t)})),s.on("end",(function(){if(t.statusCode>=200&&t.statusCode<400){if("json"===v.responseType){var r=JSON.parse(o.join(""));return void m(r)}if("text"===v.responseType||""===v.responseType){var s=o.join("");return void m(s)}var u=Buffer.concat(o);if(31===u[0]&&139===u[1]){n.vF.warn("An LMV resource ("+p+") was double compressed, or Content-Encoding header missing");try{u=e.gunzipSync(u),a=u.length}catch(t){g(i.tG.BAD_DATA,"Malformed data received when requesting file",{url:p,exception:t.toString(),stack:t.stack})}}200===_.status&&v.range&&(u=new Uint8Array(u,v.range.min,v.range.max-v.range.min)),m(u,a)}else g&&g(t.statusCode,t.statusMessage,{url:p})}))}));_.on("error",(function(t){g&&g(t.code,t.message,{url:p})})),v.postData&&_.write(v.postData),_.end()}else!function(r,n,i,s){function o(t){if("json"===s.responseType)try{return JSON.parse(t.toString("utf8"))}catch(t){i(t)}return t}0===r.indexOf("file://")&&(r=r.substr(7)),t.readFile(r,(function(t,a){t?i(0,0,{httpStatusText:t,url:r}):31===a[0]&&139===a[1]?e.gunzip(a,null,(function(t,e){t?i(0,0,{httpStatusText:t,url:r}):(e=o(e),s.ondata&&s.ondata(e),n(e))})):(a=o(a),s.ondata&&s.ondata(a),n(a))}))}(p,m,g,v)}}();else{var p=new(r(1436));p.max=25;var m={},g={},v={};h.registerProtocolPort=function(t,e){/^(http(s)?|file):/gi.test(t)?console.warn("http(s) or file protocol were not allowed to be handled"):e?(m[t]=e,e.onmessage=function(t){var e=t.data.url;if(g[e]){var r=g[e];if(t.data.error)r.onFailureWrapped(i.tG.BAD_DATA,"Malformed data received when requesting file",{url:e,exception:t.data.error.message,stack:t.data.error.stack});else{var n=t.data.buffer;if(g[e]=void 0,31===n[0]&&139===n[1]&&e.match(/(.f2d|.gz)$/gi))try{n=(0,c.Wt)(n),r.options&&r.options.ondata&&r.options.ondata(n),r.onSuccessWrapped(n)}catch(t){r.onFailureWrapped(i.tG.BAD_DATA,"Malformed data received when requesting file",{url:e,exception:t.toString(),stack:t.stack})}else r.onSuccessWrapped(n)}}else if(v[e]){var s=[];t.data&&t.data.buffer&&t.data.buffer.buffer instanceof ArrayBuffer&&s.push(t.data.buffer.buffer),v[e].postMessage(t.data,s),v[e]=void 0}}):m[t]&&m[t]instanceof MessagePort&&(m[t].onmessage=void 0,m[t]=void 0)},h.handlerProtocol=function(t,e,r,n,i){var s=m[t];g[e]={onSuccessWrapped:r,onFailureWrapped:n,options:i},s.postMessage({operation:h.WORKER_READ_FILE,url:e})},h.forwardProtocolHandlerToWorker=function(t){var e={},r=new MessageChannel;for(var n in r.port1.onmessage=function(t){var e=new URL(t.data.url);m[e.protocol].postMessage(t.data),v[e]=r.port1},m)m[n]instanceof MessagePort&&(e[n]=r.port2);t.doOperation({operation:h.WORKER_REGISTER_FILE_PORT,protocolPortMap:e},[r.port2])},h.rawGet=function(t,e,r,i,s,o){p.go((a=>{let u=function(){a();for(var t=arguments.length,e=new Array(t),r=0;r=500);if((arguments.length<=2?void 0:arguments[2]).aborted&&(s=!1),s){const s=arguments.length<=3?void 0:arguments[3];let a=100,l=5,f=!1;if(429!==i&&503!==i||null==s||!s.getResponseHeader("Retry-After")?0===i&&(f=3,l=2):f=s.getResponseHeader("Retry-After"),f){const t=Number(f);a=!isNaN(t)&&1e3*t||Date.parse(f)-(new Date).getTime(),a=a>100?a:100}h._retryRequest(t,e,r,o,a,l).then((t=>{n.vF.warn(`request ${r} successful after retries.`),c(...t)})).catch((t=>{n.vF.warn(`request ${r} unsuccessful after retries.`),u(...t)}))}else u(...arguments)}),o)}}))},h._retryRequest=function(t,e,r,i,s,o){const a={delayFirstAttempt:!0,startingDelay:s,numOfAttempts:4,retry:(t,e)=>{let[r,i,{url:s}]=t;return n.vF.warn(`request ${s} failed with status ${r} ${i}. Attempt ${e}`),!0},timeMultiple:o};return(0,u.backOff)((()=>new Promise(((n,s)=>{let o=h._rawGet;null!=i&&i.useFetch&&(o=h._rawGetFetch),o(t,e,r,(function(){for(var t=arguments.length,e=new Array(t),r=0;r{const r=t.indexOf("?acmsession=");-1!==r&&(t=t.substring(0,r)),t+="/signeds3download?useCdn=true";const n=new XMLHttpRequest;n.open("GET",t),n.setRequestHeader("Authorization",o.sR.HTTP_REQUEST_HEADERS.Authorization),n.responseType="json",n.send();const i=()=>{e(null)};n.onload=t=>{const r=t.currentTarget.response;e(r.url)},n.onerror=i,n.ontimeout=i,n.onabort=i}))},h._rawGet=async function(t,e,r,o,a,u){u=u||{},r=h.generateUrl(t,e,r,u.apiData,u.escapeOssObjects,u.guid);let f=!1;if(h.isOSSUrl(r)){const t=await h.getSignedS3DownloadUrl(r);t?(r=t,f=!0):console.warn("Failed getting signed URL - Fallback to direct OSS resource.")}if(u.queryParams&&!f){var d=-1===r.indexOf("?")?"?":"&";r=r+d+u.queryParams}var p=new XMLHttpRequest;function m(t){a&&a(p.status,p.statusText,{url:r},p)}function g(t){if("json"===u.responseType)try{if(t instanceof Uint8Array)return(0,s.TN)(t);if("string"==typeof t)return JSON.parse(t)}catch(t){}return t}function v(t){if(p.status>=200&&p.status<400)if(p.response&&p.response instanceof ArrayBuffer){var e;if(31===(e=200===p.status&&u.range?new Uint8Array(p.response,u.range.min,u.range.max-u.range.min):new Uint8Array(p.response))[0]&&139===e[1]){l||(l=!0,n.vF.warn("An LMV resource ("+r+") was not uncompressed by the browser. This hurts performance. Check the Content-Encoding header returned by the server and check whether you're getting double-compressed streams. The warning prints only once but it's likely the problem affects multiple resources."));try{e=(0,c.Wt)(e)}catch(t){a(i.tG.BAD_DATA,"Malformed data received when requesting file",{url:r,exception:t.toString(),stack:t.stack},p)}}o&&o(g(e))}else{var s=p.response;s||u.responseType&&"text"!==u.responseType||(s=p.responseText),o&&o(g(s))}else m()}try{var y=!Object.prototype.hasOwnProperty.call(u,"asynchronous")||u.asynchronous;if(p.open(u.method||(u.noBody?"HEAD":"GET"),r,y),Object.prototype.hasOwnProperty.call(u,"responseType")&&(p.responseType=u.responseType),u.range&&p.setRequestHeader("Range","bytes="+u.range.min+"-"+u.range.max),!f&&(p.withCredentials=!0,Object.prototype.hasOwnProperty.call(u,"withCredentials")&&(p.withCredentials=u.withCredentials),u.headers))for(var b in u.headers)p.setRequestHeader(b,u.headers[b]),"authorization"===b.toLocaleLowerCase()&&(p.withCredentials=!1);y&&(p.onload=v,p.onerror=m,p.ontimeout=m,p.onabort=function(t){a&&a(p.status,"request was aborted",{url:r,aborted:!0},p)},u.ondata&&(p.overrideMimeType("text/plain; charset=x-user-defined"),u._dlProgress={streamOffset:0},p.onreadystatechange=function(){if(p.readyState>2&&200===p.status&&u.ondata){var t=p.responseText;if(u._dlProgress.streamOffset>=t.length)return;var e=function(t,e){for(var r=t.length-e,n=new ArrayBuffer(r),i=new Uint8Array(n,0),s=0,o=e;s{var r;return null==t||null===(r=t.headers)||void 0===r?void 0:r.get(e)}}}try{const t={method:s.method||(s.noBody?"HEAD":"GET"),body:s.postData,headers:s.headers||{},signal:s.abortSignal};if(s.range&&(t.headers.Range="bytes="+s.range.min+"-"+s.range.max),!o&&(t.credentials="include",Object.prototype.hasOwnProperty.call(s,"withCredentials")&&!1===s.withCredentials&&(t.credentials="omit"),s.headers))for(var f in s.headers)"authorization"===f.toLocaleLowerCase()&&(t.credentials="omit");if(!(u=await fetch(c,t)).ok){let t=await u.text();return void i(u.status,t,{url:r},l(u))}if(s.ondata){const t=u.body.getReader();for(;;){let{done:e,value:r}=await t.read();if(e)return void(n&&n(null));s.ondata(r)}}else{let t;s.responseType&&"text"!==s.responseType?"json"===s.responseType?t=await u.json():(t=await u.arrayBuffer(),200===c.status&&s.range&&(t=new Uint8Array(t,s.range.min,s.range.max-s.range.min))):t=await u.text(),n&&n(t)}}catch(t){"AbortError"===t.name?i(0,"request was aborted",{url:r,aborted:!0},l(u)):u?i(u.status,u.statusText,{url:r,exception:t},l(u)):i(0,"network error",{url:r,exception:t})}}}function y(t,e){Object.prototype.hasOwnProperty.call(e,"responseType")||(e.responseType="arraybuffer"),Object.prototype.hasOwnProperty.call(e,"withCredentials")||(e.withCredentials=!!t.auth),e.headers=t.headers,e.queryParams=t.queryParams,e.endpoint=t.endpoint,e.escapeOssObjects=t.escapeOssObjects}h.defaultFailureCallback=function(t,e,r){403==t?this.raiseError(i.tG.NETWORK_ACCESS_DENIED,"Access denied to remote resource",{url:r.url,httpStatus:t,httpStatusText:e}):404==t?this.raiseError(i.tG.NETWORK_FILE_NOT_FOUND,"Remote resource not found",{url:r.url,httpStatus:t,httpStatusText:e}):0===t&&r.aborted?this.raiseError(i.tG.LOAD_CANCELED,"Request aborted",{url:r.url,httpStatus:t,httpStatusText:e}):t>=500&&t<600?this.raiseError(i.tG.NETWORK_SERVER_ERROR,"Server error when accessing resource",{url:r.url,httpStatus:t,httpStatusText:e}):r.exception?this.raiseError(i.tG.NETWORK_FAILURE,"Network failure",{url:r.url,exception:r.exception.toString(),stack:r.exception.stack}):this.raiseError(i.tG.NETWORK_UNHANDLED_RESPONSE_CODE,"Unhandled response code from server",{url:r.url,httpStatus:t,httpStatusText:e,data:r})},h.getItem=function(t,e,r,n,i){if(y(t,i=i||{}),i.range&&!t.supportsRangeRequests){let t="start="+i.range.min+"&end="+i.range.max;i.queryParams?i.queryParams+="&"+t:i.queryParams=t,i.range=void 0}h.rawGet(t.endpoint,"items",e,r,n,i)},h.getManifest=function(t,e,r,n,i){i=i||{},Object.prototype.hasOwnProperty.call(i,"responseType")||(i.responseType="json"),y(t,i),h.rawGet(t.endpoint,"bubbles",e,r,n,i)},h.getProperties=function(t,e,r,n,i,s){const o={};y(t,o),o.responseType="json",o.guid=r,o.method="POST",o.postData=JSON.stringify(n),o.headers["Content-Type"]="application/json",o.headers.accept="application/json",o.headers["Access-Control-Allow-Origin"]="*",h.rawGet(t.endpoint,"properties",e,i,s,o)},h.getThumbnail=function(t,e,r,n,i){y(t,i=i||{});var s=i.queryParams||"",o=[];if(-1===s.indexOf("guid=")&&i.guid&&o.push("guid="+encodeURIComponent(i.guid)),-1===s.indexOf("role=")){var a=i.role||"rendered";o.push("role="+a)}if(-1===s.indexOf("width=")){let t=i.size||400;o.push("width="+t)}if(-1===s.indexOf("height=")){let t=i.size||400;o.push("height="+t)}-1===s.indexOf("acmsession=")&&i.acmsession&&o.push("acmsession="+i.acmsession);var u=o.join("&");i.queryParams?i.queryParams=i.queryParams+"&"+u:i.queryParams=u,h.rawGet(t.endpoint,"thumbnails",e,r,n,i)},h.getACMSession=function(t,e,r,i){const s={numOfAttempts:4,timeMultiple:5,retry:(t,e)=>(n.vF.warn(`acmsession request failed. Attempt #${e}`),!0)};(0,u.backOff)((()=>new Promise(((r,n)=>{h._getACMSession(t,e,r,n)}))),s).then((function(){return r(...arguments)})).catch((function(){return i(...arguments)}))},h._getACMSession=function(t,e,r,n){var i,s={};for(var o in e)"oauth2AccessToken"===o?i=e[o]:-1!==o.indexOf("x-ads-acm")&&(s[o]=e[o]);s.application="autodesk";var a=new XMLHttpRequest;a.open("POST",t+"/oss-ext/v2/acmsessions",!0),a.setRequestHeader("Content-Type","application/json"),a.setRequestHeader("Authorization","Bearer "+i),a.responseType="json",a.onload=function(){if(200===a.status&&a.response){var t="string"==typeof a.response?JSON.parse(a.response):a.response;t&&t.acmsession?r(t.acmsession):n(a.status,"Can't get acm session from response.")}else n(a.status)},a.onerror=n,a.ontimeout=n,a.send(JSON.stringify(s)),delete s.application}},577:(t,e,r)=>{"use strict";r.d(e,{sR:()=>x,_$:()=>v,aK:()=>b});var n=r(6247),i=(0,n.mS)(),s=i;s&&s.document,i.LOCALIZATION_REL_PATH="",i.LMV_VIEWER_VERSION="7.99.1",i.LMV_BUILD_TYPE="Production",i.LMV_RESOURCE_ROOT="",i.LMV_IS_FLUENT_BUILD=!1,i.USE_OTG_DS_PROXY=!1,i.LMV_THIRD_PARTY_COOKIE=!(0,n.Gz)()&&void 0,"v"===i.LMV_VIEWER_VERSION.charAt(0)&&(i.LMV_VIEWER_VERSION=i.LMV_VIEWER_VERSION.substr(1)),i.LMV_VECTOR_PDF=!1,i.LMV_RASTER_PDF=!0;const o=(0,n.mS)();var a={},u=null;a.ENDPOINT_API_DERIVATIVE_SERVICE_V2="derivativeV2",a.ENDPOINT_API_MODEL_DERIVATIVE_V2="modelDerivativeV2",a.ENDPOINT_API_FLUENT="fluent",a.ENDPOINT_API_D3S="D3S",a.ENDPOINT_API_DERIVATIVE_STREAMING="streamingV2";var c,h={derivativeV2:{baseURL:"/derivativeservice/v2",itemURL:"/derivativeservice/v2/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",propertyQueryURL:"/modelderivative/v2/designdata/:urn/metadata/:guid/properties:query"},derivativeV2_EU:{baseURL:"/derivativeservice/v2/regions/eu",itemURL:"/derivativeservice/v2/regions/eu/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/regions/eu/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn"},derivativeV2_APAC:{baseURL:"/derivativeservice/v2/regions/apac",itemURL:"/derivativeservice/v2/regions/apac/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/regions/apac/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/apac/thumbnails/:urn"},derivativeV2_Fedramp:{baseURL:"/derivativeservice/v2",itemURL:"/derivativeservice/v2/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn"},modelDerivativeV2:{baseURL:"/modelderivative/v2/",itemURL:"/modelderivative/v2/designdata/:urn/manifest/:derivativeurn",manifestURL:"/modelderivative/v2/designdata/:urn/manifest",thumbnailsURL:"/modelderivative/v2/designdata/:urn/thumbnail",propertyQueryURL:"/modelderivative/v2/designdata/:urn/metadata/:guid/properties:query"},fluent:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S_EU:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S_APAC:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/APAC/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2_EU:{baseURL:"/regions/eu/modeldata",itemURL:"/regions/eu/modeldata/file/:derivativeurn",manifestURL:"/regions/eu/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn",cdnURL:"/regions/eu/cdn",cdnWS:"/regions/eu/cdnws"},streamingV2_APAC:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2_Fedramp:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"}},l="",f=a.ENDPOINT_API_DERIVATIVE_SERVICE_V2,d=!1,p=!1,m="",g=!1;function v(){return c}a.HTTP_REQUEST_HEADERS={},a.queryParams={},a.setEndpointAndApi=function(t,e){null!=t&&(l=t),e&&(f=e,e.startsWith("D3S")&&console.warn(`api=${e} is deprecated and will be removed in a future release. Use streamingV2 or streamingV2_EU (europe region) instead`))},a.getEndpointAndApi=function(){return l+h[f].baseURL},a.getApiEndpoint=function(){return l},a.getApiFlavor=function(){return f},a.getCdnUrl=function(){return u||(l?l+h[f].cdnURL:void 0)},a.getCdnWebSocketEndpoint=function(){return l+(h[f].cdnWS||"")},a.setCdnUrl=function(t){u=t},a.getCdnRedirectUrl=function(){var t=h[f].cdnRedirectURL;return t?l+t:null},a.setAcmSession=function(t){m=t},a.getAcmSession=function(){return m},a.getManifestApi=function(t,e,r){var n=t||l;return e=e||"",(n+=h[r=r||f].manifestURL).replace(":urn",e)},a.getItemApi=function(t,e,r){var n=r||f,i=(t||l)+h[n].itemURL;e=e||"";var s=decodeURIComponent(e);if(-1!==i.indexOf(":urn")){var o=s.split("/")[0]||"";o=(o=o.split(":"))[o.length-1]||"",i=i.replace(":urn",o)}return n===a.ENDPOINT_API_MODEL_DERIVATIVE_V2&&(e=encodeURIComponent(s)),i.replace(":derivativeurn",e)},a.getThumbnailApi=function(t,e,r){return((t||l)+h[r||f].thumbnailsURL).replace(":urn",e||"")},a.getPropertyQueryApi=function(t,e,r,n){let i=(t||l)+h[r||f].propertyQueryURL;return i=i.replace(":urn",e||""),i.replace(":guid",n||"")},a.getUseCredentials=function(){return d},a.getDomainParam=function(){return console.warn("getDomainParam is deprecated, switch to getQueryParams instead."),this.getUseCredentials()&&!(0,n.Gz)()?"domain="+encodeURIComponent(o.location.origin):""},a.addQueryParam=function(t,e){this.queryParams[t]=e},a.deleteQueryParam=function(t){delete this.queryParams[t]},a.getQueryParams=function(t){let e=this.getUseCredentials()&&!(0,n.Gz)()?"domain="+encodeURIComponent(o.location.origin):"";var r;r="bypassds","undefined"!=typeof window&&function(t,e){t=t.replace(/[[]/,"\\[").replace(/[\]]/,"\\]");var r=new RegExp("[\\?&]"+t+"=([^&#]*)").exec(e);return null==r?"":decodeURIComponent(r[1].replace(/\+/g," "))}(r,s.location.href)&&(e=e?e+"&bypassds=1":"bypassds=1");let i=[];for(let t in this.queryParams)i.push(encodeURIComponent(t)+"="+encodeURIComponent(this.queryParams[t]));return i.length&&(e?e+="&"+i.join("&"):e=i.join("&")),e&&t&&(t.queryParams?t.queryParams+="&"+e:t.queryParams=e),e},a.setUseCredentials=function(t){d=t},a.setUseCookie=function(t){p=t},a.getUseCookie=function(){return p},a.isOtgBackend=function(){return this.getApiFlavor()===this.ENDPOINT_API_FLUENT},a.isSVF2Backend=function(){let t=this.getApiFlavor();return t.startsWith(this.ENDPOINT_API_D3S)||t.startsWith(this.ENDPOINT_API_DERIVATIVE_STREAMING)},a.setEscapeOssObjects=function(t){g=t},a.getEscapeOssObjects=function(){return g},a.initLoadContext=function(t){for(var e in(t=t||{}).auth=this.getUseCredentials(),t.endpoint||(t.endpoint=this.getApiEndpoint()),t.api||(t.api=this.getApiFlavor()),t.headers||(t.headers={}),this.HTTP_REQUEST_HEADERS)t.headers[e]=this.HTTP_REQUEST_HEADERS[e];return t.api,this.ENDPOINT_API_FLUENT,this.getQueryParams(t),t.otg_cdn=u||this.getCdnUrl(),t.otg_ws=this.getCdnWebSocketEndpoint(),t.escapeOssObjects=this.getEscapeOssObjects(),t};var y=!1;function b(){return y}let x=a;a.initLoadContext.bind(a)},7676:(t,e,r)=>{"use strict";r.d(e,{k:()=>s});var n=r(5468);function i(t){var e=new n.iD(t.fragments);e.finfo.wantSort=t.fragments.wantSort,e.build(t.bvhOptions);var r={nodes:e.nodes.getRawData(),primitives:e.primitives};t.worker.postMessage({bvh:r,modelId:t.modelId,jobId:t.jobId},[r.nodes,r.primitives.buffer])}function s(t){t.register("COMPUTE_BVH",{doOperation:i})}},1711:(t,e,r)=>{"use strict";r.d(e,{k:()=>d});var n=r(7365),i=r(6118),s=1;function o(){this.vb=null,this.vbstride=0,this.posOffset=0,this.normalOffset=0,this.matrices=null,this.ranges=null,this.dbIds=null,this.id=s++}function a(t){t.x=.5*(1+Math.atan2(t.y,t.x)/Math.PI),t.y=.5*(1+t.z),t.z=0}function u(t,e,r){e[r++]=255&t,e[r++]=t>>8&255,e[r++]=t>>16&255,e[r]=0}var c=function(t,e,r,n,i,s,o){for(var u,c,h,l,f,d,p,m=t.posOffset,g=n;g{"use strict";r.d(e,{k:()=>d});var n=r(8661);class i{constructor(){this.numPolyLine=0,this.numEllipticals=0,this.numCirculars=0,this.numSegments=0,this.geometries=[]}addPolyLine(t,e,r){this.numPolyLine++;const n=t.length/2,i=[];for(let e=0;e({type:"polyLine",vertices:t,fillColor:e,dbId:r}))(i,e,r);this.geometries.push(s)}addSegment(t,e,r){this.numSegments++;const n=((t,e,r)=>({type:"lineSegment",from:t,to:e,dbId:r}))(t,e,r);this.geometries.push(n)}addCircularArc(t,e,r,n,i,s){this.numCirculars++;const o=((t,e,r,n,i)=>({type:"circularCurve",circle:{center:t,radius:e},startInRadians:r,endInRadians:n,dbId:i}))([t,e],r,n,i,s);this.geometries.push(o)}addEllipticalArc(t,e,r,n,i,s,o){this.numEllipticals++;const a={ellipse:{center:[t,e],majorAxis:i,minorAxis:s,tiltInRadians:r},startInRadians:n,endInRadians:o,dbId:void 0};this.geometries.push(a)}}var s=r(3293),o=r(6916),a=r(7480);class u{constructor(t,e){if(this.metadata=t,this.scaleX=1,this.scaleY=1,this.bbox={min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}},this.fillColor=null,t){const e=t.page_dimensions;this.setScale(e)}this.excludeTextGeometry=e.excludeTextGeometry||!0,this.dbId=0,this.maxDbId=0,this.geometry=new i,this.error=!1,this.offsetX=0,this.offsetY=0}setScale(t){this.paperWidth=t.page_width,this.paperHeight=t.page_height,this.scaleX=this.paperWidth/t.plot_width,this.scaleY=this.paperHeight/t.plot_height}load(t,e){e instanceof Uint8Array||(e=new Uint8Array(e)),this.data=e,this.parse(),t.loadDoneCB(!0)}loadFrames(t){this.loadContext=t;let e=t.data;e?(e instanceof Uint8Array||(e=new Uint8Array(e)),this.data=e):t.finalFrame&&(this.data=null),this.probeFrames(t.finalFrame),t.loadDoneCB(!0)}sx(t){return t*this.scaleX}sy(t){return t*this.scaleY}parserAssert(t,e,r){return t!=e&&(o.vF.warn("Expect "+e+"; actual type is "+t+"; in function "+r),this.error=!0,!0)}parseDataType(){const t=this.stream.getVarints();switch(t){case n.d$.dt_void:this.parseVoid();break;case n.d$.dt_int:this.parseInt();break;case n.d$.dt_object:this.parseObject();break;case n.d$.dt_varint:this.parseVarint();break;case n.d$.dt_point_varint:this.parsePoint();break;case n.d$.dt_float:this.parseFloat();break;case n.d$.dt_point_varint_array:this.parsePointsArray();break;case n.d$.dt_circular_arc:this.parseCircularArc();break;case n.d$.dt_circle:this.parseCircle();break;case n.d$.dt_arc:this.parseArc();break;case n.d$.dt_int_array:this.parseIntArray();break;case n.d$.dt_varint_array:this.parseVarintArray();break;case n.d$.dt_byte_array:this.parseByteArray();break;case n.d$.dt_string:this.parseString();break;case n.d$.dt_double_array:this.parseDoubleArray();break;default:this.error=!0,o.vF.info("Data type not supported yet: "+t)}}readHeader(){const t=this.stream=new s.z(this.data),e=t.getString(3);if("F2D"!==e)return o.vF.error("Invalid F2D header : "+e,(0,a.$f)(a.tG.BAD_DATA)),!1;const r=t.getString(2);return"01"!==r?(o.vF.error("Only support f2d major version 1; actual version is : "+r,(0,a.$f)(a.tG.BAD_DATA)),!1):"."!==t.getString(1)?(o.vF.error("Invalid version delimiter.",(0,a.$f)(a.tG.BAD_DATA)),!1):(t.getString(2),!0)}probe(){const t=this.stream;this.error=!1;try{for(;t.offset{"use strict";r.d(e,{k:()=>v});var n=r(1136);function i(t){this.buffer=t,this.offset=0,this.byteLength=t.length,this.convBuf=new ArrayBuffer(8),this.convUint8=new Uint8Array(this.convBuf),this.convUint16=new Uint16Array(this.convBuf),this.convInt32=new Int32Array(this.convBuf),this.convUint32=new Uint32Array(this.convBuf)}function s(t){this.offset=t,this.message="try to access an offset that is out of bounds: "+this.offset,this.toString=function(){return this.message}}i.prototype.boundsCheck=function(t){if(t>=this.byteLength)throw new s(t)},i.prototype.seek=function(t){this.boundsCheck(t),this.offset=t},i.prototype.getBytes=function(t){this.boundsCheck(this.offset+t);var e=new Uint8Array(this.buffer.buffer,this.offset,t);return this.offset+=t,e},i.prototype.skipBytes=function(t){this.boundsCheck(this.offset+t),this.offset+=t},i.prototype.getVarints=function(){var t,e=0,r=0;do{this.boundsCheck(this.offset),e|=(127&(t=this.buffer[this.offset++]))<32767&&(t|=4294901760),t},i.prototype.getInt32=function(){this.boundsCheck(this.offset+4);var t=this.buffer,e=this.convUint8,r=this.offset;return e[0]=t[r],e[1]=t[r+1],e[2]=t[r+2],e[3]=t[r+3],this.offset+=4,this.convInt32[0]},i.prototype.getUint32=function(){this.boundsCheck(this.offset+4);var t=this.buffer,e=this.convUint8,r=this.offset;return e[0]=t[r],e[1]=t[r+1],e[2]=t[r+2],e[3]=t[r+3],this.offset+=4,this.convUint32[0]},i.prototype.skipUint32=function(){this.boundsCheck(this.offset+4),this.offset+=4},i.prototype.getFloat32=function(){return this.boundsCheck(this.offset+4),this.offset+=4,0},i.prototype.getFloat64=function(){return this.boundsCheck(this.offset+8),this.offset+=8,0},i.prototype.skipFloat64=function(){this.boundsCheck(this.offset+8),this.offset+=8},i.prototype.reset=function(t){this.buffer=t,this.offset=0,this.byteLength=t.length};var o=r(8661),a=r(7480),u=r(6916);function c(){this.data=null,this.frameStart=0,this.frameEnd=0,this.stream=null,this.opCount=0,this.marker={frameStart:this.frameStart,frameEnd:this.frameEnd}}c.prototype.load=function(t){return this.data=t,this.frameStart=0,this.stream?(this.stream.reset(this.data),this.stream.seek(0),this.frameEnd=0):(this.stream=new i(this.data),this.stream.seek(8),this.frameStart=8,this.frameEnd=8),this.probe(),this.marker.frameStart=this.frameStart,this.marker.frameEnd=this.frameEnd,this.marker};var h=o.d$,l=o.xL;c.prototype.readColor=function(){var t=this.stream;t.getVarints(),t.getVarints(),t.skipUint32()},c.prototype.parsePointPositions=function(){this.stream.getVarints(),this.stream.getVarints()},c.prototype.unhandledTypeWarning=function(t,e){u.vF.warn("Unhandled semantic type when probing F2d : "+e+" in function "+t)},c.prototype.parseObject=function(){this.stream.getVarints()},c.prototype.parseString=function(){var t=this.stream;t.getVarints();var e=t.getVarints();t.skipBytes(e)},c.prototype.parsePoint=function(){this.stream.getVarints(),this.parsePointPositions()},c.prototype.parseVarintArray=function(){var t=this.stream;t.getVarints();for(var e=t.getVarints(),r=0;r0&&(m=y);var w=new c,_=!0,I=0,A=!1;function O(i){if(n.postMessage({type:"F2DAssetURL",urls:f}),f=null,p){let s={type:"F2DSTREAM",finalFrame:!0,finished:!0,progress:1};return A||(s.manifest=e,s.metadata=r,s.basePath=t.basePath,s.f2dSize=m,A=!0),n.debug("Total text bytes count : "+i.length),void n.postMessage(s)}var a;if(s.length>o&&(s=new Uint8Array(s.buffer.slice(0,o))),31==s[0]&&139==s[1])try{a=new Uint8Array(s.buffer,0,o),a=(0,d.Wt)(a)}catch(t){console.error(t)}var u={type:"F2DBLOB",metadata:r,manifest:e,f2dSize:m,basePath:t.basePath,progress:1,buffer:a.buffer},c=[];c.push(a.buffer),n.postMessage(u,c)}function S(){if(p){if(_&&(_=!1,31==s[0]&&139==s[1]))return u.vF.error("F2D streaming broken by non-streaming unzip!",(0,a.$f)(a.tG.BAD_DATA)),void(p=!1);var i=new Uint8Array(s.buffer,I,o-I);try{var c=w.load(i);if(c.frameEnd>c.frameStart){var h=s.buffer.slice(I+c.frameStart,I+c.frameEnd);I+=c.frameEnd;var l=[];l.push(h);let i={type:"F2DSTREAM",frames:h,finalFrame:!1};m&&(i.progress=I/m),A||(i.manifest=e,i.metadata=r,i.f2dSize=m,i.basePath=t.basePath,A=!0),n.postMessage(i,l)}}catch(t){n.debug(t)}}}v=O,g=function(t){l(t),S()},o>0&&S(),null!=h&&O(h)}n.PG.getItem(t,t.url,(function(t){v(t)}),t.onFailureCallback,{ondata:function(t){g(t)},responseType:""}),m(t,"metadata.json.gz",(function(n){try{e=JSON.parse((0,f.xH)(n)),i++}catch(t){self.raiseError(a.tG.BAD_DATA,"")}2===i&&y(t,r,e)})),m(t,"manifest.json.gz",(function(n){try{n&&(r=JSON.parse((0,f.xH)(n))),i++}catch(t){}2===i&&y(t,r,e)}))}function v(t){t.register("STREAM_F2D",{doOperation:g})}},574:(t,e,r)=>{"use strict";r.d(e,{k:()=>N});var n=r(8983),i=r(6247),s=r(2816),o=new Float32Array(3),a=1/Math.PI,u=Math.atan2;(0,i.Gz)()||(u=function(t,e){var r=Math.abs(e),n=Math.abs(t),i=Math.min(r,n)/Math.max(r,n),s=i*i,o=((-.0464964749*s+.15931422)*s-.327622764)*s*i+i;return n>r&&(o=1.57079637-o),e<0&&(o=3.14159274-o),t<0&&(o=-o),o});var c=function(t,e,r,n,i){var s={x:e[t*n],y:e[t*n+1],z:e[t*n+2]},o={x:s.x-e[t*i],y:s.y-e[t*i+1],z:s.z-e[t*i+2]},a=r[n].next==i?r[n].prev:r[n].next;return{pos:s,next:o,prev:a<0?{x:o.x,y:o.y,z:o.z}:{x:e[t*a]-s.x,y:e[t*a+1]-s.y,z:e[t*a+2]-s.z}}},h=function(t,e,r,n,i){if("OCTM"!=t.getString(4))return null;if(5!=t.getInt32())return null;var c=t.getString(3);t.getUint8();var h={stream:null,vertices:null,indices:null,normals:null,colors:null,uvs:[],attrs:[]};h.vertexCount=t.getInt32(),h.triangleCount=t.getInt32(),h.texMapCount=t.getInt32(),h.attribMapCount=t.getInt32(),h.flags=t.getInt32(),h.comment=t.getString(t.getInt32());var l=i;h.vbstride=3,1&h.flags&&(h.vbstride+=l?1:3),h.vbstride+=2*(h.texMapCount||0),h.vbstride+=3*(h.attribMapCount||0),h.vblayout={};var f=0;if(h.vblayout.position={offset:f,itemSize:3},f+=3,1&h.flags&&(h.vblayout.normal={offset:f,itemSize:l?2:3,bytesPerItem:l?2:4,normalized:l},f+=l?1:3),h.texMapCount)for(var d=0;d1?(a.vertexCount=t.readU16(),i=t.readU16(),o=t.readU16(),e.version>2&&(a.lineWidth=t.readF32())):(a.vertexCount=t.readU32V(),i=t.readU32V(),o=t.readU32V()),a.isLines=!0):(a.vertexCount=t.readU16(),i=t.readU16(),a.pointSize=t.readF32(),a.isPoints=!0);var u=0!=t.stream.getUint8();a.vbstride=3,u&&(a.vbstride+=3),a.vblayout={};var h=0;a.vblayout.position={offset:h,itemSize:3},h+=3,u&&(a.vblayout.color={offset:h,itemSize:3}),a.vb=new Float32Array(a.vertexCount*a.vbstride);var l,f,d=a.vb,p=a.vbstride,m=t.stream;if(m.getVector3Array(d,a.vertexCount,a.vblayout.position.offset,p),u)for(l=0,h=a.vblayout.color.offset,f=a.vertexCount;l1?(v=new Uint16Array(g(m.getBytes(2*i))),y=new Uint16Array(g(m.getBytes(2*o)))):(v=new Int32Array(g(m.getBytes(4*i))),y=new Int32Array(g(m.getBytes(4*o))));var b=y[o-1]-o+1;a.indices=new Uint16Array(2*b);for(var x=0,w=0;w+1=0&&++l,f[h].prev=u,f[h].prev_seg=o,f[h].next>=0&&++l;var d=2*n,p=new Array(d),m=new Uint16Array(6*(n+l)),g=0;for(o=0;o=0&&(h=2*f[u].prev_seg+1,u=a,m[g++]=2*h,m[g++]=2*u,m[g++]=2*h+1,m[g++]=2*u+1,m[g++]=2*u,m[g++]=2*h);t.indices=m;var v=2*d;t.vb=new Float32Array(v*t.vbstride),i=t.vblayout.position.offset;for(var y=0;y0?(this.precisionTolerance=r,this.scale=1/this.precisionTolerance):(this.precisionTolerance=-r*this.boxSize,this.scale=1/this.precisionTolerance),this.snapBaseX=this.bbox.min.x,this.snapBaseY=this.bbox.min.y,this.snapBaseZ=this.bbox.min.z,this.xymap={}}findOrAddPoint(t,e,r,n){let i,s=0|(t-this.snapBaseX)*this.scale,o=0|(e-this.snapBaseY)*this.scale,a=0|(r-this.snapBaseZ)*this.scale,u=1/0;for(let n=s-1;n<=s+1;n++){let s=this.xymap[n];if(s)for(let n=o-1;n<=o+1;n++){let o=s[n];if(o)for(let n=a-1;n<=a+1;n++){let s=o[n];if(void 0===s)continue;this.getVertex(s,M);let a=M,c=(a.x-t)*(a.x-t)+(a.y-e)*(a.y-e)+(a.z-r)*(a.z-r);cthis.precisionTolerance&&(i=void 0),void 0===i){let t=this.xymap[s];t||(t=this.xymap[s]={});let e=t[o];return e||(e=t[o]={}),e[a]=n,n}return i}}let F=new S.S,R=new S.S,z=new S.S,V=new S.S,U=new S.S;class D{constructor(t,e,r){let n=t.boundingBox||r,i=new T.K;n&&i.copy(n),this.geom=t,this.myVerts=function(t,e){var r=new Float32Array(3*P(t));return function(t,e,r){t.attributes,m||(m=new S.S,g=new S.S,new S.S),r&&(v||(v=new THREE.Matrix3),v.getNormalMatrix(r));const{positions:n,stride:i,poffset:s}=k(t),{normals:o,noffset:a}=C(t);if(n)for(var u=P(t),c=s,h=a,l=0;lu){var l=a;a=u,u=l,h=!0}var f=s[a];if(f){var d=f[u];if(void 0===d)f[u]=h?-r-1:r;else{if(n)o.push(t),o.push(e);else{i.getNormal(t,e,r,V),d<0?i.getNormal(u,a,i.remap[-d-1],U):i.getNormal(a,u,i.remap[d],U);var p=V.dot(U);Math.abs(p)<.25&&(o.push(t),o.push(e))}delete f[u]}}else s[a]={},s[a][u]=r}}for(var u in function(t,e){var r,n,i;y||(y=new S.S,b=new S.S,x=new S.S,w=new S.S,_=new S.S,I=new S.S);const{positions:s,stride:o,poffset:a}=k(t),{normals:u,noffset:c}=C(t),h=function(t){return t.ib||t.indices||(t.index?t.index.array:null)}(t);if(s)if(h){var l=t.groups;l&&0!==l.length||(l=[{start:0,count:h.length,index:0}]);for(var f=0,d=l.length;f>5];return!(e&&e&1<<(31&t))};for(i=0;i{"use strict";r.d(e,{k:()=>h});var n=r(1136),i=r(5468),s=r(1706);function o(t,e){this.min.x=t[e],this.min.y=t[e+1],this.min.z=t[e+2],this.max.x=t[e+3],this.max.y=t[e+4],this.max.z=t[e+5]}function a(t,e){t[e]=this.min.x,t[e+1]=this.min.y,t[e+2]=this.min.z,t[e+3]=this.max.x,t[e+4]=this.max.y,t[e+5]=this.max.z}function u(t,e){var r=t[1]<<8|t[0];r||(r=28),this.boxStride=r/4,this.count=t.byteLength/r-1;let n=e.globalOffset||{x:0,y:0,z:0},i=e.fragmentTransformsOffset||{x:0,y:0,z:0};if(this.count){this.boxes=new Float32Array(t.buffer,r),this.flags=new Int32Array(t.buffer,r);var u=this.boxes;if(e.placementTransform){var c=new s.K,h=0;for(let t=0;t{"use strict";r.d(e,{k:()=>E});var n=r(1136),i=r(6247);const s="otg",o="otg-content",a="otg-lru",u=25e4;class c{constructor(t){this.db=null,this.readTransaction=null,this.loaded=!1,this.opening=!1,this.dbDisabled=this._isDbDisabled(t),!(0,i.Gz)()&&this.dbDisabled&&console.log("IndexedDb disabled"),this.storeName=o,this.storeNameTimestamp=a,this.bothStoreNames=[this.storeName,this.storeNameTimestamp],this.pendingTimestampUpdates={},this.pendingTimestampCount=0,this.pendingStores=[],this._pendingCallbacks=[]}_isDbDisabled(t){return t||(0,i.Gz)()||(0,i.nr)()||(0,i.Xb)()||"undefined"==typeof indexedDB}notifyPendingCallbacks(t){this._pendingCallbacks.forEach((e=>e(t,this.db))),this._pendingCallbacks=[]}open(t){if(this.dbDisabled)return void(t&&t());if(this.loaded)return void(t&&t(null,this.db));if(t&&this._pendingCallbacks.push(t),this.opening)return;this.opening=!0;let e=indexedDB.open(s,1);e.onerror=t=>{console.error("Failed to open or create cache database."),this.dbDisabled=!0,this.notifyPendingCallbacks(t)},e.onsuccess=t=>{this.opening=!1,this.db=t.target.result,this.db.onerror=function(t){console.error("Database error",t)},this.loaded=!0,this.notifyPendingCallbacks()},e.onupgradeneeded=t=>{console.log("Db upgrade",this.storeName);let e=t.target.result;e.createObjectStore(o),e.createObjectStore(a).createIndex(a+"-index","t",{unique:!1})}}deleteOld(t){if(!this.db)return void t();if(this.deleteInProgress)return;this.deleteInProgress=!0;let e=IDBKeyRange.upperBound(Date.now()-3e5,!0),r=[];this.db.transaction([this.storeNameTimestamp]).objectStore(this.storeNameTimestamp).index(this.storeNameTimestamp+"-index").openCursor(e).onsuccess=e=>{let n=e.target.result;if(n&&r.length<200)return r.push(n.primaryKey),void n.continue();if(r.length){console.log("Deleting old objects.",r.length);let e=this.db.transaction(this.bothStoreNames,"readwrite");e.oncomplete=e=>{this.deleteInProgress=!1,console.log("Delete done"),t&&t()},e.onerror=t=>{this.deleteInProgress=!1,console.error("Transaction error.",t)},e.onabort=t=>{this.deleteInProgress=!1;let e=t.target.error;console.log("Failed to delete cached objects",e)};let n=e.objectStore(this.storeName),i=e.objectStore(this.storeNameTimestamp);for(let t=0;t{t()}),e.onerror=e=>{console.error("Transaction error.",e),t&&t(e.target.error)},e.onabort=e=>{"QuotaExceededError"===e.target.error.name&&this.deleteOld((()=>{})),t&&t(e.target.error)},this.writeTransaction=e}for(var e=0;e{console.error("Object store error.",t)},this.writeTransaction.objectStore(this.storeNameTimestamp).put({t:Date.now()},r)}this.pendingStores=[],this.writeTransaction=null}else t&&t()}store(t,e,r){this.db?(e=e.slice(),this.pendingStores.push(t),this.pendingStores.push(e),this.pendingStores.length<200||this.deleteInProgress?r&&r():this.flush(r)):r&&r()}flushTimestamps(t){let e=this.db.transaction([this.storeNameTimestamp],"readwrite");t&&(e.oncomplete=e=>{t()}),e.onerror=e=>{console.error("Transaction error.",e),t&&t(e.target.error)},e.onabort=e=>{"QuotaExceededError"===e.target.error.name&&(console.log("Quota exceeded"),this.deleteOld((()=>{}))),t&&t(e.target.error)};let r=e.objectStore(this.storeNameTimestamp);for(let t in this.pendingTimestampUpdates)r.put({t:this.pendingTimestampUpdates[t]},t);this.pendingTimestampUpdates={},this.pendingTimestampCount=0}_createReadTransaction(){let t=this.readTransaction=this.db.transaction(this.storeName);t.oncomplete=t=>{this.readTransaction=null},t.onerror=t=>{console.error("Transaction error.",t),this.readTransaction=null},t.onabort=t=>{console.warn("Transaction abort",t),this.readTransaction=null}}get(t,e){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void e(-1,null);if(!this.db)return void e(-1,null);let r;this.readTransaction||this._createReadTransaction();try{r=this.readTransaction.objectStore(this.storeName).get(t)}catch(e){this._createReadTransaction(),r=this.readTransaction.objectStore(this.storeName).get(t)}r.onsuccess=r=>{if(!r.target.result)return void e(-1,null);let n=r.target.result;e(null,n),this.pendingTimestampUpdates[t]=Date.now(),this.pendingTimestampCount++},r.onerror=t=>{e(t.target.errorCode)}}flushStoresAndTimestamps(){this.db&&this.flush((t=>{t||this.flushTimestamps()}))}size(t){if(!this.db)return void t();let e=0,r=0,n=this.db.transaction([this.storeName]).objectStore(this.storeName).openCursor();n.onsuccess=n=>{let i=n.target.result;if(i){let t=i.value;e+=t.length,r++,i.continue()}else t(null,{size:e,items:r})},n.onerror=function(e){t(e)}}estimateCachedHashCount(t){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void t(void 0);if(!this.db)return void t(void 0);let e,r=this.db.transaction(this.storeNameTimestamp);try{e=r.objectStore(this.storeNameTimestamp).openKeyCursor()}catch(e){return void t(void 0)}let n=2;e.onsuccess=e=>{const i=e.target.result;if(i)if(--n>0)i.advance(999);else{const e=i.key.charCodeAt(0);t(65536e3/e),r.abort()}else t(2==n?0:1==n?1e3:void 0)},e.onerror=e=>{t(void 0)}}readAllCachedHashes(t){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void t([]);if(!this.db)return void t([]);let e,r=this.db.transaction(this.storeNameTimestamp);try{e=r.objectStore(this.storeNameTimestamp).getAllKeys()}catch(e){return void t([])}e.onsuccess=e=>{t(e.target.result)},e.onerror=e=>{t([])}}}var h=r(8914),l=r(9861),f=r(3314),d=r(4318);r(6916);(class{MAX_SIZE=2e3;#t=0;totalBytes=0;head;tail;get count(){return this.#t}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2e3,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(t,e)=>this.count>this.MAX_SIZE;this.MAX_SIZE=t,this.trimEval=e}clear(){this.#t=0,this.totalBytes=0,this.head=null,this.tail=null}onReceived(t,e){this.addNode(new p(t),e)}addNode(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;for(0===this.#t?this.head=t:1===this.#t?(this.tail=t,this.head.setNext(t)):(this.tail.setNext(t),this.tail=t),this.#t+=e;this.trimEval(this.head,this.tail);){var r;const t=this.head.next;this.head.unlink(),this.totalBytes-=this.head.size,this.#t-=(null===(r=this.head.data)||void 0===r?void 0:r.count)||1,this.head=t}this.totalBytes+=t.size}}).prototype[Symbol.iterator]=function*(){let t=this.tail;for(;t;)yield t,t=t.prev};class p{data;size=0;prev;next;timestamp;constructor(t){this.data=t,t.size&&(this.size=t.size),this.timestamp=Date.now()}setNext(t){return this.next=t,t&&(this.next.prev=this),this}setPrev(t){return this.prev=t,t&&(this.prev.next=this),this}unlink(){var t,e;null===(t=this.prev)||void 0===t||t.setNext(this.next),null===(e=this.next)||void 0===e||e.setPrev(this.prev),this.prev=null,this.next=null}}const m=2,g=20,v=400;function y(t){return t.worker.ctx||(t.worker.ctx={otgws:[],localDbCache:null,opfsCache:null,numRequests:0,pendingForNetwork:[],_pendingGeomHashes:[],_pendingGeoms:[],_pendingFromCache:[],_pendingTransferList:[],_requestsSent:0,_requestsReceived:0,decoderPorts:[],nextPortIndex:0,analyticsForHttpFallbackSent:!1}),t.worker.ctx}function b(t){var e=y(t);if(!t.disableWebSocket){const r=(e,r,n,i)=>I(t,e,r,n,!1,i),n=(e,r,n)=>function(t,e,r,n){t.raiseError(null,n,{hash:e,resourceType:r}),O(t)}(t,e,r,n),i=e=>function(t,e){for(const[r,n]of e)t.queryParams=n.queryParams,S(t,[r],[n.url],[n.lineageUrn],n.type)}(t,e);for(let s=0;s{t.worker.postMessage({event:e,properties:r})};e.opfsCache=new h.x(r),t.clearIndexedDbIfItsLarge&&async function(){if(!indexedDB.databases)return;if(await new Promise((t=>setTimeout(t,2e4))),!(await indexedDB.databases()).find((t=>{let{name:e}=t;return e===s})))return;let t=indexedDB.open(s,1);t.onerror=t=>{console.error("Failed to open cache database for cleanup.",t)},t.onsuccess=t=>{const e=t.target.result,r=e.transaction(o).objectStore(o).count();r.onsuccess=t=>{if(t.target.result>u){console.log("OPFS cache is enabled and the old IndexedDb cache is taking up storage space. Deleting IndexedDb cache."),e.close();const t=indexedDB.deleteDatabase(s);t.onsuccess=()=>{console.log("IndexedDb cache deleted")},t.onerror=t=>{console.error("Failed to delete IndexedDb cache",t)}}},r.onerror=t=>{console.error("Failed to get count from IndexedDb",t)}}}()}else e.localDbCache=new c(t.disableIndexedDb),e.localDbCache.open(null);e.decoderPorts=t.ports}function x(t){var e=y(t);for(const r of e.otgws)r.addAuthorizeUrn(t.modelUrn);t.useOpfs&&e.opfsCache.open(t.lineageUrn),e.flushMessages||(e.flushMessages=setInterval((()=>{!function(t){var e=y(t);if(0===e.pendingForNetwork.length)return;let r=[],i=0,s=0;for(const t of e.otgws){var o;t.hasPermanentError||i++,(null===(o=t.ws)||void 0===o?void 0:o.readyState)===d.STATE.OPEN?(r.push(t),s+=t.inFlightRequests.size):t._openWebSocket()}if(0===i){e.analyticsForHttpFallbackSent||(e.analyticsForHttpFallbackSent=!0,t.worker.postMessage({event:"OTG_FALLBACK_TO_HTTP",properties:{wsStates:e.otgws.map((t=>{var e;return null===(e=t.ws)||void 0===e?void 0:e.readyState})),wsLastErrorNumInFlight:e.otgws.map((t=>t.lastErrorNumInFlight)),wsLastErrorReasons:e.otgws.map((t=>{var e;return null===(e=t.lastError)||void 0===e?void 0:e.reason})),wsLastErrorCodes:e.otgws.map((t=>{var e;return null===(e=t.lastError)||void 0===e?void 0:e.code}))}}));for(const[r,i,s,o,a]of e.pendingForNetwork)t.queryParams=a,n.PG.getItem(t,i,(e=>I(t,[r],[s],[e],!1,o)),w(t,r,o),{responseType:"arraybuffer",withCredentials:!0});return void(e.pendingForNetwork=[])}if(r.length<=0)return;const a=r.sort(((t,e)=>t.inFlightRequests.size-e.inFlightRequests.size));let u=e.pendingForNetwork.length,c=a[0].inFlightRequests.size;for(let t=1;t=0;t--){const r=a[t],n=c-r.inFlightRequests.size;if(!(n50&&A(t)}O(t,e.length)}function A(t){var e=y(t);if(!e._pendingGeomHashes.length)return;const r=e.decoderPorts[e.nextPortIndex];e.nextPortIndex=++e.nextPortIndex%e.decoderPorts.length,r.postMessage({operation:"DECODE_GEOMETRIES",hashes:e._pendingGeomHashes,arrays:e._pendingGeoms,fromCache:e._pendingFromCache},e._pendingTransferList),e._pendingGeomHashes=[],e._pendingGeoms=[],e._pendingFromCache=[],e._pendingTransferList=[]}function O(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=y(t);r.numRequests-=e,r._requestsReceived+=e,!r.flushCacheAndDisconnectRequested||r.numRequests||r._pendingGeomHashes.length||(function(t){var e,r,n=y(t);(n.numRequests||n._pendingGeomHashes.length)&&(console.error("OtgLoadWorker disconnect requested even though there are requests in flight"),A(t));for(const t of n.otgws)t.closeWebSocket();clearInterval(n.flushMessages),n.flushMessages=null,null===(e=n.localDbCache)||void 0===e||e.open((()=>n.localDbCache.flushStoresAndTimestamps())),null===(r=n.opfsCache)||void 0===r||r.close()}(t),r.flushCacheAndDisconnectRequested=!1)}function S(t,e,r,n,i,s){var o=y(t);if(o._requestsSent+=e.length,o.opfsCache)o.opfsCache.get(e,n).then((s=>{for(let a=0;ao.localDbCache.get(a,(function(e,r){r?I(t,[a],[""],[r],!0,i):o.pendingForNetwork.push([a,u,"",i,t.queryParams])})))):o.pendingForNetwork.push([a,u,"",i,t.queryParams])}}function P(t){var e=y(t);S(t,t.hashes,t.urls,t.lineageUrns,t.type,t.couldBeInCache),e.numRequests+=t.urls.length}function k(t){y(t).flushCacheAndDisconnectRequested=!0,O(t,0)}function C(t){const e=y(t);if(!(t.count<=e.otgws.length))for(let r=e.otgws.length;rt.numRequestsSent)),wsReceived:e.otgws.map((t=>t.numRequestsReceived))};console.log("WorkerState: ",r)}function E(t){t.register("INIT_WORKER_OTG",{doOperation:b}),t.register("ADD_MODEL_OTG",{doOperation:x}),t.register("LOAD_CDN_RESOURCE_OTG",{doOperation:P}),t.register("FLUSH_CACHE_AND_DISCONNECT_OTG",{doOperation:k}),t.register("CLEAR_OPFS_CACHE",{doOperation:T}),t.register("REPORT_LOADING_STATE",{doOperation:M}),t.register("SET_OTGWS_COUNT",{doOperation:C})}},6324:(t,e,r)=>{"use strict";r.d(e,{k:()=>$});var n=r(1136),i=r(2759);function s(t,e){let r,n=0,i=t.length-1;for(;n<=i;){if(r=(n+i)/2|0,e===t[r])return r;e-1||i.indexOf(c[5])>-1)))if(t==g){var h=A.getAttrValue(t,u);a=!0,o.name=h}else{var f=A.attributeHidden(t);if(n&&f)return;var d=A._getObjectProperty(t,u);o.properties.push(d)}}else{var p=A.getObjectProperties(A.getAttrValue(t,u),r,!0,i,s);p&&p.properties&&(l=p)}})),l){var f={},d=o.properties;for(let t=0;t0?t:e},this.nodeHasChild=function(t){let e=!1;return this.enumObjectProperties(t,(function(t){if(t===p)return e=!0,!0})),e},this.getNodeNameAndChildren=function(t,e){var r,n,i=t.dbId;if(this.enumObjectProperties(i,(function(i,s){var o;if(i===m);else if(i!=p||e)i===g?t.name=A.getAttrValue(i,s):i===x?t.flags=A.getAttrValue(i,s,!0):i===v&&(n=s);else if((o=A.getAttrValue(i,s,!0))!==t.dbId){var a={dbId:o,parent:t.dbId};r?r.push(a):r=[a]}})),(!t.name||!t.flags)&&n){const e=A.getAttrValue(v,n,!0);let r=P[e];r||(P[e]=r={dbId:e,name:null,flags:null},A.getNodeNameAndChildren(r,!0)),r.name&&!t.name&&(t.name=r.name),"number"!=typeof t.flags&&"number"==typeof r.flags&&(t.flags=r.flags)}return r},this.buildDbIdToFragMap=T,this.buildObjectTree=function(t,e,r,n){var i;e&&(i=T(e)),_={},I=0;var s=this.buildObjectTreeRec(t,0,i,0,r,n);return I>0&&console.warn("Property database integrity not guaranteed ("+I+")."),_=null,P={},s},this.buildObjectTreeRec=function(t,e,r,n,i,s){if(_[t])return I++,0;_[t]=e||t,n>i[0]&&(i[0]=n);var o,a={dbId:t},u=this.getNodeNameAndChildren(a),c=[];if(u)for(var h=0;h1&&n.push(e[r]);return n},this.bruteForceSearch=function(t,r,n){const i=this.getSearchTerms(t);if(0===i.length)return[];var o=[];const a=null==n?void 0:n.searchHidden,u=null==n?void 0:n.includeInherited,c={};for(let t=0;t{const r=new Set(t);for(let n=0;n7?r[7]:0}},this.enumAttributes=function(t){for(var r=1;r=1;for(let t=0;tg,w=void 0;void 0===g||g>y?((w=u._getObjectProperty(y,b)).displayValueB=w.displayValue,w.displayValue=void 0,r++):x?((w=a._getObjectProperty(g,v)).displayValueB=void 0,e++):((w=a._getObjectProperty(g,v)).displayValueB=A.getAttrValue(y,b),e++,r++),d||(d=[]),d.push(w)}else e++,r++}i&&(n.changedIds.push(t),s&&n.propChanges.push(d))}},p=-1,m=function(t,e){var n=Math.floor(100*t/e);n!=p&&(r&&r(n),p=n)};if(i)for(var g=0;gthis.customAttrs=t,this._attributeIsBlacklisted=t=>this._impl._attributeIsBlacklisted(t),this._getAttributeAndValueIds=(t,e,r,n)=>this._impl._getAttributeAndValueIds(t,e,r,n),this._ignoreAttribute=t=>this._impl._ignoreAttribute(t),this.attributeHidden=t=>this._impl.attributeHidden(t),this.setIdsBlob=t=>this._impl.setIdsBlob(t),this.getObjectCount=()=>this._impl.getObjectCount(),this.getIdAt=t=>this._impl.getIdAt(t),this.externalIdsLoaded=()=>this._impl.externalIdsLoaded(),this.getExternalIdMapping=t=>this._impl.getExternalIdMapping(t),this.findRootNodes=()=>this._impl.findRootNodes(),this.nodeHasChild=t=>this._impl.nodeHasChild(t),this.getNodeNameAndChildren=(t,e)=>this._impl.getNodeNameAndChildren(t,e),this.buildDbIdToFragMap=t=>this._impl.buildDbIdToFragMap(t),this.buildObjectTree=(t,e,r,n)=>this._impl.buildObjectTree(t,e,r,n),this.buildObjectTreeRec=(t,e,r,n,i,s)=>this._impl.buildObjectTreeRec(t,e,r,n,i,s),this.getSearchTerms=t=>this._impl.getSearchTerms(t),this.bruteForceSearch=(t,e,r)=>this._impl.bruteForceSearch(t,e,r),this.bruteForceFind=t=>this._impl.bruteForceFind(t),this.getLayerToNodeIdMapping=()=>this._impl.getLayerToNodeIdMapping(),this.findLayers=()=>this._impl.findLayers(),this.enumObjects=(t,e,r)=>this._impl.enumObjects(t,e,r),this.getAttrChild=()=>this._impl.getAttrChild(),this.getAttrParent=()=>this._impl.getAttrParent(),this.getAttrName=()=>this._impl.getAttrName(),this.getAttrLayers=()=>this._impl.getAttrLayers(),this.getAttrInstanceOf=()=>this._impl.getAttrInstanceOf(),this.getAttrViewableIn=()=>this._impl.getAttrViewableIn(),this.getAttrXref=()=>this._impl.getAttrXref(),this.getAttrNodeFlags=()=>this._impl.getAttrNodeFlags(),this.findParent=t=>this._impl.findParent(t),this.findDifferences=(t,e,r)=>this._impl.findDifferences(t,e,r),this.numberOfAttributes=()=>this._impl.numberOfAttributes(),this.numberOfValues=()=>this._impl.numberOfValues(),this.dtor=()=>this._impl.dtor(),this._customAttrIdOffset=this._impl.numberOfAttributes(),this._customValueIdOffset=this._impl.numberOfValues(),this.getObjectCustomProperties=(t,e)=>{var r;return(null===(r=this.customAttrs)||void 0===r?void 0:r.getObjectProperties(t,e,this._customAttrIdOffset,this._customValueIdOffset))??[]},this.getValueAt=t=>{const e=t-this._customValueIdOffset;return e>=0?this.customAttrs.getValueAt(e):this._impl.getValueAt(t)},this.getIntValueAt=t=>{const e=t-this._customValueIdOffset;return e>=0?this.customAttrs.getValueAt(e):this._impl.getIntValueAt(t)},this.getAttrValue=(t,e,r)=>t-this._customAttrIdOffset>=0?this.customAttrs.getValueAt(e-this._customValueIdOffset):this._impl.getAttrValue(t,e,r),this._getObjectProperty=(t,e)=>{const r=t-this._customAttrIdOffset;return r>=0?this.customAttrs._getObjectProperty(r,e-this._customValueIdOffset):this._impl._getObjectProperty(t,e)},this.getObjectProperties=(t,e,r,n,i)=>{var s;const o=this._impl.getObjectProperties(t,e,r,n,i)??{};return null===(s=this.customAttrs)||void 0===s||s.enumObjectProperties(t,((t,r)=>{const s=this.customAttrs.getAttributeAt(t);e&&-1===e.indexOf(s.name)&&-1===e.indexOf(s.displayName)||i&&-1===i.indexOf(s.category)||n&&(n.indexOf(s.name)>-1||n.indexOf(s.displayName)>-1)||o.properties.push(this.customAttrs._getObjectProperty(t,r))}),0,0),o},this.getAttributeDef=t=>{const e=t-this._customAttrIdOffset;return e>=0?this.customAttrs.getAttributeAt(e):this._impl.getAttributeDef(t)},this.enumAttributes=t=>{var e;this._impl.enumAttributes(t),null===(e=this.customAttrs)||void 0===e||e.enumAttributes(t,this._customAttrIdOffset)},this.enumObjectProperties=(t,e)=>{var r;this._impl.enumObjectProperties(t,e),null===(r=this.customAttrs)||void 0===r||r.enumObjectProperties(t,e,this._customAttrIdOffset,this._customValueIdOffset)},this.getPropertiesSubsetWithInheritance=(t,e,r)=>{var n;const i=this._impl.getPropertiesSubsetWithInheritance(t,e,r);return null===(n=this.customAttrs)||void 0===n||n.enumObjectProperties(t,((t,n)=>{e&&!e[t]||(i.push(t,n),r&&(r[t]=n))}),this._customAttrIdOffset,this._customValueIdOffset),i}}d.prototype.getIndex=function(t){var e=this.dbIdToIndex[t];if(e)return e;e=this.nextNode++,this.nodes.push(t);for(var r=1;rthis.children.length&&console.error("Child index out of bounds -- should not happen"),this.processName(a,r)},d.prototype.processName=function(t,e){var r,n,i=-1,s=-1;if(e&&(s=e.lastIndexOf("]"),-1!==(i=e.lastIndexOf("["))&&-1!==s||(i=e.lastIndexOf(":"),s=e.length)),i>=0&&s>i){r=e.slice(0,i+1);var o=e.slice(i+1,s);(n=parseInt(o,10))&&n+""===o||(r=e,n=0)}else r=e,n=0;var a=this.s2i[r];void 0===a&&(a=this.strings.add(r),this.s2i[r]=a),this.names[t]=a,this.nameSuffixes[t]=n},d.prototype.flatten=function(){this.nodes=p(this.nodes),this.children=p(this.children),this.names=p(this.names),this.nameSuffixes=p(this.nameSuffixes),this.strings.flatten(),this.s2i=null},m.prototype.dtor=function(){this.nodes=null,this.children=null,this.dbIdToIndex=null,this.names=null,this.nameSuffixes=null,this.strings=null,this.visibleIds=null,this.nodeBoxes=null},m.prototype.getNumNodes=function(){return this.numNodes},m.prototype.getIndex=function(t){return this.dbIdToIndex[t]},m.prototype.name=function(t,e){var r,n=this.dbIdToIndex[t],i=this.strings.get(this.names[n]),s=this.nameSuffixes[n];return r=s?"["===i.charAt(i.length-1)?i+s+"]":i+s:i,e&&(this.childCounts||this.computeChildCounts(),this.childCounts[t]>0&&(r+=" ("+this.childCounts[t]+")")),r},m.prototype.getParentId=function(t){var e=this.dbIdToIndex[t];return this.nodes[e*f+1]},m.prototype.getNodeFlags=function(t){var e=this.dbIdToIndex[t];return this.nodes[e*f+4]},m.prototype.setNodeFlags=function(t,e){var r=this.dbIdToIndex[t];r&&(this.nodes[r*f+4]=e)},m.prototype.getNumChildren=function(t){var e=this.dbIdToIndex[t],r=this.nodes[e*f+3];if(r>=0)return r;var n=this.nodes[e*f+2];r=Math.abs(r);for(var i=0,s=0;s=0)return 0;for(var n=this.nodes[e*f+2],i=0,s=(r=Math.abs(r))-1;s>=0&&!(this.children[n+s]>=0);s--)i++;return i},m.prototype.getNodeBox=function(t,e){for(var r=6*this.getIndex(t),n=0;n<6;n++)e[n]=this.nodeBoxes[r+n]},m.prototype.getVisibleIds=function(){return this.visibleIds||(this.visibleIds=Object.keys(this.dbIdToIndex).map((function(t){return parseInt(t)}))),this.visibleIds},m.prototype.enumNodeChildren=function(t,e){var r=this.dbIdToIndex[t],n=this.nodes[r*f+2],i=this.nodes[r*f+3];i=Math.abs(i);for(var s=0;s0)&&e(-o-1,t,r))return t}}},m.prototype.computeBoxes=function(t){this.nodeBoxes||(this.nodeBoxes=new Float32Array(6*this.numNodes));var e=this,r=e.getIndex(e.rootId),n=e.nodeBoxes;function i(t,r,i){var s=e.getIndex(t);o(t,s);for(var a=6*i,u=6*s,c=0;c<3;c++)n[a+c]>n[u+c]&&(n[a+c]=n[u+c]),n[a+c+3]t[s+a]&&(n[o+a]=t[s+a]),n[o+a+3]{e[n]+=r(t)}),!0),t.getNumFragments(n)&&(i=1)),e[n]+i}(t.rootId)},m.prototype.dbIdToIndexFiltered=function(t){const e={},r=this,n=i=>{let s=t(i);return r.enumNodeChildren(i,(t=>{n(t)&&(s=!0)})),s&&(e[i]=r.dbIdToIndex[i]),s};return n(this.rootId),e};const v={Boolean:1,Integer:2,Double:3,Float:4,Blob:10,DbKey:11,String:20,LocalizableString:21,DateTime:22,GeoLocation:23,Position:24},y=[];class b{constructor(){this.lastUpdated=new Date(0),this.lastFetched=new Date(0),this.customValueIds=new Map([["",1]]),this.customValues=[null,""],this.customAttributeValues=new Map}hasObjectProperties(t){return void 0!==this.customAttributeValues.get(t)}enumObjectProperties(t,e,r,n,i){const s=this.customAttributeValues.get(e)??y;for(let e=0;e{r&&this.customAttributeValues.clear();for(const r of e.results){const e=t.customAttrIds.get(r.propId);if(void 0===e)continue;const n=r.svf2Id;let i=this.customAttributeValues.get(n);void 0===i&&(i=[],this.customAttributeValues.set(n,i)),null!==r.value&&i.push(e,this.internValue(r.value))}n&&(this.lastUpdated=Date.parse(e.lastModifiedAt))};await async function(t,e){const{onPage:r}=e??{},n=[];let i=!0;for(;t;){var s;const o=await fetch(t,e);if(!o.ok)throw new Error(o.statusText);const a=await o.json();t=null===(s=a.pagination)||void 0===s?void 0:s.nextUrl,r?await r(a,i,!t):n.push(a),i=!1}return n}(a,{headers:{"Content-Type":"application/json",...n},onPage:e})}catch(t){throw console.error(t),t}return this.lastFetched=Date.now(),this}async setCustomPropertiesValues(t,e){let{baseUrl:r,headers:n,projectId:i,seedFileUrn:s,selection:o,props:a}=e;const u=`${r}/v2/projects/${i}/versions/${encodeURIComponent(s)}/custom-properties`,c={},h={},l=[];for(const[t,e]of Object.entries(a))void 0===e||""===e?l.push(t):h[t]=e;Object.entries(h).length>0&&(c.assignments=[{svf2Ids:o,props:h}]),l.length>0&&(c.removals=[{svf2Ids:o,propIds:l}]);var f=await fetch(u,{method:"POST",body:JSON.stringify(c),headers:{"Content-Type":"application/json",...n}});if(!f.ok)throw new Error(f.statusText);const d=await f.json();if("FAILED"===d.status)return d;const p=Object.entries(a);for(const e of d.successfulSvf2Ids)for(const[r,n]of p){const i=t.customAttrIds.get(r);if(void 0===i)continue;let s=this.customAttributeValues.get(e);void 0===s&&(s=[],this.customAttributeValues.set(e,s));let o=-1;for(let t=0;t=0&&s.splice(o,2);else{const t=this.internValue(n);o<0?s.push(i,t):s[o+1]=t}0===s.length&&this.customAttributeValues.delete(e)}return d}}class x{constructor(){const t=new Date(0);this.attributes={lastFetched:t,lastUpdated:t,customAttrIds:new Map,customAttrs:[]},this.values=null}getValueAt(t){return this.values.customValues[t]}getAttributeAt(t){return this.attributes.customAttrs[t]}_getObjectProperty(t,e){const r=this.getAttributeAt(t);return{displayName:r.displayName??r.name,displayValue:this.getValueAt(e),displayCategory:r.category,attributeName:r.name,type:r.dataType,units:r.dataTypeContext,hidden:!1,precision:r.precision,propType:r.propType,propertyHash:r.propertyHash}}hasObjectProperties(t){var e;return null===(e=this.values)||void 0===e?void 0:e.hasObjectProperties(t)}enumAttributes(t,e){this.attributes.customAttrs.forEach(((r,n)=>{t(n+e,r)}))}enumObjectProperties(t,e,r,n){var i;return null===(i=this.values)||void 0===i?void 0:i.enumObjectProperties(this.attributes.customAttrs,t,e,r,n)}async parseResponse(t,e){const r=t.body.getReader(),n=new TextDecoder;let{value:i,done:s}=await r.read(),o=i?n.decode(i):"";const a=/\r\n|\n|\r/g;let u=0,c=null;for(;;)if(c=a.exec(o),c)e(o.substring(u,c.index)),u=a.lastIndex;else{if(s)break;const t=o.substring(u);({value:i,done:s}=await r.read()),o=t+(i?n.decode(i):""),u=a.lastIndex=0}u{if(null==t)return null;let e=c.get(t);return void 0===e&&(e=t,c.set(t,t)),e};await this.parseResponse(u,(t=>{try{const r=JSON.parse(t);if(s&&!s.has(r.key))return;const n={propertyHash:r.key,category:f(r.category),name:r.name,displayName:r.displayName,dataType:v[r.type]??0,dataTypeContext:f(r.uom)??"",flags:0,precision:f(r.precision)??0,propType:f(r.propType),parameterId:r.parameterId,parameterTypeId:f(r.parameterTypeId),defaultValue:f(r.defaultValue),applicableTo:r.applicableTo};var e=h.get(n.propertyHash);e||(e=l.length,l.push(n)),h.set(n.propertyHash,e)}catch(e){throw console.error(e),console.log(t),e}}));const d=this.attributes;return d.customAttrIds=h,d.customAttrs=l,d.lastFetched=Date.now(),this}async acquireValues(t){let{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,worker:s,dbPath:o,limit:a}=t,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,c=this.values;try{var h;if(c instanceof Promise)c=await c;else if(null===c||u&&Date.now()-c.lastFetched>u){c??=new b;const t=c.refreshCustomPropertiesValues(this.attributes,{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,limit:a});this.values=t,await t,this.values=c}var l=null===(h=s.pdbCache)||void 0===h||null===(h=h.get(o))||void 0===h?void 0:h.pdb;l&&"setCustomAttrs"in l&&l.setCustomAttrs(this)}catch(t){throw this.values=null,t}return c}async setCustomPropertiesValues(t){let{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,selection:s,props:o,worker:a,dbPath:u,limit:c}=t;const h=await this.acquireValues({baseUrl:e,headers:r,projectId:n,seedFileUrn:i,worker:a,dbPath:u,limit:c},0);return await h.setCustomPropertiesValues(this.attributes,{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,selection:s,props:o})}async applyDefinitions(t){let{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,bindings:s,limit:o}=t;const a=`${e}/v2/projects/${n}/lineages/${encodeURIComponent(i)}/custom-properties/bindings`,u={method:"POST",body:JSON.stringify(s),headers:{"Content-Type":"application/json",...r}};delete u.headers["x-use-contingency"];var c=await fetch(a,u);if(c.ok){const t=new Set(this.attributes.customAttrIds.keys());return s.forEach((e=>{let{propId:r,isDeleted:n}=e;return n?t.delete(r):t.add(r)})),await this.refreshCustomProperties({baseUrl:e,headers:r,projectId:n,seedFileUrn:i,propertyFilter:t,limit:o}),await this.values.refreshCustomPropertiesValues(this.attributes,{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,limit:o}),this}throw new Error(c.statusText)}}class w{constructor(){this._cache={}}delete(t){delete this._cache[t]}async acquireDefinitions(t){let{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,dbPath:s}=t,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3e4,a=this._cache[s];try{if(a instanceof Promise)a=await a;else if(void 0===a||o>0&&Date.now()-a.attributes.lastFetched>o){a??=new x;const t=a.refreshCustomProperties({baseUrl:e,headers:r,projectId:n,seedFileUrn:i});this._cache[s]=t,await t,this._cache[s]=a}}catch(t){throw delete this._cache[s],t}return a}async applyDefinitions(t){let{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,dbPath:s,bindings:o,limit:a}=t,u=this._cache[s]??=new x;return u instanceof Promise&&(u=await u),await u.applyDefinitions({baseUrl:e,headers:r,projectId:n,seedFileUrn:i,dbPath:s,bindings:o,limit:a}),u}}function _(t){let e=t.customPropsCache;return e||(t.customPropsCache=e=new w),e}function I(t,e){this.pdb=null,this.waitingCallbacks=[],this.error=!1,this.dbPath=t,this.dbFiles=null,this.isShared=e,this.timestamp=Date.now()}function A(t){this.data=t,this.refCount=1}class O{constructor(){this.pdbCache={},this.fileCache={}}get(t){let e=this.pdbCache[t];return e&&(e.timestamp=Date.now()),e}set(t,e){let r=new I(t,e);return this.pdbCache[t]=r,r}getFile(t){let e=this.fileCache[t];return e&&(e.timestamp=Date.now()),e}setFile(t,e){this.fileCache[t]=new A(e)}delete(t){var e=this.get(t);if(e&&e.pdb&&(e.pdb.refCount--,0===e.pdb.refCount&&(e.isShared||delete this.pdbCache[t],!e.isShared)))for(var r in e.dbFiles){var n=e.dbFiles[r];this.unrefFileCacheEntry(n.storage)}}unrefFileCacheEntry(t){for(var e in t){var r=this.fileCache[e];r&&(r.refCount--,0===r.refCount&&delete this.fileCache[e])}}}function S(t,e,r,i,s){var o;if(-1!==t.indexOf("://")||0===t.indexOf("urn:"))o=t;else{if(!e.dbPath)return void r(null);o=`${e.dbPath}${t}`}var a=n.PG.generateUrl(e.endpoint,"items",o),u=function(t){s&&e.worker.pdbCache&&e.worker.pdbCache.setFile(a,t),i[a]=t,r(t)},c=e.worker.pdbCache&&e.worker.pdbCache.getFile(a);c?(c.refCount++,u(c.data)):n.PG.getItem(e,o,u,(function(t,n,i){404!==t&&e.onFailureCallback(t,n,i),r(null)}))}function P(t,e,r,n){var i,s=t.dbId,o=t.children,a=[];if(o)for(var u=0;udbid mapping!.");else console.warn("ID remap required, but not loaded.");var y=r.idroots;if(y&&y.length){if(o=new d,1==y.length&&r.nodeHasChild(y[0]))s=y[0],r.buildObjectTree(s,h,a,o);else{s=-1e10;var b=[];for(let t=0;t0)){if(e==t.dbId)return r.name=t.name,void(r.dbId=e);var n=t.children;if(n)for(var i=0;i"ElementId"===t.attributeName));if(e&&(t=e.displayValue),s.externalId&&!t){const e=s.externalId.split("-");e.length&&(t=parseInt(e[e.length-1],16))}t&&!s.name.includes(t)&&(s.name+=` [${t}]`)}catch(t){console.warn(`Caught error in updating ElementIds, object with dbId ${s.dbId} skipped`,t)}o.forEach((function(t){"Name"!==t.displayName||t.displayCategory||n.push(s.name);var e=t.displayCategory?`${t.displayCategory}/${t.displayName}`:t.displayName;Object.prototype.hasOwnProperty.call(r,e)||(r[e]=[]),t.parentName=s.name,t.dbId=s.dbId,r[e].push(t)})),Object.prototype.hasOwnProperty.call(s,"name")&&-1===n.indexOf(s.name)&&(Object.prototype.hasOwnProperty.call(r,"Name")||(r.Name=[]),r.Name.push({displayName:"Name",displayValue:s.name,displayCategory:null,attributeName:"Name",type:20,units:null,hidden:!1,precision:0,dbId:s.dbId,parentName:s.name}))}n=[],r.__selected_dbIds__=t.dbIds,t.worker.postMessage({cbId:t.cbId,result:r})}function D(t){var e=t.worker,r=e.pdbCache&&e.pdbCache.get(t.dbPath);if(r&&r.pdb){var n=r.pdb.getExternalIdMapping(t.extIdFilter);e.postMessage({cbId:t.cbId,result:n})}}function L(t){var e=t.worker,r=e.pdbCache&&e.pdbCache.get(t.dbPath);if(r&&r.pdb){var n=r.pdb.getLayerToNodeIdMapping();e.postMessage({cbId:t.cbId,result:n})}}function j(t){var e=t.worker;if(t.clearCaches)return e.pdbCache=null,void(e.customPropsCache=null);e.pdbCache&&e.pdbCache.delete(t.dbPath),e.customPropsCache&&e.customPropsCache.delete(t.dbPath)}function N(t){var e=t.worker,r=t.idsFile||{path:"objects_ids.json.gz"},n={},i=e.pdbCache.get(t.dbPath);i?i.pdb&&i.pdb.externalIdsLoaded()?e.postMessage({cbId:t.cbId}):S(r.path,t,(function(s){if(!s)return;let o=e.pdbCache;(i=o.get(t.dbPath))&&i.pdb||(o.unrefFileCacheEntry(n),e.postMessage({cbId:t.cbId,error:{propDbWasUnloaded:!0}})),i.pdb.setIdsBlob(s),i.byteSize+=s.byteLength;var a={filename:r.path,storage:n};i.dbFiles.push(a),e.postMessage({cbId:t.cbId})}),n,r.isShared):console.error("Delay-loading of externalIDs requires to load the propDb first.")}function B(t){var e=t.worker;if(t.userFunction)try{importScripts(t.userFunction)}catch(r){return console.error(r),void e.postMessage({cbId:t.cbId,error:{msg:"Error while importing 'userFunction'."}})}if(self.userFunction){var r=e.pdbCache&&e.pdbCache.get(t.dbPath);if(r&&r.pdb){var n;try{n=self.userFunction(r.pdb,t.userData)}catch(r){return console.error(r),void e.postMessage({cbId:t.cbId,error:{msg:"Error while executing 'userFunction'."}})}finally{self.userFunction=void 0}e.postMessage({cbId:t.cbId,result:n})}}else e.postMessage({cbId:t.cbId,error:{msg:"function 'userFunction' was not found."}})}async function W(t){const e=t.worker,r=_(e);let n,i;try{var s;n=null===(s=(await r.acquireDefinitions(t)).attributes)||void 0===s?void 0:s.lastFetched}catch(t){i={msg:t.message,error:t}}e.postMessage({cbId:t.cbId,result:n,error:i})}async function G(t){const e=t.worker,r=_(e);let n,i;try{var s;await r.applyDefinitions(t),n=null===(s=(await r.acquireDefinitions(t)).attributes)||void 0===s?void 0:s.lastFetched}catch(t){i={msg:t.message,error:t}}e.postMessage({cbId:t.cbId,result:n,error:i})}async function q(t){const e=t.worker,r=_(e);let n,i;try{const e=await r.acquireDefinitions(t);n=(await e.acquireValues(t,1e3)).lastFetched}catch(t){i={msg:t.message,error:t}}e.postMessage({cbId:t.cbId,result:n,error:i})}async function H(t){const e=t.worker,r=_(e);let n,i;try{const e=await r.acquireDefinitions(t,0);n=(await e.setCustomPropertiesValues(t)).lastUpdated}catch(t){i={msg:t.message,error:t}}e.postMessage({cbId:t.cbId,result:n,error:i})}function $(t){t.register("BUILD_EXTERNAL_ID_MAPPING",{doOperation:D}),t.register("BUILD_LAYER_TO_NODE_ID_MAPPING",{doOperation:L}),t.register("GET_PROPERTIES",{doOperation:V}),t.register("GET_PROPERTY_SET",{doOperation:U}),t.register("SEARCH_PROPERTIES",{doOperation:T}),t.register("DIFF_PROPERTIES",{doOperation:M}),t.register("FIND_PROPERTY",{doOperation:E}),t.register("FIND_LAYERS",{doOperation:F}),t.register("LOAD_PROPERTYDB",{doOperation:C}),t.register("CREATE_TREE",{doOperation:k}),t.register("UNLOAD_PROPERTYDB",{doOperation:j}),t.register("USER_FUNCTION",{doOperation:B}),t.register("LOAD_EXTERNAL_IDS",{doOperation:N}),t.register("REFRESH_CUSTOM_PROPERTIES",{doOperation:W}),t.register("REFRESH_CUSTOM_PROPERTIES_VALUES",{doOperation:q}),t.register("APPLY_CUSTOM_PROPERTIES",{doOperation:G}),t.register("SET_CUSTOM_PROPERTIES_VALUES",{doOperation:H})}},3870:(t,e,r)=>{"use strict";r.d(e,{k:()=>z});var n=r(6247),i=r(5468),s=r(6118),o=r(1136),a=r(3293),u=r(8983),c=r(1706),h=r(7365);var l=((0,n.Xb)(),null);function f(){this.length=0,this.numLoaded=0,this.boxes=null,this.transforms=null,this.materials=null,this.packIds=null,this.entityIndexes=null,this.fragId2dbId=null,this.topoIndexes=null,this.visibilityFlags=null}var d=new s.S;function p(t,e,r,n){var i=t.seekToEntry(e);return i?i.version>2?null:(i.version>1&&t.readU8(),{definition:t.stream.getUint32(),transform:t.readTransform(void 0,void 0,void 0,r,n),instanceNodePath:t.readPathID()}):null}function m(t){switch(t){case"meter":case"meters":case"m":default:return 1;case"feet and inches":case"foot":case"feet":case"ft":return.3048;case"inch":case"inches":case"in":return.0254;case"centimeter":case"centimeters":case"cm":return.01;case"millimeter":case"millimeters":case"mm":return.001}}function g(t,e){var r=t.globalOffset;if(r.x||r.y||r.z){if(e){var n=new h.T(!0);n.copy(e),(e=n).elements[12]-=r.x,e.elements[13]-=r.y,e.elements[14]-=r.z}else(e=new h.T(!0)).makeTranslation(-r.x,-r.y,-r.z);t.placementWithOffset=e}else t.placementWithOffset=e}function v(t,e){t[0]-=e.x,t[1]-=e.y,t[2]-=e.z}function y(t,e){if(e&&(e.transformPoint(t.position),e.transformPoint(t.target),e.transformDirection(t.up),isFinite(t.orthoScale))){const r=e.getMaxScaleOnAxis();t.orthoScale*=r}}function b(t,e){var r=e.definition,n=t.seekToEntry(r);if(!n)return null;if(n.version>2)return null;var i=t.stream,s={isPerspective:!i.getUint8(),position:t.readVector3f(),target:t.readVector3f(),up:t.readVector3f(),aspect:i.getFloat32(),fov:i.getFloat32()*(180/Math.PI)};return n.version<2&&(i.getFloat32(),i.getFloat32()),s.orthoScale=i.getFloat32(),s}function x(t,e){var r=t.seekToEntry(e);if(!r)return null;if(r.version>1)return null;var n=t.stream;return{position:t.readVector3f(),dir:t.readVector3f(),r:n.getFloat32(),g:n.getFloat32(),b:n.getFloat32(),intensity:n.getFloat32(),spotAngle:n.getFloat32(),size:n.getFloat32(),type:n.getUint8()}}const w={NI_Inner:0,NI_Leaf:1};function _(t){const e=t.readString();let r=function(t){let e="";for(let r=0;r<16;r++)e+=t.readU8();return e}(t);const n=t.readU8();if(n===w.NI_Leaf)return{name:e,entry:t.readVarint(),uuid:r};if(n===w.NI_Inner){const r=t.readVarint(),n=[];for(let e=0;et.name===e})[e];if(!r)throw new Error("Error while extracting "+e);return r}function C(t){this.zipPack=t,this.manifest=null,this.materials=null,this.metadata=null,this.fragments=null,this.geompacks=[],this.instances=[],this.cameras=[],this.lights=[],this.viewpoints=[],this.overrideSets=[],this.propertydb={attrs:[],avs:[],ids:[],values:[],offsets:[]},this.bbox=null,this.animations=null,this.pendingRequests=0,this.globalOffset={x:0,y:0,z:0},this.topologyPath=null}C.prototype.loadAsyncResource=function(t,e,r,n){if(r)n(r);else{var i=this;this.pendingRequests++,o.PG.getItem(t,t.basePath+e,(function(e){i.pendingRequests--,n(e),0==i.pendingRequests&&i.postLoad(t)}),t.onFailureCallback)}},C.prototype.loadManifest=function(t){const e=k(this.zipPack,"manifest.json"),r=new a.z(e);this.manifest=JSON.parse(r.getString(e.byteLength))},C.prototype.applyLargeBoxOffset=function(t){!t||t.x===this.globalOffset.x&&t.y===this.globalOffset.y&&t.z===this.globalOffset.z||(this.bbox.isEmpty()||this.bbox.translate({x:this.globalOffset.x-t.x,y:this.globalOffset.y-t.y,z:this.globalOffset.z-t.z}),this.verylargebbox=!0,this.globalOffset.copy(t),g(this,this.placementTransform))},C.prototype.parseFragmentList=function(t,e,r,n){var i=this;this.loadAsyncResource(e,r,n,(function(t){var r=new u.J(t),n=function(t,e,r,n,i,o,a,u){var f=function(t,e){var r=[];if(!e)return r;for(var n=t.getEntryCounts(),i=t.stream,s=0;s5)return;o.version>4&&t.readU8(),t.readU32V(),o.version>2||t.readString(),t.readU32V(),t.readTransform(s,null,12*s);for(var a=0;a<6;a++)i.getFloat32();if(o.version>1){var u=t.readU32V();e.indexOf(u)>=0&&r.push(s)}}return r}(t,void 0),p=f.length?f.length:t.getEntryCounts(),m=t.stream;l&&p>l&&(p=l),e.totalLength=t.getEntryCounts(),e.length=p,e.numLoaded=0;var g,v,y=e.boxes=i?new Float64Array(6*p):new Float32Array(6*p),b=e.transforms=i?new Float64Array(12*p):new Float32Array(12*p),x=e.materials=new Int32Array(p),w=e.packIds=new Int32Array(p),_=e.entityIndexes=new Int32Array(p),I=e.geomDataIndexes=new Int32Array(p),A=e.fragId2dbId=new Int32Array(p),O=e.visibilityFlags=new Uint16Array(p),S=[0,0,0];n&&(g=new c.K,v=new h.T(!0).fromArray(n.elements));var P=!r&&a,k=b,C=12,T=9;function M(t){if(n){var e=6*t;g.setFromArray(y,e),g.applyMatrix4(v),g.copyToArray(y,e)}}function E(t){for(var e=6*t,r=0;r<6;r++)y[e++]=m.getFloat32()}function F(t,e){for(var r=6*t,n=0;n<6;n++)y[r++]=m.getFloat32()+e[n%3]}P&&(i||(y=new Float64Array(6*p),k=new Float64Array(3*p),C=3,T=0));for(var R=0,z=e.length;R5)return;var U=!0;if(V.version>4&&(U=!!(1&t.readU8())),O[R]=U?1:0,x[R]=t.readU32V(),V.version>2?I[R]=t.readU32V():(w[R]=parseInt(t.readString()),_[R]=t.readU32V()),t.readTransform(R,b,12*R,n,r,S),P&&k!==b&&k.set(S,R*C+T),V.version>3?F(R,S):E(R),M(R),r){var D=6*R;y[D++]-=r.x,y[D++]-=r.y,y[D++]-=r.z,y[D++]-=r.x,y[D++]-=r.y,y[D++]-=r.z}V.version>1&&(A[R]=t.readU32V())}if(P){var L=-1,j=-1,N=-1,B=y.length;for(let t=0;t100*L||W.y>100*j||W.z>100*N){var G=0,q=0,H=0;for(let t=0;t2){var f=n.getInt32();if(-1!=f&&void 0===i){i=e.topoIndexes=new Int32Array(r);for(var d=0;d=5&&a.getUint8(),e>=3&&(n[o]=a.getVarints()),o)switch(u){case 0:break;case 1:if(e<2){let t=a.getUint16();if(1===t)i[o]=a.getUint32();else if(t>0){let e=[];for(let r=0;r0){let e=[];for(let r=0;r3&&0!==o[3]&&(this.metadata=JSON.parse(l.getString(o.byteLength)).metadata,function(t,e){if(t.metadata){var r=t.metadata["world bounding box"],n=new s.S(r.minXYZ[0],r.minXYZ[1],r.minXYZ[2]),i=new s.S(r.maxXYZ[0],r.maxXYZ[1],r.maxXYZ[2]);t.bbox=new c.K(n,i),t.modelSpaceBBox=t.bbox.clone();var o=function(t,e){var r=t.metadata["custom values"];if(t.placementTransform=e.placementTransform,e.applyScaling){var n="m";t.metadata["distance unit"]&&(n=t.metadata["distance unit"].value),t.scalingUnit=n,"object"==typeof e.applyScaling?(e.applyScaling.from&&(n=e.applyScaling.from),e.applyScaling.to&&(t.scalingUnit=e.applyScaling.to)):t.scalingUnit=e.applyScaling;var i=m(n)/m(t.scalingUnit);if(1!=i){var s=new h.T(!0),o=new h.T(!0);o.elements[0]=i,o.elements[5]=i,o.elements[10]=i,e.placementTransform&&s.copy(e.placementTransform),e.applyPlacementInModelUnits?e.placementTransform=o.multiply(s):e.placementTransform=s.multiply(o),t.placementTransform=e.placementTransform,t.scalingFactor=i}}if(r&&r.refPointTransform){t.refPointTransform=new h.T(!0);var a=t.refPointTransform.elements,u=r.refPointTransform;a[0]=u[0],a[1]=u[1],a[2]=u[2],a[4]=u[3],a[5]=u[4],a[6]=u[5],a[8]=u[6],a[9]=u[7],a[10]=u[8],a[12]=u[9],a[13]=u[10],a[14]=u[11]}else{var c=t.metadata.georeference,l=c&&c.refPointLMV,f=0;if(r&&Object.prototype.hasOwnProperty.call(r,"angleToTrueNorth")&&(f=Math.PI/180*r.angleToTrueNorth),l||f){var d=new h.T(!0),p=d.elements;p[0]=p[5]=Math.cos(f),p[1]=-Math.sin(f),p[4]=Math.sin(f);var g=new h.T(!0);p=g.elements,l&&(p[12]=-l[0],p[13]=-l[1],p[14]=-l[2]),t.refPointTransform=d.multiply(g)}}if(e.applyRefPoint&&t.refPointTransform){var v=new h.T(!0);e.placementTransform&&v.copy(e.placementTransform),v.multiply(t.refPointTransform),t.placementTransform=e.placementTransform=v}else!e.applyRefPoint&&e.placementTransform&&(t.placementTransform=new h.T(!0).copy(e.placementTransform));return t.placementTransform&&function(t){for(var e=t.elements,r=0;r<4;r++)for(var n=0;n<4;n++)if(r===n){if(1!==e[4*r+n])return!1}else if(0!==e[4*r+n])return!1;return!0}(t.placementTransform)&&(t.placementTransform=null),t.placementTransform}(t,e);o&&!t.bbox.isEmpty()&&t.bbox.applyMatrix4(o),e.globalOffset?t.globalOffset=e.globalOffset:t.globalOffset=t.bbox.getCenter(new s.S),g(t,o),t.bbox.isEmpty()||(t.bbox.min.sub(t.globalOffset),t.bbox.max.sub(t.globalOffset)),Object.prototype.hasOwnProperty.call(t.metadata,"double sided geometry")&&t.metadata["double sided geometry"].value&&(t.doubleSided=!0)}}(this,t)),this.packFileTotalSize=0,this.primitiveCount=0;var f=r.typesets,d={};for(let t=0;te[o]&&(e[o]=n[a+o])}this.bbox={min:{x:e[0],y:e[1],z:e[2]},max:{x:e[3],y:e[4],z:e[5]}}}},C.prototype.postLoadOfObjectIds=function(t){let e=new Set(t.objectIds);if(e.size>0){let t=new Set,r=new Set;for(let n=0;nn[t]&&(n[t]=i[x+t])}return t.boxes=i,t.transforms=s,t.materials=o,t.packIds=a,t.entityIndexes=u,t.mesh2frag=p,t.visibilityFlags=c,t.fragId2dbId=h,t.polygonCounts=l,t.geomDataIndexes=f,t.topoIndexes=d,t.totalLength=r,n}(this.fragments,[...r]);this.bbox={min:{x:i[0],y:i[1],z:i[2]},max:{x:i[3],y:i[4],z:i[5]}}}},C.prototype.postLoadBubbleConsolidation=function(){const t=this.viewpointTreeRoot;if(t&&(t.name=t.name||"Saved Viewpoints"),null==t||!t.children)return;let e=0;function r(t){if(t.children){for(let e=0;e{"use strict";r.d(e,{vF:()=>f});var n=r(6247),i=r(577);class s{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=t}init(){}register(){}static get name(){return null}static get defaultOptions(){return{}}optIn(t){}optOut(t){}hasOptedOut(){}getDistinctId(){}track(t,e){}identify(t){}}const o=new class{constructor(){this.providerMap={},this.instances=[],this.superProps={},this.shouldTrack=!0,this.trackCache=[],this.oneTimers={}}registerProvider(t){if(!t)return void f.error("Undefined provider");if(!t.name)return void f.error("missing provider name");const e=t.name.toLowerCase();this.isProviderRegistered(e)?f.warn(`Provider with name ${t.name} already registered`):this.providerMap[e]=t;const r=this.createInstance(t.name,t.defaultOptions);this.instances.push(r),this.shouldTrack&&this.init(r),this.trackCache.length>0&&(this.trackCache.forEach((t=>{let{event:e,properties:r}=t;this.track(e,r)})),this.trackCache=[])}isProviderRegistered(t){var e;return("string"==typeof t?t:null===(e=t.name)||void 0===e?void 0:e.toLowerCase())in this.providerMap}init(t){t.initialized||(t.init(),t.register(this.superProps))}createInstance(t,e){const r=t&&t.toLowerCase();if(!(r in this.providerMap))return void f.error(`Unknown ${t}`);const n=this.providerMap[r],i=new n(e);if(!(i instanceof s))throw new Error("not an analytics provider");return n.instanceCount=n.instanceCount||0,i.name=`${r}-${n.instanceCount}`,n.instanceCount++,i}optIn(t){this.instances.forEach((t=>this.init(t))),this._callMethod("optIn",t),this.shouldTrack=!0}optOut(t){this._callMethod("optOut",t),this.shouldTrack=!1}hasOptedOut(){return this._callMethod("hasOptedOut")}getDistinctId(){return this._callMethod("getDistinctId")}track(t,e,r){if(this.shouldTrack){if(r){const r={event:t,properties:e};try{const t=JSON.stringify(r);if(this.oneTimers[t])return;this.oneTimers[t]=!0}catch(t){}}0===this.instances.length?this.trackCache.push({event:t,properties:e}):this._callMethod("track",t,e)}}identify(t){this._callMethod("identify",t)}_callMethod(){for(var t=arguments.length,e=new Array(t),r=0;r({name:t.name,value:t[n](...i)})))}},a=(0,n.mS)(),u=a;function c(){this.runtimeStats={},this.level=-1,this.setLevel(1),this._reportError=this._reportError.bind(this)}function h(t,e){let r;"string"==typeof e?r={message:e}:"object"==typeof e&&(r=e),o.track(t,r)}function l(){}c.prototype.initialize=function(t){if(t.eventCallback&&(this.callback=t.eventCallback),this.sessionId=t.sessionId,!this.sessionId){var e=Date.now()+"";this.sessionId=parseFloat((1e4*Math.random()|0)+""+e.substring(4))}"number"==typeof t.logLevel&&this.setLevel(t.logLevel),this.environmentInfo={touch:(0,n.CN)(),env:(0,i._$)(),referer:"undefined"!=typeof window?encodeURI(u.location.href):"",version:a.LMV_VIEWER_VERSION,build_type:a.LMV_BUILD_TYPE};var r={category:"viewer_start",touch:this.environmentInfo.touch,env:this.environmentInfo.env,referer:this.environmentInfo.referer,version:this.environmentInfo.version,build_type:this.environmentInfo.build_type};this.track(r);var s=this;this.interval=setInterval((function(){s.reportRuntimeStats()}),6e4)},c.prototype.shutdown=function(){clearInterval(this.interval),this.interval=void 0},c.prototype.track=function(t){this.updateRuntimeStats(t),!(0,i.aK)()&&this.sessionId&&(this.callback&&(t.timestamp=Date.now(),t.sessionId=this.sessionId,this.callback(t)),"error"===(null==t?void 0:t.category)&&h("viewer.error.tracked",t))},c.prototype.updateRuntimeStats=function(t){if(Object.prototype.hasOwnProperty.call(t,"aggregate"))switch(t.aggregate){case"count":this.runtimeStats[t.name]>0?this.runtimeStats[t.name]++:this.runtimeStats[t.name]=1,this.runtimeStats._nonempty=!0;break;case"last":this.runtimeStats[t.name]=t.value,this.runtimeStats._nonempty=!0;break;default:this.warn("unknown log aggregate type")}},c.prototype.reportRuntimeStats=function(){this.runtimeStats._nonempty&&(delete this.runtimeStats._nonempty,this.runtimeStats.category="misc_stats",this.track(this.runtimeStats),this.runtimeStats={})},c.prototype.setLevel=function(t){this.level!==t&&(this.level=t,this.debug=t>=5?console.log:l,this.log=t>=4?console.log:l,this.info=t>=3?console.info:l,this.warn=t>=2?console.warn:l,this.error=t>=1?this._reportError:l)},c.prototype._reportError=function(){console.error.apply(console,arguments);const t=Array.prototype.slice.call(arguments).join(" ");this.callback&&this.callback({category:"error",message:t}),h("viewer.error.logged",t)};let f=new c},5468:(t,e,r)=>{"use strict";function n(t,e){var r,n;this.bytes_per_node=e?32:36,t instanceof ArrayBuffer?(r=t.byteLength/this.bytes_per_node,n=t,this.nodeCount=r):(r=0|t,n=new ArrayBuffer(this.bytes_per_node*r),this.nodeCount=0),this.nodeCapacity=r,this.nodesRaw=n,this.is_lean_node=e,this.node_stride=this.bytes_per_node/4,this.node_stride_short=this.bytes_per_node/2,this.nodesF=new Float32Array(this.nodesRaw),this.nodesI=new Int32Array(this.nodesRaw),this.nodesS=new Uint16Array(this.nodesRaw)}r.d(e,{iD:()=>h}),n.prototype.setLeftChild=function(t,e){this.nodesI[t*this.node_stride+6]=e},n.prototype.getLeftChild=function(t){return this.nodesI[t*this.node_stride+6]},n.prototype.setPrimStart=function(t,e){this.is_lean_node?this.nodesI[t*this.node_stride+6]=e:this.nodesI[t*this.node_stride+8]=e},n.prototype.getPrimStart=function(t){return this.is_lean_node?this.nodesI[t*this.node_stride+6]:this.nodesI[t*this.node_stride+8]},n.prototype.setPrimCount=function(t,e){this.nodesS[t*this.node_stride_short+14]=e},n.prototype.getPrimCount=function(t){return this.nodesS[t*this.node_stride_short+14]},n.prototype.setFlags=function(t,e,r,n){this.nodesS[t*this.node_stride_short+15]=n<<3|r<<2|3&e},n.prototype.getFlags=function(t){return this.nodesS[t*this.node_stride_short+15]},n.prototype.setBox0=function(t,e){var r=t*this.node_stride,n=this.nodesF;n[r]=e[0],n[r+1]=e[1],n[r+2]=e[2],n[r+3]=e[3],n[r+4]=e[4],n[r+5]=e[5]},n.prototype.getBoxThree=function(t,e){var r=t*this.node_stride,n=this.nodesF;e.min.x=n[r],e.min.y=n[r+1],e.min.z=n[r+2],e.max.x=n[r+3],e.max.y=n[r+4],e.max.z=n[r+5]},n.prototype.getBoxArray=function(t,e,r){var n=t*this.node_stride,i=this.nodesF;e[0+(r=r||0)]=i[n],e[1+r]=i[n+1],e[2+r]=i[n+2],e[3+r]=i[n+3],e[4+r]=i[n+4],e[5+r]=i[n+5]},n.prototype.setBoxThree=function(t,e){var r=t*this.node_stride,n=this.nodesF;n[r]=e.min.x,n[r+1]=e.min.y,n[r+2]=e.min.z,n[r+3]=e.max.x,n[r+4]=e.max.y,n[r+5]=e.max.z},n.prototype.makeEmpty=function(t){var e=t*this.node_stride,r=this.nodesI;r[e+6]=-1,r[e+7]=0,this.is_lean_node||(r[e+8]=-1)},n.prototype.realloc=function(t){if(this.nodeCount+t>this.nodeCapacity){var e=0|3*this.nodeCapacity/2;ee[r]&&(t[0]=e[r]),t[3]e[r+1]&&(t[1]=e[r+1]),t[4]e[r+2]&&(t[2]=e[r+2]),t[5]e[r]&&(t[0]=e[r]),t[1]>e[r+1]&&(t[1]=e[r+1]),t[2]>e[r+2]&&(t[2]=e[r+2]),t[3]e[0]&&(t[0]=e[0]),t[1]>e[1]&&(t[1]=e[1]),t[2]>e[2]&&(t[2]=e[2]),t[3]y[0]&&(S=1),y[2]>y[S]&&(S=2),_.setBox0(u,d);var P=0,k=0,C=f-l+1;let T=!1;if(o.finfo.hasPolygonCounts&&o.frags_per_inner_node){let t=new Set;var M=C<=o.frags_per_inner_node?f:l+o.frags_per_inner_node-1;const e=o.prim_sizes[o.primitives[l]];let r,n=l;for(;n<=M;n++){const i=o.primitives[n];if(T=(P+=o.finfo.getPolygonCount(i))>O,r=e/o.prim_sizes[i],T||=e>s&&r>o.max_size_ratio,o.per_tile_consolidation&&(t.add(o.finfo.getDrawCallId(i)),T||=t.size>=o.max_drawcalls_per_node),k++,T){++n;break}}if(o.per_tile_consolidation&&t.size>=o.max_drawcalls_per_node){const i=n;let a=[],u=[],c=!1;for(;n<=M;n++){const i=o.primitives[n],h=o.finfo.getPolygonCount(i);if(t.has(o.finfo.getDrawCallId(i))){if(c||=P+h>O,r=e/o.prim_sizes[i],c||=e>s&&r>o.max_size_ratio,c)break;a.push(i),k++,P+=h}else u.push(i)}if(a.length>0){n=i;for(let t=0;t15||y[S]e.frags_per_inner_node&&(d=e.frags_per_inner_node),d>h&&(d=h),r.setPrimStart(i,s),r.setPrimCount(i,d),s+=d,a(u);for(var p=s;p<=o;p++)t(u,f,3*l[p]);n(c,0,u,0);var m=0;return c[1]>c[0]&&(m=1),c[2]>c[m]&&(m=2),m}(o,_,u,l,f,b,y,k),l+=_.getPrimCount(u));var E=new h;if(function(n,s,o,a,u,h,l){if(h[a]o-s+1&&(y=o-s+1),f=0;f=u&&(b=u-1),g[v]=b,p[b].num_prims++,e(p[b].box_bbox,l,y*f),t(p[b].box_centroid,c,3*y)}}(n,s,o,a,u,h,y),i(m[0].BL,p[0].box_bbox),i(m[0].CL,p[0].box_centroid),m[0].AL=c(m[0].BL),m[0].NL=p[0].num_prims,f=1;f=1;f--){d=p[f],r(g,d.box_bbox),r(v,d.box_centroid);var A=(x=c(g))*(w+=d.num_prims)+m[f-1].AL*m[f-1].NL;A<=I&&(I=A,_=f,i(l.vb_right,g),i(l.cb_right,v),i(l.vb_left,m[f-1].BL),i(l.cb_left,m[f-1].CL),l.num_left=m[f-1].NL)}l.best_split=_,l.best_cost=I}}(o,l,f,S,b,y,E),E.num_bins<0)_.setPrimCount(u,_.getPrimCount(u)+f-l+1);else{!function(t,e,r,n,i,s,o){var a,u,c=t.primitives,h=t.sort_prims,l=0,f=0|e,d=0|o.best_split;for(a=e;a<=r;a++){var p=0|c[a];h[a]=r.first_transparent?(t(c,p,3*x),e(u,m,g*x)):(t(o,p,3*x),e(i,m,g*x))}n(y,0,r.boxv_o,0);var w=Math.max(y[0],y[1],y[2]);r.scene_epsilon=s*w},box_area:function(t,e){return u(t[e+3]-t[e],t[e+4]-t[e+1],t[e+5]-t[e+2])},sqr_diag_len:function(t,e){var r=t[e+3]-t[e],n=t[e+4]-t[e+1],i=t[e+5]-t[e+2];return r*r+n*n+i*i},box_area_three:function(t){return u(t.max.x-t.min.x,t.max.y-t.min.y,t.max.z-t.min.z)}}}();function a(t,e){this.boxes=t.boxes,this.polygonCounts=t.polygonCounts,this.hasPolygonCounts=!!this.polygonCounts,this.geomIds=t.geomids,this.flags=t.flags,this.materials=t.materials,this.materialDefs=e,this.count=t.length,this.boxStride=6,this.wantSort=t.wantSort??!0}a.prototype.getCount=function(){return this.count},a.prototype.isTransparent=function(t){return this.flags?!!(this.flags[t]&u.IS_TRANSPARENT):!(!this.materialDefs||!this.materialDefs[this.materials[t]])&&this.materialDefs[this.materials[t]].transparent},a.prototype.getPolygonCount=function(t){return this.polygonCounts[t]},a.prototype.getGeometryId=function(t){return this.geomIds[t]},a.prototype.getCanBeConsolidated=function(t){return!!this.flags[t]&u.IS_CONSOLIDATED},a.prototype.getDrawCallId=function(t){return`${this.materials[t]}${this.getCanBeConsolidated(t)?"":"_"+this.getGeometryId(t)}`},a.prototype.supportsPerTileConsolidation=function(){return!!this.materials&&!!this.flags&&!!this.geomIds};const u=Object.freeze({IS_CONSOLIDATED:1,IS_TRANSPARENT:2}),c=Object.freeze({BOX_AREA:"box_area",DIAMETER:"sqr_diag_len"});function h(t,e,r){this.finfo=r||new a(t,e),this.prim_count=this.finfo.getCount(),this.frags_per_leaf_node=-1,this.frags_per_inner_node=-1,this.nodes=null,this.work_buf=new ArrayBuffer(4*this.prim_count),this.sort_prims=new Int32Array(this.work_buf),this.primitives=new Int32Array(this.prim_count),this.centroids=new Float32Array(i*this.prim_count),this.boxv_o=new Float32Array(6),this.boxc_o=new Float32Array(6),this.boxv_t=new Float32Array(6),this.boxc_t=new Float32Array(6),this.recursion_stack=[]}h.prototype.sortPrimitives=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.BOX_AREA;var r=new Float32Array(this.max_size_ratio===1/0?this.work_buf:this.prim_count),n=this.primitives,i=0,s=t;const a=o[e];var u,h;for(u=0,h=this.prim_count;u=0?n[d++]=n[u]:f[p++]=n[u];n.set(f,this.prim_count-i)}this.prim_sizes=r,this.first_transparent=this.prim_count-i},h.prototype.build=function(t){var e=t&&!!t.useSlimNodes,r=this;function i(e,n){Object.prototype.hasOwnProperty.call(t,e)?r[e]=t[e]:r[e]=n}if(i("max_size_ratio",1/0),i("per_tile_consolidation",!1),t.sortFuncType===c.DIAMETER&&(this.max_size_ratio*=this.max_size_ratio),e)i("frags_per_leaf_node",1),i("frags_per_inner_node",0),i("frags_per_leaf_node_transparent",1),i("frags_per_inner_node_transparent",0),i("max_polys_per_node",1/0);else{var s=t.isWeakDevice?.5:1;i("frags_per_leaf_node",0|256*s),i("frags_per_inner_node",0|this.frags_per_leaf_node),i("frags_per_leaf_node_transparent",this.frags_per_leaf_node),i("frags_per_inner_node_transparent",0),i("max_polys_per_node",0|2e4*s),i("max_drawcalls_per_node",1/0),i("want_sort",this.finfo.wantSort)}if(this.per_tile_consolidation=this.per_tile_consolidation&&this.finfo.supportsPerTileConsolidation()&&this.want_sort,this.nodes&&this.nodes.is_lean_node==e)this.nodes.nodeCount=0;else{for(var a=this.prim_count/this.frags_per_leaf_node,u=1;u{"use strict";r.d(e,{K:()=>i});var n=r(6118);let i=function(t,e){this.min=void 0!==t?t:new n.S(1/0,1/0,1/0),this.max=void 0!==e?e:new n.S(-1/0,-1/0,-1/0)};var s,o,a;i.prototype={constructor:i,set:function(t,e){return this.min.copy(t),this.max.copy(e),this},setFromPoints:function(t){this.makeEmpty();for(var e=0,r=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)},containsBox:function(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z},getParameter:function(t,e){return(e||new n.S).set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)},intersectsBox:function(t){return this.isIntersectionBox(t)},clampPoint:function(t,e){return(e||new n.S).copy(t).clamp(this.min,this.max)},distanceToPoint:function(){var t=new n.S;return function(e){return t.copy(e).clamp(this.min,this.max).sub(e).length()}}(),intersect:function(t){return this.min.max(t.min),this.max.min(t.max),this},union:function(t){return this.min.min(t.min),this.max.max(t.max),this},applyMatrix4:(s=new n.S,o=new n.S,function(t){for(var e=t.elements,r=0;r<3;r++){let t=e[12+r],u=t;for(var n=0;n<3;n++){var i=e[r+4*n]*this.min.getComponent(n),a=e[r+4*n]*this.max.getComponent(n);t+=Math.min(i,a),u+=Math.max(i,a)}s.setComponent(r,t),o.setComponent(r,u)}return this.min.copy(s),this.max.copy(o),this}),translate:function(t){return this.min.add(t),this.max.add(t),this},equals:function(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}},7365:(t,e,r)=>{"use strict";r.d(e,{T:()=>i});var n=r(6118);let i=function(t){this.elements=t?new Float64Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]):new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),this.isDoublePrecision=!!t};var s,o,a,u,c;i.prototype={constructor:i,set:function(t,e,r,n,i,s,o,a,u,c,h,l,f,d,p,m){var g=this.elements;return g[0]=t,g[4]=e,g[8]=r,g[12]=n,g[1]=i,g[5]=s,g[9]=o,g[13]=a,g[2]=u,g[6]=c,g[10]=h,g[14]=l,g[3]=f,g[7]=d,g[11]=p,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(t){return this.elements.set(t.elements),this},makeRotationFromQuaternion:function(t){var e=this.elements,r=t.x,n=t.y,i=t.z,s=t.w,o=r+r,a=n+n,u=i+i,c=r*o,h=r*a,l=r*u,f=n*a,d=n*u,p=i*u,m=s*o,g=s*a,v=s*u;return e[0]=1-(f+p),e[4]=h-v,e[8]=l+g,e[1]=h+v,e[5]=1-(c+p),e[9]=d-m,e[2]=l-g,e[6]=d+m,e[10]=1-(c+f),e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},multiply:function(t){return this.multiplyMatrices(this,t)},multiplyMatrices:function(t,e){var r=t.elements,n=e.elements,i=this.elements,s=r[0],o=r[4],a=r[8],u=r[12],c=r[1],h=r[5],l=r[9],f=r[13],d=r[2],p=r[6],m=r[10],g=r[14],v=r[3],y=r[7],b=r[11],x=r[15],w=n[0],_=n[4],I=n[8],A=n[12],O=n[1],S=n[5],P=n[9],k=n[13],C=n[2],T=n[6],M=n[10],E=n[14],F=n[3],R=n[7],z=n[11],V=n[15];return i[0]=s*w+o*O+a*C+u*F,i[4]=s*_+o*S+a*T+u*R,i[8]=s*I+o*P+a*M+u*z,i[12]=s*A+o*k+a*E+u*V,i[1]=c*w+h*O+l*C+f*F,i[5]=c*_+h*S+l*T+f*R,i[9]=c*I+h*P+l*M+f*z,i[13]=c*A+h*k+l*E+f*V,i[2]=d*w+p*O+m*C+g*F,i[6]=d*_+p*S+m*T+g*R,i[10]=d*I+p*P+m*M+g*z,i[14]=d*A+p*k+m*E+g*V,i[3]=v*w+y*O+b*C+x*F,i[7]=v*_+y*S+b*T+x*R,i[11]=v*I+y*P+b*M+x*z,i[15]=v*A+y*k+b*E+x*V,this},multiplyToArray:function(t,e,r){var n=this.elements;return this.multiplyMatrices(t,e),r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r[4]=n[4],r[5]=n[5],r[6]=n[6],r[7]=n[7],r[8]=n[8],r[9]=n[9],r[10]=n[10],r[11]=n[11],r[12]=n[12],r[13]=n[13],r[14]=n[14],r[15]=n[15],this},multiplyScalar:function(t){var e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this},determinant:function(){var t=this.elements,e=t[0],r=t[4],n=t[8],i=t[12],s=t[1],o=t[5],a=t[9],u=t[13],c=t[2],h=t[6],l=t[10],f=t[14];return t[3]*(+i*a*h-n*u*h-i*o*l+r*u*l+n*o*f-r*a*f)+t[7]*(+e*a*f-e*u*l+i*s*l-n*s*f+n*u*c-i*a*c)+t[11]*(+e*u*h-e*o*f-i*s*h+r*s*f+i*o*c-r*u*c)+t[15]*(-n*o*c-e*a*h+e*o*l+n*s*h-r*s*l+r*a*c)},transpose:function(){var t,e=this.elements;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this},flattenToArrayOffset:function(t,e){var r=this.elements;return t[e]=r[0],t[e+1]=r[1],t[e+2]=r[2],t[e+3]=r[3],t[e+4]=r[4],t[e+5]=r[5],t[e+6]=r[6],t[e+7]=r[7],t[e+8]=r[8],t[e+9]=r[9],t[e+10]=r[10],t[e+11]=r[11],t[e+12]=r[12],t[e+13]=r[13],t[e+14]=r[14],t[e+15]=r[15],t},setPosition:function(t){var e=this.elements;return e[12]=t.x,e[13]=t.y,e[14]=t.z,this},invert:function(t){const e=this.elements,r=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],u=e[6],c=e[7],h=e[8],l=e[9],f=e[10],d=e[11],p=e[12],m=e[13],g=e[14],v=e[15],y=l*g*c-m*f*c+m*u*d-a*g*d-l*u*v+a*f*v,b=p*f*c-h*g*c-p*u*d+o*g*d+h*u*v-o*f*v,x=h*m*c-p*l*c+p*a*d-o*m*d-h*a*v+o*l*v,w=p*l*u-h*m*u-p*a*f+o*m*f+h*a*g-o*l*g,_=r*y+n*b+i*x+s*w;if(0===_)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const I=1/_;return e[0]=y*I,e[1]=(m*f*s-l*g*s-m*i*d+n*g*d+l*i*v-n*f*v)*I,e[2]=(a*g*s-m*u*s+m*i*c-n*g*c-a*i*v+n*u*v)*I,e[3]=(l*u*s-a*f*s-l*i*c+n*f*c+a*i*d-n*u*d)*I,e[4]=b*I,e[5]=(h*g*s-p*f*s+p*i*d-r*g*d-h*i*v+r*f*v)*I,e[6]=(p*u*s-o*g*s-p*i*c+r*g*c+o*i*v-r*u*v)*I,e[7]=(o*f*s-h*u*s+h*i*c-r*f*c-o*i*d+r*u*d)*I,e[8]=x*I,e[9]=(p*l*s-h*m*s-p*n*d+r*m*d+h*n*v-r*l*v)*I,e[10]=(o*m*s-p*a*s+p*n*c-r*m*c-o*n*v+r*a*v)*I,e[11]=(h*a*s-o*l*s-h*n*c+r*l*c+o*n*d-r*a*d)*I,e[12]=w*I,e[13]=(h*m*i-p*l*i+p*n*f-r*m*f-h*n*g+r*l*g)*I,e[14]=(p*a*i-o*m*i-p*n*u+r*m*u+o*n*g-r*a*g)*I,e[15]=(o*l*i-h*a*i+h*n*u-r*l*u-o*n*f+r*a*f)*I,this},getInverse:function(t,e){if(console.warn("LmvMatrix4.getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(t).invert(),0===this.determinant()){const t="Matrix4.getInverse(): can't invert matrix, determinant is 0";if(e)throw new Error(t);console.warn(t),this.identity()}return this},scale:function(t){var e=this.elements,r=t.x,n=t.y,i=t.z;return e[0]*=r,e[4]*=n,e[8]*=i,e[1]*=r,e[5]*=n,e[9]*=i,e[2]*=r,e[6]*=n,e[10]*=i,e[3]*=r,e[7]*=n,e[11]*=i,this},getMaxScaleOnAxis:function(){var t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],r=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,Math.max(r,n)))},makeTranslation:function(t,e,r){return this.set(1,0,0,t,0,1,0,e,0,0,1,r,0,0,0,1),this},makeRotationX:function(t){var e=Math.cos(t),r=Math.sin(t);return this.set(1,0,0,0,0,e,-r,0,0,r,e,0,0,0,0,1),this},makeRotationY:function(t){var e=Math.cos(t),r=Math.sin(t);return this.set(e,0,r,0,0,1,0,0,-r,0,e,0,0,0,0,1),this},makeRotationZ:function(t){var e=Math.cos(t),r=Math.sin(t);return this.set(e,-r,0,0,r,e,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(t,e){var r=Math.cos(e),n=Math.sin(e),i=1-r,s=t.x,o=t.y,a=t.z,u=i*s,c=i*o;return this.set(u*s+r,u*o-n*a,u*a+n*o,0,u*o+n*a,c*o+r,c*a-n*s,0,u*a-n*o,c*a+n*s,i*a*a+r,0,0,0,0,1),this},makeScale:function(t,e,r){return this.set(t,0,0,0,0,e,0,0,0,0,r,0,0,0,0,1),this},lookAt:(a=new n.S,u=new n.S,c=new n.S,function(t,e,r){var n=this.elements;return c.subVectors(t,e).normalize(),0===c.length()&&(c.z=1),a.crossVectors(r,c).normalize(),0===a.length()&&(c.x+=1e-4,a.crossVectors(r,c).normalize()),u.crossVectors(c,a),n[0]=a.x,n[4]=u.x,n[8]=c.x,n[1]=a.y,n[5]=u.y,n[9]=c.y,n[2]=a.z,n[6]=u.z,n[10]=c.z,this}),compose:function(t,e,r){return this.makeRotationFromQuaternion(e),this.scale(r),this.setPosition(t),this},decompose:(s=new n.S,o=new i(!0),function(t,e,r){var n=this.elements,i=s.set(n[0],n[1],n[2]).length(),a=s.set(n[4],n[5],n[6]).length(),u=s.set(n[8],n[9],n[10]).length();this.determinant()<0&&(i=-i),t.x=n[12],t.y=n[13],t.z=n[14],o.elements.set(this.elements);var c=1/i,h=1/a,l=1/u;return o.elements[0]*=c,o.elements[1]*=c,o.elements[2]*=c,o.elements[4]*=h,o.elements[5]*=h,o.elements[6]*=h,o.elements[8]*=l,o.elements[9]*=l,o.elements[10]*=l,e.setFromRotationMatrix(o),r.x=i,r.y=a,r.z=u,this}),transformPoint:function(t){var e=t.x,r=t.y,n=t.z,i=this.elements;return t.x=i[0]*e+i[4]*r+i[8]*n+i[12],t.y=i[1]*e+i[5]*r+i[9]*n+i[13],t.z=i[2]*e+i[6]*r+i[10]*n+i[14],t},transformDirection:function(t){var e=t.x,r=t.y,n=t.z,i=this.elements;t.x=i[0]*e+i[4]*r+i[8]*n,t.y=i[1]*e+i[5]*r+i[9]*n,t.z=i[2]*e+i[6]*r+i[10]*n;var s=Math.sqrt(t.x*t.x+t.y*t.y+t.z*t.z);if(s>0){var o=1/s;t.x*=o,t.y*=o,t.z*=o}return t},equals(t){const e=this.elements,r=t.elements;for(var n=0;n<16;n++)if(e[n]!==r[n])return!1;return!0},fromArray:function(t){return this.elements.set(t),this},toArray:function(){var t=this.elements;return[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},clone:function(){return new i(this.isDoublePrecision).fromArray(this.elements)}}},6118:(t,e,r)=>{"use strict";r.d(e,{S:()=>n});let n=function(t,e,r){this.x=t||0,this.y=e||0,this.z=r||0};var i,s,o,a;n.prototype={constructor:n,set:function(t,e,r){return this.x=t,this.y=e,this.z=r,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this},sub:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyMatrix3:function(t){var e=this.x,r=this.y,n=this.z,i=t.elements;return this.x=i[0]*e+i[3]*r+i[6]*n,this.y=i[1]*e+i[4]*r+i[7]*n,this.z=i[2]*e+i[5]*r+i[8]*n,this},applyMatrix4:function(t){var e=this.x,r=this.y,n=this.z,i=t.elements;return this.x=i[0]*e+i[4]*r+i[8]*n+i[12],this.y=i[1]*e+i[5]*r+i[9]*n+i[13],this.z=i[2]*e+i[6]*r+i[10]*n+i[14],this},applyProjection:function(t){var e=this.x,r=this.y,n=this.z,i=t.elements,s=1/(i[3]*e+i[7]*r+i[11]*n+i[15]);return this.x=(i[0]*e+i[4]*r+i[8]*n+i[12])*s,this.y=(i[1]*e+i[5]*r+i[9]*n+i[13])*s,this.z=(i[2]*e+i[6]*r+i[10]*n+i[14])*s,this},applyQuaternion:function(t){var e=this.x,r=this.y,n=this.z,i=t.x,s=t.y,o=t.z,a=t.w,u=a*e+s*n-o*r,c=a*r+o*e-i*n,h=a*n+i*r-s*e,l=-i*e-s*r-o*n;return this.x=u*a+l*-i+c*-o-h*-s,this.y=c*a+l*-s+h*-i-u*-o,this.z=h*a+l*-o+u*-s-c*-i,this},transformDirection:function(t){var e=this.x,r=this.y,n=this.z,i=t.elements;return this.x=i[0]*e+i[4]*r+i[8]*n,this.y=i[1]*e+i[5]*r+i[9]*n,this.z=i[2]*e+i[6]*r+i[10]*n,this.normalize(),this},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){if(0!==t){var e=1/t;this.x*=e,this.y*=e,this.z*=e}else this.x=0,this.y=0,this.z=0;return this},min:function(t){return this.x>t.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this},max:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this},clampScalar:function(t,e){return void 0===o&&(o=new n,a=new n),o.set(t,t,t),a.set(e,e,e),this.clamp(o,a)},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},lerpVectors:function(t,e,r){return this.subVectors(e,t).multiplyScalar(r).add(t),this},cross:function(t,e){if(void 0!==e)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e);var r=this.x,n=this.y,i=this.z;return this.x=n*t.z-i*t.y,this.y=i*t.x-r*t.z,this.z=r*t.y-n*t.x,this},crossVectors:function(t,e){var r=t.x,n=t.y,i=t.z,s=e.x,o=e.y,a=e.z;return this.x=n*a-i*o,this.y=i*s-r*a,this.z=r*o-n*s,this},projectOnVector:function(t){return void 0===i&&(i=new n),i.copy(t).normalize(),s=this.dot(i),this.copy(i).multiplyScalar(s)},projectOnPlane:function(){var t;return function(e){return void 0===t&&(t=new n),t.copy(this).projectOnVector(e),this.sub(t)}}(),reflect:function(){var t;return function(e){return void 0===t&&(t=new n),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,r=this.y-t.y,n=this.z-t.z;return e*e+r*r+n*n},setEulerFromRotationMatrix:function(t,e){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(t,e){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(t){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(t)},getScaleFromMatrix:function(t){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(t)},getColumnFromMatrix:function(t,e){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(t,e)},setFromMatrixPosition:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this},setFromMatrixScale:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),r=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),n=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=r,this.z=n,this},setFromMatrixColumn:function(t,e){var r=4*t,n=e.elements;return this.x=n[r],this.y=n[r+1],this.z=n[r+2],this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t,e){return void 0===e&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this},toArray:function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t},fromAttribute:function(t,e,r){return void 0===r&&(r=0),e=e*t.itemSize+r,this.x=t.array[e],this.y=t.array[e+1],this.z=t.array[e+2],this}}},4406:function(t,e,r){"use strict";var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,s){function o(t){try{u(n.next(t))}catch(t){s(t)}}function a(t){try{u(n.throw(t))}catch(t){s(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,a)}u((n=n.apply(t,e||[])).next())}))},i=this&&this.__generator||function(t,e){var r,n,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,n=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]=this.options.numOfAttempts},enumerable:!0,configurable:!0}),t.prototype.applyDelay=function(){return n(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,o.DelayFactory(this.options,this.attemptNumber).apply()];case 1:return t.sent(),[2]}}))}))},t}()},8348:function(t,e,r){"use strict";var n,i=this&&this.__extends||(n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},n(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,"__esModule",{value:!0});var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(r(6698).Delay);e.AlwaysDelay=s},6698:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(6071),i=function(){function t(t){this.options=t,this.attempt=0}return t.prototype.apply=function(){var t=this;return new Promise((function(e){return setTimeout(e,t.jitteredDelay)}))},t.prototype.setAttemptNumber=function(t){this.attempt=t},Object.defineProperty(t.prototype,"jitteredDelay",{get:function(){return n.JitterFactory(this.options)(this.delay)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"delay",{get:function(){var t=this.options.startingDelay,e=this.options.timeMultiple,r=this.numOfDelayedAttempts,n=t*Math.pow(e,r);return Math.min(n,this.options.maxDelay)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"numOfDelayedAttempts",{get:function(){return this.attempt},enumerable:!0,configurable:!0}),t}();e.Delay=i},5757:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(7510),i=r(8348);e.DelayFactory=function(t,e){var r=function(t){return t.delayFirstAttempt?new i.AlwaysDelay(t):new n.SkipFirstDelay(t)}(t);return r.setAttemptNumber(e),r}},7510:function(t,e,r){"use strict";var n,i=this&&this.__extends||(n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},n(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),s=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,s){function o(t){try{u(n.next(t))}catch(t){s(t)}}function a(t){try{u(n.throw(t))}catch(t){s(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,a)}u((n=n.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var r,n,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,n=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fullJitter=function(t){var e=Math.random()*t;return Math.round(e)}},6071:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(8500),i=r(4764);e.JitterFactory=function(t){return"full"===t.jitter?n.fullJitter:i.noJitter}},4764:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.noJitter=function(t){return t}},784:function(t,e){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(t){for(var e,r=1,n=arguments.length;r{"use strict";r.d(e,{AO:()=>ct,Wt:()=>nt,u3:()=>rt});var n=Uint8Array,i=Uint16Array,s=Int32Array,o=new n([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),a=new n([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),u=new n([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),c=function(t,e){for(var r=new i(31),n=0;n<31;++n)r[n]=e+=1<>1|(21845&v)<<1;y=(61680&(y=(52428&y)>>2|(13107&y)<<2))>>4|(3855&y)<<4,g[v]=((65280&y)>>8|(255&y)<<8)>>1}var b=function(t,e,r){for(var n=t.length,s=0,o=new i(e);s>c]=h}else for(a=new i(n),s=0;s>15-t[s]);return a},x=new n(288);for(v=0;v<144;++v)x[v]=8;for(v=144;v<256;++v)x[v]=9;for(v=256;v<280;++v)x[v]=7;for(v=280;v<288;++v)x[v]=8;var w=new n(32);for(v=0;v<32;++v)w[v]=5;var _=b(x,9,0),I=b(x,9,1),A=b(w,5,0),O=b(w,5,1),S=function(t){for(var e=t[0],r=1;re&&(e=t[r]);return e},P=function(t,e,r){var n=e/8|0;return(t[n]|t[n+1]<<8)>>(7&e)&r},k=function(t,e){var r=e/8|0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>(7&e)},C=function(t){return(t+7)/8|0},T=function(t,e,r){return(null==e||e<0)&&(e=0),(null==r||r>t.length)&&(r=t.length),new n(t.subarray(e,r))},M=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],E=function(t,e,r){var n=new Error(e||M[t]);if(n.code=t,Error.captureStackTrace&&Error.captureStackTrace(n,E),!r)throw n;return n},F=function(t,e,r,i){var s=t.length,c=i?i.length:0;if(!s||e.f&&!e.l)return r||new n(0);var h=!r,f=h||2!=e.i,d=e.i;h&&(r=new n(3*s));var m=function(t){var e=r.length;if(t>e){var i=new n(Math.max(2*e,t));i.set(r),r=i}},g=e.f||0,v=e.p||0,y=e.b||0,x=e.l,w=e.d,_=e.m,A=e.n,M=8*s;do{if(!x){g=P(t,v,1);var F=P(t,v+1,3);if(v+=3,!F){var R=t[(q=C(v)+4)-4]|t[q-3]<<8,z=q+R;if(z>s){d&&E(0);break}f&&m(y+R),r.set(t.subarray(q,z),y),e.b=y+=R,e.p=v=8*z,e.f=g;continue}if(1==F)x=I,w=O,_=9,A=5;else if(2==F){var V=P(t,v,31)+257,U=P(t,v+10,15)+4,D=V+P(t,v+5,31)+1;v+=14;for(var L=new n(D),j=new n(19),N=0;N>4)<16)L[N++]=q;else{var $=0,Q=0;for(16==q?(Q=3+P(t,v,3),v+=2,$=L[N-1]):17==q?(Q=3+P(t,v,7),v+=3):18==q&&(Q=11+P(t,v,127),v+=7);Q--;)L[N++]=$}}var K=L.subarray(0,V),X=L.subarray(V);_=S(K),A=S(X),x=b(K,_,1),w=b(X,A,1)}else E(1);if(v>M){d&&E(0);break}}f&&m(y+131072);for(var Y=(1<<_)-1,J=(1<>4;if((v+=15&$)>M){d&&E(0);break}if($||E(2),tt<256)r[y++]=tt;else{if(256==tt){Z=v,x=null;break}var et=tt-254;if(tt>264){var rt=o[N=tt-257];et=P(t,v,(1<>4;if(nt||E(3),v+=15&nt,X=p[it],it>3&&(rt=a[it],X+=k(t,v)&(1<M){d&&E(0);break}f&&m(y+131072);var st=y+et;if(y>8},z=function(t,e,r){r<<=7&e;var n=e/8|0;t[n]|=r,t[n+1]|=r>>8,t[n+2]|=r>>16},V=function(t,e){for(var r=[],s=0;sp&&(p=a[s].s);var m=new i(p+1),g=U(r[f-1],m,0);if(g>e){s=0;var v=0,y=g-e,b=1<e))break;v+=b-(1<>=y;v>0;){var w=a[s].s;m[w]=0&&v;--s){var _=a[s].s;m[_]==e&&(--m[_],++v)}g=e}return{t:new n(m),l:g}},U=function(t,e,r){return-1==t.s?Math.max(U(t.l,e,r+1),U(t.r,e,r+1)):e[t.s]=r},D=function(t){for(var e=t.length;e&&!t[--e];);for(var r=new i(++e),n=0,s=t[0],o=1,a=function(t){r[n++]=t},u=1;u<=e;++u)if(t[u]==s&&u!=e)++o;else{if(!s&&o>2){for(;o>138;o-=138)a(32754);o>2&&(a(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(a(s),--o;o>6;o-=6)a(8304);o>2&&(a(o-3<<5|8208),o=0)}for(;o--;)a(s);o=1,s=t[u]}return{c:r.subarray(0,n),n:e}},L=function(t,e){for(var r=0,n=0;n>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var s=0;s4&&!N[u[W-1]];--W);var G,q,H,$,Q=d+5<<3,K=L(s,x)+L(c,w)+h,X=L(s,g)+L(c,I)+h+14+3*W+L(E,N)+2*E[16]+3*E[17]+7*E[18];if(f>=0&&Q<=K&&Q<=X)return j(e,p,t.subarray(f,f+d));if(R(e,p,1+(X15&&(R(e,p,tt[F]>>5&127),p+=tt[F]>>12)}}}else G=_,q=x,H=A,$=w;for(F=0;F255){z(e,p,G[257+(et=rt>>18&31)]),p+=q[et+257],et>7&&(R(e,p,rt>>23&31),p+=o[et]);var nt=31&rt;z(e,p,H[nt]),p+=$[nt],nt>3&&(z(e,p,rt>>5&8191),p+=a[nt])}else z(e,p,G[rt]),p+=q[rt]}return z(e,p,G[256]),p+q[256]},B=new s([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),W=new n(0),G=function(){for(var t=new Int32Array(256),e=0;e<256;++e){for(var r=e,n=9;--n;)r=(1&r&&-306674912)^r>>>1;t[e]=r}return t}(),q=function(){var t=-1;return{p:function(e){for(var r=t,n=0;n>>8;t=r},d:function(){return~t}}},H=function(t,e,r,u,c){if(!c&&(c={l:1},e.dictionary)){var h=e.dictionary.subarray(-32768),l=new n(h.length+t.length);l.set(h),l.set(t,h.length),t=l,c.w=h.length}return function(t,e,r,u,c,h){var l=h.z||t.length,d=new n(u+l+5*(1+Math.ceil(l/7e3))+c),p=d.subarray(u,d.length-c),g=h.l,v=7&(h.r||0);if(e){v&&(p[0]=h.r>>3);for(var y=B[e-1],b=y>>13,x=8191&y,w=(1<7e3||z>24576)&&(G>423||!g)){v=N(t,p,0,P,k,M,F,z,U,R-U,v),z=E=F=0,U=R;for(var q=0;q<286;++q)k[q]=0;for(q=0;q<30;++q)M[q]=0}var H=2,$=0,Q=x,K=L-W&32767;if(G>2&&D==S(R-K))for(var X=Math.min(b,G)-1,Y=Math.min(32767,R),J=Math.min(258,G);K<=Y&&--Q&&L!=W;){if(t[R+H]==t[R+H-K]){for(var Z=0;ZH){if(H=Z,$=K,Z>X)break;var tt=Math.min(K,Z-2),et=0;for(q=0;qet&&(et=nt,W=rt)}}}K+=(L=W)-(W=_[L])&32767}if($){P[z++]=268435456|f[H]<<18|m[$];var it=31&f[H],st=31&m[$];F+=o[it]+a[st],++k[257+it],++M[st],V=R+H,++E}else P[z++]=t[R],++k[t[R]]}}for(R=Math.max(R,V);R=l&&(p[v/8|0]=g,ot=l),v=j(p,v+1,t.subarray(R,ot))}h.i=l}return T(d,0,u+C(v)+c)}(t,null==e.level?6:e.level,null==e.mem?c.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):20:12+e.mem,r,u,c)},$=function(t,e){return t[e]|t[e+1]<<8},Q=function(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0},K=function(t,e){return Q(t,e)+4294967296*Q(t,e+4)},X=function(t,e,r){for(;r;++e)t[e]=r,r>>>=8},Y=function(t,e){var r=e.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=e.level<2?4:9==e.level?2:0,t[9]=3,0!=e.mtime&&X(t,4,Math.floor(new Date(e.mtime||Date.now())/1e3)),r){t[3]=8;for(var n=0;n<=r.length;++n)t[n+10]=r.charCodeAt(n)}},J=function(t){31==t[0]&&139==t[1]&&8==t[2]||E(6,"invalid gzip data");var e=t[3],r=10;4&e&&(r+=2+(t[10]|t[11]<<8));for(var n=(e>>3&1)+(e>>4&1);n>0;n-=!t[r++]);return r+(2&e)},Z=function(t){var e=t.length;return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0},tt=function(t){return 10+(t.filename?t.filename.length+1:0)};function et(t,e){return F(t,{i:2},e&&e.out,e&&e.dictionary)}function rt(t,e){e||(e={});var r=q(),n=t.length;r.p(t);var i=H(t,e,tt(e),8),s=i.length;return Y(i,e),X(i,s-8,r.d()),X(i,s-4,n),i}function nt(t,e){var r=J(t);return r+8>t.length&&E(6,"invalid gzip data"),F(t.subarray(r,-8),{i:2},e&&e.out||new n(Z(t)),e&&e.dictionary)}var it="undefined"!=typeof TextDecoder&&new TextDecoder;try{it.decode(W,{stream:!0})}catch(t){}function st(t,e){if(e){for(var r="",n=0;n127)+(n>223)+(n>239);if(r+i>t.length)return{s:e,r:T(t,r-1)};i?3==i?(n=((15&n)<<18|(63&t[r++])<<12|(63&t[r++])<<6|63&t[r++])-65536,e+=String.fromCharCode(55296|n>>10,56320|1023&n)):e+=1&i?String.fromCharCode((31&n)<<6|63&t[r++]):String.fromCharCode((15&n)<<12|(63&t[r++])<<6|63&t[r++]):e+=String.fromCharCode(n)}}(t),s=i.s;return(r=i.r).length&&E(8),s}var ot=function(t,e){return e+30+$(t,e+26)+$(t,e+28)},at=function(t,e,r){var n=$(t,e+28),i=st(t.subarray(e+46,e+46+n),!(2048&$(t,e+8))),s=e+46+n,o=Q(t,e+20),a=r&&4294967295==o?ut(t,s):[o,Q(t,e+24),Q(t,e+42)],u=a[0],c=a[1],h=a[2];return[$(t,e+10),u,c,i,s+$(t,e+30)+$(t,e+32),h]},ut=function(t,e){for(;1!=$(t,e);e+=4+$(t,e+2));return[K(t,e+12),K(t,e+4),K(t,e+20)]};function ct(t,e){for(var r={},i=t.length-22;101010256!=Q(t,i);--i)(!i||t.length-i>65558)&&E(13);var s=$(t,i+8);if(!s)return{};var o=Q(t,i+16),a=4294967295==o||65535==s;if(a){var u=Q(t,i-12);(a=101075792==Q(t,u))&&(s=Q(t,u+32),o=Q(t,u+48))}for(var c=e&&e.filter,h=0;h{var n=null;"undefined"!=typeof WebSocket?n=WebSocket:"undefined"!=typeof MozWebSocket?n=MozWebSocket:void 0!==r.g?n=r.g.WebSocket||r.g.MozWebSocket:"undefined"!=typeof window?n=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(n=self.WebSocket||self.MozWebSocket),t.exports=n},1436:t=>{function e(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}function r(t){t.pending+=1;var e=!1;return function(i){if(e)throw new Error("callback called twice");if(e=!0,t.error=t.error||i,t.pending-=1,t.waiting.length>0&&t.pending{"use strict";r.d(e,{x:()=>u});var n=r(5982);const i="_metadata",s="Placeholder value for buckets that failed to open",o="QuotaExceededError";async function a(t){const e=[];for await(const[r,n]of t)"file"===n.kind&&e.push(n.getFile().then((t=>[r,t])));return Promise.all(e)}class u{#e;#r=!1;#n;#i;#s=null;#o=new Map;#a=new Map;#u="";constructor(t,e="otg_cache"){this.#u=e,this.#n=this.#c(),this.#e=t}async#c(){try{const t=await navigator.storage.getDirectory();this.#s=await t.getDirectoryHandle(this.#u,{create:!0})}catch(t){console.warn("Failed to open OPFS cache directory",t),this.#e?.("viewer.opfsCache.cacheOpenFailed",{errorName:t.name,errorMessage:t.message})}this.#n=void 0}async open(t){const e=this.#o.get(t);if(e)return e;let r=this.#a.get(t);return r||(r=(async()=>{let e,r,n;await this.#n;const o=t.replaceAll(/<|>|:|"|\/|\\|\||\?\*/g,"_"),a="opfs-cache-write-lock-"+o;try{if(!this.#s)throw new Error("OPFS cache directory not initialized");const s=await this.#s.getFileHandle(o,{create:!0});e=await s.createSyncAccessHandle({mode:"readwrite-unsafe"});const u=await this.#s.getFileHandle(o+i,{create:!0});r=await u.createSyncAccessHandle({mode:"readwrite-unsafe"});const c=new Uint32Array(1);return c[0]=(new Date).valueOf(),r.write(c,{at:0}),n={dataHandle:e,offsets:new Map,metadataHandle:r},this.#o.set(t,n),await new Promise((t=>{navigator.locks.request(a,{ifAvailable:!0,mode:"exclusive"},(e=>{if(t(),e)return new Promise((t=>{n.writeLock=t}))}))})),this.#h(n)!==n.dataHandle.getSize()&&(console.warn("Data file has unexpected size, clearing OPFS cache for",t),n.offsets.clear(),n.dataHandle.truncate(0),n.metadataHandle.truncate(4)),console.log("Opened OPFS cache bucket",t,"with",n.offsets.size,"entries"),n}catch(i){return"NoModificationAllowedError"===i.name?(console.warn(i.message),console.warn(`Failed to open OPFS cache bucket for ${t}. It is probably open in another tab. Disabling cache.`)):console.warn("Failed to initialize OFPS cache bucket",t,i),this.#s&&this.#e?.("viewer.opfsCache.bucketOpenFailed",{bucketName:t,errorName:i.name,errorMessage:i.message}),e?.close(),r?.close(),n?.writeLock?.(),this.#o.set(t,s),s}finally{this.#a.delete(t)}})(),this.#a.set(t,r),r)}#h(t){t.offsets.clear();const e=t.metadataHandle.getSize()-4,r=new Uint8Array(e),i=new Uint16Array(r.buffer),s=new Uint32Array(r.buffer);t.metadataHandle.read(r,{at:4});let o=0;for(let e=0;et.length)),a=new Uint8Array(24*t.length),u=new Uint32Array(a.buffer),c=new Uint8Array(o.reduce(((t,e)=>t+e),0));let h=0;for(let e=0;esetTimeout(t,0))),i!==this.#o.get(e))return;if(!this.#f(i,c,a)&&(await this.#d(),!this.#f(i,c,a)))return;let l=i.dataHandle.getSize()-c.length;for(let e=0;ee.length)throw new DOMException("Quota Exceeded in Chrome Incognito mode",o);if(n!==e.length)throw new DOMException("Partial write detected")}async get(t,e){const r=new Array(t.length).fill(null);for(let n=0;nt.lastModified-e.lastModified));let o=0;const u=Date.now()-7776e6;for(const t of s){if(t.lastModified>u&&o>=n)break;try{await this.#s.removeEntry(t.name),o+=t.size;const e=t.name.slice(0,-9),r=await(await this.#s.getFileHandle(e)).getFile();await this.#s.removeEntry(e),o+=r.size}catch(t){"NoModificationAllowedError"!==t.name&&console.warn("Error during cache eviction",t)}}return o>=n}async close(){this.#n&&await this.#n,this.#a.size&&await Promise.all(this.#a.values());for(const t of this.#o.values())t&&t!==s&&(t.dataHandle&&(t.dataHandle.flush(),t.dataHandle.close()),t.metadataHandle&&(t.metadataHandle.flush(),t.metadataHandle.close()),t.writeLock?.());this.#o.clear(),await this.#d(0)}async clear(){await this.close(),await this.#d(1)}async getStats(){await this.#n;let t=0,e=0,r=0;if(this.#s)for(const[n,s]of await a(this.#s))n.endsWith(i)?(r+=s.size,t+=(s.size-4)/24):e+=s.size;return{entries:t,dataSize:e,metadataSize:r}}#m(){this.#r||(this.#r=!0,navigator.storage.estimate().then((t=>{this.#e?.("viewer.opfsCache.quotaExceeded",t)})).catch((t=>{console.error("Failed to get storage estimate",t)})))}}},8401:(t,e,r)=>{"use strict";r.d(e,{k:()=>x});var n=r(6247),i=r(3293),s=r(1706);const o={Index:0,IndexEdges:1,Position:2,Normal:3,TextureUV:4,Color:5},a={TRIANGLES:0,LINES:1,POINTS:2,WIDE_LINES:3},u=(o.Position,o.Normal,o.Index,o.IndexEdges,o.Color,{});u[o.Position]="position",u[o.Normal]="normal",u[o.Index]="index",u[o.IndexEdges]="indexlines",u[o.Color]="color",u[o.TextureUV]="uv";const c={};function h(t){if(t.length){t[1]+=t[0],t[2]+=t[0];for(var e=3;e>4,r.bytesPerItem=c[r.type],r.normalized=4===r.type||5===r.type||6===r.type||7===r.type,r.itemOffset=this.buffer.readUInt8(this.readOffset)/4,this.readOffset++,r.itemStride=this.buffer.readUInt8(this.readOffset)/4,this.readOffset++,r.bufferIndex=this.buffer.readUInt8(this.readOffset),this.readOffset++,this.attributes.push(r)}for(;this.readOffset%4!=0;)this.readOffset++;for(let t=0;t>4,r.bytesPerItem=c[r.type],r.normalized=4===r.type||5===r.type||6===r.type||7===r.type,r.itemOffset=t.getUint8()/4,r.itemStride=t.getUint8()/4,r.bufferIndex=t.getUint8(),this.attributes.push(r)}for(;t.offset%4!=0;)t.offset++;for(let e=0;e1&&(v+=i.toString())),n.vbstride?n.vbstride!==c.itemStride&&console.error("Unexpected vertex buffer stride mismatch."):n.vbstride=c.itemStride,c.itemOffset>=c.itemStride||(n.vblayout[v]={bytesPerItem:c.bytesPerItem,offset:c.itemOffset,normalized:c.normalized,itemSize:c.itemSize})}}var y;return{mesh:n,packId:0,meshIndex:0}}var v=r(9861);function y(t){return 31===t[0]&&139===t[1]}function b(t){t.port.onmessage=e=>{switch(e.data.operation){case"DECODE_GEOMETRIES":!function(t,e,r,n){const i=new Array;for(let s=0;st.buffer)))}(t.worker,e.data.hashes,e.data.arrays)}}}function x(t){t.register("INSTALL_INPUT_PORT",{doOperation:b})}},9709:()=>{},684:()=>{},9631:()=>{},8215:()=>{},315:()=>{},9306:(t,e,r)=>{"use strict";var n=r(4901),i=r(6823),s=TypeError;t.exports=function(t){if(n(t))return t;throw new s(i(t)+" is not a function")}},6194:(t,e,r)=>{"use strict";var n=r(2248).has;t.exports=function(t){return n(t),t}},3506:(t,e,r)=>{"use strict";var n=r(3925),i=String,s=TypeError;t.exports=function(t){if(n(t))return t;throw new s("Can't set "+i(t)+" as a prototype")}},7080:(t,e,r)=>{"use strict";var n=r(4402).has;t.exports=function(t){return n(t),t}},6557:(t,e,r)=>{"use strict";var n=r(4995).has;t.exports=function(t){return n(t),t}},3755:(t,e,r)=>{"use strict";var n=r(8205).has;t.exports=function(t){return n(t),t}},6469:(t,e,r)=>{"use strict";var n=r(8227),i=r(2360),s=r(4913).f,o=n("unscopables"),a=Array.prototype;void 0===a[o]&&s(a,o,{configurable:!0,value:i(null)}),t.exports=function(t){a[o][t]=!0}},679:(t,e,r)=>{"use strict";var n=r(1625),i=TypeError;t.exports=function(t,e){if(n(e,t))return t;throw new i("Incorrect invocation")}},8551:(t,e,r)=>{"use strict";var n=r(34),i=String,s=TypeError;t.exports=function(t){if(n(t))return t;throw new s(i(t)+" is not an object")}},7811:t=>{"use strict";t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},5652:(t,e,r)=>{"use strict";var n=r(9039);t.exports=n((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}))},4644:(t,e,r)=>{"use strict";var n,i,s,o=r(7811),a=r(3724),u=r(4475),c=r(4901),h=r(34),l=r(9297),f=r(6955),d=r(6823),p=r(6699),m=r(6840),g=r(2106),v=r(1625),y=r(2787),b=r(2967),x=r(8227),w=r(3392),_=r(1181),I=_.enforce,A=_.get,O=u.Int8Array,S=O&&O.prototype,P=u.Uint8ClampedArray,k=P&&P.prototype,C=O&&y(O),T=S&&y(S),M=Object.prototype,E=u.TypeError,F=x("toStringTag"),R=w("TYPED_ARRAY_TAG"),z="TypedArrayConstructor",V=o&&!!b&&"Opera"!==f(u.opera),U=!1,D={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},L={BigInt64Array:8,BigUint64Array:8},j=function(t){var e=y(t);if(h(e)){var r=A(e);return r&&l(r,z)?r[z]:j(e)}},N=function(t){if(!h(t))return!1;var e=f(t);return l(D,e)||l(L,e)};for(n in D)(s=(i=u[n])&&i.prototype)?I(s)[z]=i:V=!1;for(n in L)(s=(i=u[n])&&i.prototype)&&(I(s)[z]=i);if((!V||!c(C)||C===Function.prototype)&&(C=function(){throw new E("Incorrect invocation")},V))for(n in D)u[n]&&b(u[n],C);if((!V||!T||T===M)&&(T=C.prototype,V))for(n in D)u[n]&&b(u[n].prototype,T);if(V&&y(k)!==T&&b(k,T),a&&!l(T,F))for(n in U=!0,g(T,F,{configurable:!0,get:function(){return h(this)?this[R]:void 0}}),D)u[n]&&p(u[n],R,n);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:V,TYPED_ARRAY_TAG:U&&R,aTypedArray:function(t){if(N(t))return t;throw new E("Target is not a typed array")},aTypedArrayConstructor:function(t){if(c(t)&&(!b||v(C,t)))return t;throw new E(d(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,r,n){if(a){if(r)for(var i in D){var s=u[i];if(s&&l(s.prototype,t))try{delete s.prototype[t]}catch(r){try{s.prototype[t]=e}catch(t){}}}T[t]&&!r||m(T,t,r?e:V&&S[t]||e,n)}},exportTypedArrayStaticMethod:function(t,e,r){var n,i;if(a){if(b){if(r)for(n in D)if((i=u[n])&&l(i,t))try{delete i[t]}catch(t){}if(C[t]&&!r)return;try{return m(C,t,r?e:V&&C[t]||e)}catch(t){}}for(n in D)!(i=u[n])||i[t]&&!r||m(i,t,e)}},getTypedArrayConstructor:j,isView:function(t){if(!h(t))return!1;var e=f(t);return"DataView"===e||l(D,e)||l(L,e)},isTypedArray:N,TypedArray:C,TypedArrayPrototype:T}},9617:(t,e,r)=>{"use strict";var n=r(5397),i=r(5610),s=r(6198),o=function(t){return function(e,r,o){var a=n(e),u=s(a);if(0===u)return!t&&-1;var c,h=i(o,u);if(t&&r!=r){for(;u>h;)if((c=a[h++])!=c)return!0}else for(;u>h;h++)if((t||h in a)&&a[h]===r)return t||h||0;return!t&&-1}};t.exports={includes:o(!0),indexOf:o(!1)}},9213:(t,e,r)=>{"use strict";var n=r(6080),i=r(9504),s=r(7055),o=r(8981),a=r(6198),u=r(1469),c=i([].push),h=function(t){var e=1===t,r=2===t,i=3===t,h=4===t,l=6===t,f=7===t,d=5===t||l;return function(p,m,g,v){for(var y,b,x=o(p),w=s(x),_=a(w),I=n(m,g),A=0,O=v||u,S=e?O(p,_):r||f?O(p,0):void 0;_>A;A++)if((d||A in w)&&(b=I(y=w[A],A,x),t))if(e)S[A]=b;else if(b)switch(t){case 3:return!0;case 5:return y;case 6:return A;case 2:c(S,y)}else switch(t){case 4:return!1;case 7:c(S,y)}return l?-1:i||h?h:S}};t.exports={forEach:h(0),map:h(1),filter:h(2),some:h(3),every:h(4),find:h(5),findIndex:h(6),filterReject:h(7)}},7680:(t,e,r)=>{"use strict";var n=r(9504);t.exports=n([].slice)},7433:(t,e,r)=>{"use strict";var n=r(4376),i=r(3517),s=r(34),o=r(8227)("species"),a=Array;t.exports=function(t){var e;return n(t)&&(e=t.constructor,(i(e)&&(e===a||n(e.prototype))||s(e)&&null===(e=e[o]))&&(e=void 0)),void 0===e?a:e}},1469:(t,e,r)=>{"use strict";var n=r(7433);t.exports=function(t,e){return new(n(t))(0===e?0:e)}},1946:(t,e,r)=>{"use strict";var n=r(9504),i=r(9306),s=r(4117),o=r(6198),a=r(8981),u=r(2248),c=r(6223),h=u.Map,l=u.has,f=u.set,d=n([].push);t.exports=function(t){var e,r,n,u=a(this),p=o(u),m=[],g=new h,v=s(t)?function(t){return t}:i(t);for(e=0;e{"use strict";var n=r(8227)("iterator"),i=!1;try{var s=0,o={next:function(){return{done:!!s++}},return:function(){i=!0}};o[n]=function(){return this},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,e){try{if(!e&&!i)return!1}catch(t){return!1}var r=!1;try{var s={};s[n]=function(){return{next:function(){return{done:r=!0}}}},t(s)}catch(t){}return r}},4576:(t,e,r)=>{"use strict";var n=r(9504),i=n({}.toString),s=n("".slice);t.exports=function(t){return s(i(t),8,-1)}},6955:(t,e,r)=>{"use strict";var n=r(2140),i=r(4901),s=r(4576),o=r(8227)("toStringTag"),a=Object,u="Arguments"===s(function(){return arguments}());t.exports=n?s:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=a(t),o))?r:u?s(e):"Object"===(n=s(e))&&i(e.callee)?"Arguments":n}},933:(t,e,r)=>{"use strict";var n=r(6080),i=r(8551),s=r(8981),o=r(2652);t.exports=function(t,e,r){return function(a){var u=s(a),c=arguments.length,h=c>1?arguments[1]:void 0,l=void 0!==h,f=l?n(h,c>2?arguments[2]:void 0):void 0,d=new t,p=0;return o(u,(function(t){var n=l?f(t,p++):t;r?e(d,i(n)[0],n[1]):e(d,n)})),d}}},7500:(t,e,r)=>{"use strict";var n=r(8551);t.exports=function(t,e,r){return function(){for(var i=new t,s=arguments.length,o=0;o{"use strict";var n=r(2360),i=r(2106),s=r(6279),o=r(6080),a=r(679),u=r(4117),c=r(2652),h=r(1088),l=r(2529),f=r(7633),d=r(3724),p=r(3451).fastKey,m=r(1181),g=m.set,v=m.getterFor;t.exports={getConstructor:function(t,e,r,h){var l=t((function(t,i){a(t,f),g(t,{type:e,index:n(null),first:void 0,last:void 0,size:0}),d||(t.size=0),u(i)||c(i,t[h],{that:t,AS_ENTRIES:r})})),f=l.prototype,m=v(e),y=function(t,e,r){var n,i,s=m(t),o=b(t,e);return o?o.value=r:(s.last=o={index:i=p(e,!0),key:e,value:r,previous:n=s.last,next:void 0,removed:!1},s.first||(s.first=o),n&&(n.next=o),d?s.size++:t.size++,"F"!==i&&(s.index[i]=o)),t},b=function(t,e){var r,n=m(t),i=p(e);if("F"!==i)return n.index[i];for(r=n.first;r;r=r.next)if(r.key===e)return r};return s(f,{clear:function(){for(var t=m(this),e=t.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=void 0),e=e.next;t.first=t.last=void 0,t.index=n(null),d?t.size=0:this.size=0},delete:function(t){var e=this,r=m(e),n=b(e,t);if(n){var i=n.next,s=n.previous;delete r.index[n.index],n.removed=!0,s&&(s.next=i),i&&(i.previous=s),r.first===n&&(r.first=i),r.last===n&&(r.last=s),d?r.size--:e.size--}return!!n},forEach:function(t){for(var e,r=m(this),n=o(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!b(this,t)}}),s(f,r?{get:function(t){var e=b(this,t);return e&&e.value},set:function(t,e){return y(this,0===t?0:t,e)}}:{add:function(t){return y(this,t=0===t?0:t,t)}}),d&&i(f,"size",{configurable:!0,get:function(){return m(this).size}}),l},setStrong:function(t,e,r){var n=e+" Iterator",i=v(e),s=v(n);h(t,e,(function(t,e){g(this,{type:n,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=s(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?l("keys"===e?r.key:"values"===e?r.value:[r.key,r.value],!1):(t.target=void 0,l(void 0,!0))}),r?"entries":"values",!r,!0),f(e)}}},4006:(t,e,r)=>{"use strict";var n=r(9504),i=r(6279),s=r(3451).getWeakData,o=r(679),a=r(8551),u=r(4117),c=r(34),h=r(2652),l=r(9213),f=r(9297),d=r(1181),p=d.set,m=d.getterFor,g=l.find,v=l.findIndex,y=n([].splice),b=0,x=function(t){return t.frozen||(t.frozen=new w)},w=function(){this.entries=[]},_=function(t,e){return g(t.entries,(function(t){return t[0]===e}))};w.prototype={get:function(t){var e=_(this,t);if(e)return e[1]},has:function(t){return!!_(this,t)},set:function(t,e){var r=_(this,t);r?r[1]=e:this.entries.push([t,e])},delete:function(t){var e=v(this.entries,(function(e){return e[0]===t}));return~e&&y(this.entries,e,1),!!~e}},t.exports={getConstructor:function(t,e,r,n){var l=t((function(t,i){o(t,d),p(t,{type:e,id:b++,frozen:void 0}),u(i)||h(i,t[n],{that:t,AS_ENTRIES:r})})),d=l.prototype,g=m(e),v=function(t,e,r){var n=g(t),i=s(a(e),!0);return!0===i?x(n).set(e,r):i[n.id]=r,t};return i(d,{delete:function(t){var e=g(this);if(!c(t))return!1;var r=s(t);return!0===r?x(e).delete(t):r&&f(r,e.id)&&delete r[e.id]},has:function(t){var e=g(this);if(!c(t))return!1;var r=s(t);return!0===r?x(e).has(t):r&&f(r,e.id)}}),i(d,r?{get:function(t){var e=g(this);if(c(t)){var r=s(t);return!0===r?x(e).get(t):r?r[e.id]:void 0}},set:function(t,e){return v(this,t,e)}}:{add:function(t){return v(this,t,!0)}}),l}}},6468:(t,e,r)=>{"use strict";var n=r(6518),i=r(4475),s=r(9504),o=r(2796),a=r(6840),u=r(3451),c=r(2652),h=r(679),l=r(4901),f=r(4117),d=r(34),p=r(9039),m=r(4428),g=r(687),v=r(3167);t.exports=function(t,e,r){var y=-1!==t.indexOf("Map"),b=-1!==t.indexOf("Weak"),x=y?"set":"add",w=i[t],_=w&&w.prototype,I=w,A={},O=function(t){var e=s(_[t]);a(_,t,"add"===t?function(t){return e(this,0===t?0:t),this}:"delete"===t?function(t){return!(b&&!d(t))&&e(this,0===t?0:t)}:"get"===t?function(t){return b&&!d(t)?void 0:e(this,0===t?0:t)}:"has"===t?function(t){return!(b&&!d(t))&&e(this,0===t?0:t)}:function(t,r){return e(this,0===t?0:t,r),this})};if(o(t,!l(w)||!(b||_.forEach&&!p((function(){(new w).entries().next()})))))I=r.getConstructor(e,t,y,x),u.enable();else if(o(t,!0)){var S=new I,P=S[x](b?{}:-0,1)!==S,k=p((function(){S.has(1)})),C=m((function(t){new w(t)})),T=!b&&p((function(){for(var t=new w,e=5;e--;)t[x](e,e);return!t.has(-0)}));C||((I=e((function(t,e){h(t,_);var r=v(new w,t,I);return f(e)||c(e,r[x],{that:r,AS_ENTRIES:y}),r}))).prototype=_,_.constructor=I),(k||T)&&(O("delete"),O("has"),y&&O("get")),(T||P)&&O(x),b&&_.clear&&delete _.clear}return A[t]=I,n({global:!0,constructor:!0,forced:I!==w},A),g(I,t),b||r.setStrong(I,t,y),I}},9323:(t,e,r)=>{"use strict";r(6033),r(3772);var n=r(7751),i=r(2360),s=r(34),o=Object,a=TypeError,u=n("Map"),c=n("WeakMap"),h=function(){this.object=null,this.symbol=null,this.primitives=null,this.objectsByIndex=i(null)};h.prototype.get=function(t,e){return this[t]||(this[t]=e())},h.prototype.next=function(t,e,r){var n=r?this.objectsByIndex[t]||(this.objectsByIndex[t]=new c):this.primitives||(this.primitives=new u),i=n.get(e);return i||n.set(e,i=new h),i};var l=new h;t.exports=function(){var t,e,r=l,n=arguments.length;for(t=0;t{"use strict";var n=r(9297),i=r(5031),s=r(7347),o=r(4913);t.exports=function(t,e,r){for(var a=i(e),u=o.f,c=s.f,h=0;h{"use strict";var n=r(9039);t.exports=!n((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},2529:t=>{"use strict";t.exports=function(t,e){return{value:t,done:e}}},6699:(t,e,r)=>{"use strict";var n=r(3724),i=r(4913),s=r(6980);t.exports=n?function(t,e,r){return i.f(t,e,s(1,r))}:function(t,e,r){return t[e]=r,t}},6980:t=>{"use strict";t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},2106:(t,e,r)=>{"use strict";var n=r(283),i=r(4913);t.exports=function(t,e,r){return r.get&&n(r.get,e,{getter:!0}),r.set&&n(r.set,e,{setter:!0}),i.f(t,e,r)}},6840:(t,e,r)=>{"use strict";var n=r(4901),i=r(4913),s=r(283),o=r(9433);t.exports=function(t,e,r,a){a||(a={});var u=a.enumerable,c=void 0!==a.name?a.name:e;if(n(r)&&s(r,c,a),a.global)u?t[e]=r:o(e,r);else{try{a.unsafe?t[e]&&(u=!0):delete t[e]}catch(t){}u?t[e]=r:i.f(t,e,{value:r,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return t}},6279:(t,e,r)=>{"use strict";var n=r(6840);t.exports=function(t,e,r){for(var i in e)n(t,i,e[i],r);return t}},9433:(t,e,r)=>{"use strict";var n=r(4475),i=Object.defineProperty;t.exports=function(t,e){try{i(n,t,{value:e,configurable:!0,writable:!0})}catch(r){n[t]=e}return e}},3724:(t,e,r)=>{"use strict";var n=r(9039);t.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:(t,e,r)=>{"use strict";var n=r(4475),i=r(34),s=n.document,o=i(s)&&i(s.createElement);t.exports=function(t){return o?s.createElement(t):{}}},6763:t=>{"use strict";t.exports="function"==typeof Bun&&Bun&&"string"==typeof Bun.version},8119:(t,e,r)=>{"use strict";var n=r(9392);t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},9088:(t,e,r)=>{"use strict";var n=r(4475),i=r(4576);t.exports="process"===i(n.process)},9392:t=>{"use strict";t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},7388:(t,e,r)=>{"use strict";var n,i,s=r(4475),o=r(9392),a=s.process,u=s.Deno,c=a&&a.versions||u&&u.version,h=c&&c.v8;h&&(i=(n=h.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!i&&o&&(!(n=o.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=o.match(/Chrome\/(\d+)/))&&(i=+n[1]),t.exports=i},8727:t=>{"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6518:(t,e,r)=>{"use strict";var n=r(4475),i=r(7347).f,s=r(6699),o=r(6840),a=r(9433),u=r(7740),c=r(2796);t.exports=function(t,e){var r,h,l,f,d,p=t.target,m=t.global,g=t.stat;if(r=m?n:g?n[p]||a(p,{}):n[p]&&n[p].prototype)for(h in e){if(f=e[h],l=t.dontCallGetSet?(d=i(r,h))&&d.value:r[h],!c(m?h:p+(g?".":"#")+h,t.forced)&&void 0!==l){if(typeof f==typeof l)continue;u(f,l)}(t.sham||l&&l.sham)&&s(f,"sham",!0),o(r,h,f,t)}}},9039:t=>{"use strict";t.exports=function(t){try{return!!t()}catch(t){return!0}}},2744:(t,e,r)=>{"use strict";var n=r(9039);t.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},8745:(t,e,r)=>{"use strict";var n=r(616),i=Function.prototype,s=i.apply,o=i.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n?o.bind(s):function(){return o.apply(s,arguments)})},6080:(t,e,r)=>{"use strict";var n=r(7476),i=r(9306),s=r(616),o=n(n.bind);t.exports=function(t,e){return i(t),void 0===e?t:s?o(t,e):function(){return t.apply(e,arguments)}}},616:(t,e,r)=>{"use strict";var n=r(9039);t.exports=!n((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},9565:(t,e,r)=>{"use strict";var n=r(616),i=Function.prototype.call;t.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},350:(t,e,r)=>{"use strict";var n=r(3724),i=r(9297),s=Function.prototype,o=n&&Object.getOwnPropertyDescriptor,a=i(s,"name"),u=a&&"something"===function(){}.name,c=a&&(!n||n&&o(s,"name").configurable);t.exports={EXISTS:a,PROPER:u,CONFIGURABLE:c}},6706:(t,e,r)=>{"use strict";var n=r(9504),i=r(9306);t.exports=function(t,e,r){try{return n(i(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}}},7476:(t,e,r)=>{"use strict";var n=r(4576),i=r(9504);t.exports=function(t){if("Function"===n(t))return i(t)}},9504:(t,e,r)=>{"use strict";var n=r(616),i=Function.prototype,s=i.call,o=n&&i.bind.bind(s,s);t.exports=n?o:function(t){return function(){return s.apply(t,arguments)}}},7751:(t,e,r)=>{"use strict";var n=r(4475),i=r(4901);t.exports=function(t,e){return arguments.length<2?(r=n[t],i(r)?r:void 0):n[t]&&n[t][e];var r}},1767:t=>{"use strict";t.exports=function(t){return{iterator:t,next:t.next,done:!1}}},851:(t,e,r)=>{"use strict";var n=r(6955),i=r(5966),s=r(4117),o=r(6269),a=r(8227)("iterator");t.exports=function(t){if(!s(t))return i(t,a)||i(t,"@@iterator")||o[n(t)]}},81:(t,e,r)=>{"use strict";var n=r(9565),i=r(9306),s=r(8551),o=r(6823),a=r(851),u=TypeError;t.exports=function(t,e){var r=arguments.length<2?a(t):e;if(i(r))return s(n(r,t));throw new u(o(t)+" is not iterable")}},5966:(t,e,r)=>{"use strict";var n=r(9306),i=r(4117);t.exports=function(t,e){var r=t[e];return i(r)?void 0:n(r)}},3789:(t,e,r)=>{"use strict";var n=r(9306),i=r(8551),s=r(9565),o=r(1291),a=r(1767),u="Invalid size",c=RangeError,h=TypeError,l=Math.max,f=function(t,e){this.set=t,this.size=l(e,0),this.has=n(t.has),this.keys=n(t.keys)};f.prototype={getIterator:function(){return a(i(s(this.keys,this.set)))},includes:function(t){return s(this.has,this.set,t)}},t.exports=function(t){i(t);var e=+t.size;if(e!=e)throw new h(u);var r=o(e);if(r<0)throw new c(u);return new f(t,r)}},4475:function(t,e,r){"use strict";var n=function(t){return t&&t.Math===Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:(t,e,r)=>{"use strict";var n=r(9504),i=r(8981),s=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return s(i(t),e)}},421:t=>{"use strict";t.exports={}},3138:t=>{"use strict";t.exports=function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}},397:(t,e,r)=>{"use strict";var n=r(7751);t.exports=n("document","documentElement")},5917:(t,e,r)=>{"use strict";var n=r(3724),i=r(9039),s=r(4055);t.exports=!n&&!i((function(){return 7!==Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a}))},7055:(t,e,r)=>{"use strict";var n=r(9504),i=r(9039),s=r(4576),o=Object,a=n("".split);t.exports=i((function(){return!o("z").propertyIsEnumerable(0)}))?function(t){return"String"===s(t)?a(t,""):o(t)}:o},3167:(t,e,r)=>{"use strict";var n=r(4901),i=r(34),s=r(2967);t.exports=function(t,e,r){var o,a;return s&&n(o=e.constructor)&&o!==r&&i(a=o.prototype)&&a!==r.prototype&&s(t,a),t}},3706:(t,e,r)=>{"use strict";var n=r(9504),i=r(4901),s=r(7629),o=n(Function.toString);i(s.inspectSource)||(s.inspectSource=function(t){return o(t)}),t.exports=s.inspectSource},3451:(t,e,r)=>{"use strict";var n=r(6518),i=r(9504),s=r(421),o=r(34),a=r(9297),u=r(4913).f,c=r(8480),h=r(298),l=r(4124),f=r(3392),d=r(2744),p=!1,m=f("meta"),g=0,v=function(t){u(t,m,{value:{objectID:"O"+g++,weakData:{}}})},y=t.exports={enable:function(){y.enable=function(){},p=!0;var t=c.f,e=i([].splice),r={};r[m]=1,t(r).length&&(c.f=function(r){for(var n=t(r),i=0,s=n.length;i{"use strict";var n,i,s,o=r(8622),a=r(4475),u=r(34),c=r(6699),h=r(9297),l=r(7629),f=r(6119),d=r(421),p="Object already initialized",m=a.TypeError,g=a.WeakMap;if(o||l.state){var v=l.state||(l.state=new g);v.get=v.get,v.has=v.has,v.set=v.set,n=function(t,e){if(v.has(t))throw new m(p);return e.facade=t,v.set(t,e),e},i=function(t){return v.get(t)||{}},s=function(t){return v.has(t)}}else{var y=f("state");d[y]=!0,n=function(t,e){if(h(t,y))throw new m(p);return e.facade=t,c(t,y,e),e},i=function(t){return h(t,y)?t[y]:{}},s=function(t){return h(t,y)}}t.exports={set:n,get:i,has:s,enforce:function(t){return s(t)?i(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!u(e)||(r=i(e)).type!==t)throw new m("Incompatible receiver, "+t+" required");return r}}}},4209:(t,e,r)=>{"use strict";var n=r(8227),i=r(6269),s=n("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||o[s]===t)}},4376:(t,e,r)=>{"use strict";var n=r(4576);t.exports=Array.isArray||function(t){return"Array"===n(t)}},4901:t=>{"use strict";var e="object"==typeof document&&document.all;t.exports=void 0===e&&void 0!==e?function(t){return"function"==typeof t||t===e}:function(t){return"function"==typeof t}},3517:(t,e,r)=>{"use strict";var n=r(9504),i=r(9039),s=r(4901),o=r(6955),a=r(7751),u=r(3706),c=function(){},h=a("Reflect","construct"),l=/^\s*(?:class|function)\b/,f=n(l.exec),d=!l.test(c),p=function(t){if(!s(t))return!1;try{return h(c,[],t),!0}catch(t){return!1}},m=function(t){if(!s(t))return!1;switch(o(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return d||!!f(l,u(t))}catch(t){return!0}};m.sham=!0,t.exports=!h||i((function(){var t;return p(p.call)||!p(Object)||!p((function(){t=!0}))||t}))?m:p},2796:(t,e,r)=>{"use strict";var n=r(9039),i=r(4901),s=/#|\.prototype\./,o=function(t,e){var r=u[a(t)];return r===h||r!==c&&(i(e)?n(e):!!e)},a=o.normalize=function(t){return String(t).replace(s,".").toLowerCase()},u=o.data={},c=o.NATIVE="N",h=o.POLYFILL="P";t.exports=o},1563:(t,e,r)=>{"use strict";var n=r(6955),i=r(9297),s=r(4117),o=r(8227),a=r(6269),u=o("iterator"),c=Object;t.exports=function(t){if(s(t))return!1;var e=c(t);return void 0!==e[u]||"@@iterator"in e||i(a,n(e))}},4117:t=>{"use strict";t.exports=function(t){return null==t}},34:(t,e,r)=>{"use strict";var n=r(4901);t.exports=function(t){return"object"==typeof t?null!==t:n(t)}},3925:(t,e,r)=>{"use strict";var n=r(34);t.exports=function(t){return n(t)||null===t}},6395:t=>{"use strict";t.exports=!1},757:(t,e,r)=>{"use strict";var n=r(7751),i=r(4901),s=r(1625),o=r(7040),a=Object;t.exports=o?function(t){return"symbol"==typeof t}:function(t){var e=n("Symbol");return i(e)&&s(e.prototype,a(t))}},507:(t,e,r)=>{"use strict";var n=r(9565);t.exports=function(t,e,r){for(var i,s,o=r?t:t.iterator,a=t.next;!(i=n(a,o)).done;)if(void 0!==(s=e(i.value)))return s}},2652:(t,e,r)=>{"use strict";var n=r(6080),i=r(9565),s=r(8551),o=r(6823),a=r(4209),u=r(6198),c=r(1625),h=r(81),l=r(851),f=r(9539),d=TypeError,p=function(t,e){this.stopped=t,this.result=e},m=p.prototype;t.exports=function(t,e,r){var g,v,y,b,x,w,_,I=r&&r.that,A=!(!r||!r.AS_ENTRIES),O=!(!r||!r.IS_RECORD),S=!(!r||!r.IS_ITERATOR),P=!(!r||!r.INTERRUPTED),k=n(e,I),C=function(t){return g&&f(g,"normal",t),new p(!0,t)},T=function(t){return A?(s(t),P?k(t[0],t[1],C):k(t[0],t[1])):P?k(t,C):k(t)};if(O)g=t.iterator;else if(S)g=t;else{if(!(v=l(t)))throw new d(o(t)+" is not iterable");if(a(v)){for(y=0,b=u(t);b>y;y++)if((x=T(t[y]))&&c(m,x))return x;return new p(!1)}g=h(t,v)}for(w=O?t.next:g.next;!(_=i(w,g)).done;){try{x=T(_.value)}catch(t){f(g,"throw",t)}if("object"==typeof x&&x&&c(m,x))return x}return new p(!1)}},9539:(t,e,r)=>{"use strict";var n=r(9565),i=r(8551),s=r(5966);t.exports=function(t,e,r){var o,a;i(t);try{if(!(o=s(t,"return"))){if("throw"===e)throw r;return r}o=n(o,t)}catch(t){a=!0,o=t}if("throw"===e)throw r;if(a)throw o;return i(o),r}},3994:(t,e,r)=>{"use strict";var n=r(7657).IteratorPrototype,i=r(2360),s=r(6980),o=r(687),a=r(6269),u=function(){return this};t.exports=function(t,e,r,c){var h=e+" Iterator";return t.prototype=i(n,{next:s(+!c,r)}),o(t,h,!1,!0),a[h]=u,t}},1088:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(6395),o=r(350),a=r(4901),u=r(3994),c=r(2787),h=r(2967),l=r(687),f=r(6699),d=r(6840),p=r(8227),m=r(6269),g=r(7657),v=o.PROPER,y=o.CONFIGURABLE,b=g.IteratorPrototype,x=g.BUGGY_SAFARI_ITERATORS,w=p("iterator"),_="keys",I="values",A="entries",O=function(){return this};t.exports=function(t,e,r,o,p,g,S){u(r,e,o);var P,k,C,T=function(t){if(t===p&&z)return z;if(!x&&t&&t in F)return F[t];switch(t){case _:case I:case A:return function(){return new r(this,t)}}return function(){return new r(this)}},M=e+" Iterator",E=!1,F=t.prototype,R=F[w]||F["@@iterator"]||p&&F[p],z=!x&&R||T(p),V="Array"===e&&F.entries||R;if(V&&(P=c(V.call(new t)))!==Object.prototype&&P.next&&(s||c(P)===b||(h?h(P,b):a(P[w])||d(P,w,O)),l(P,M,!0,!0),s&&(m[M]=O)),v&&p===I&&R&&R.name!==I&&(!s&&y?f(F,"name",I):(E=!0,z=function(){return i(R,this)})),p)if(k={values:T(I),keys:g?z:T(_),entries:T(A)},S)for(C in k)(x||E||!(C in F))&&d(F,C,k[C]);else n({target:e,proto:!0,forced:x||E},k);return s&&!S||F[w]===z||d(F,w,z,{name:p}),m[e]=z,k}},7657:(t,e,r)=>{"use strict";var n,i,s,o=r(9039),a=r(4901),u=r(34),c=r(2360),h=r(2787),l=r(6840),f=r(8227),d=r(6395),p=f("iterator"),m=!1;[].keys&&("next"in(s=[].keys())?(i=h(h(s)))!==Object.prototype&&(n=i):m=!0),!u(n)||o((function(){var t={};return n[p].call(t)!==t}))?n={}:d&&(n=c(n)),a(n[p])||l(n,p,(function(){return this})),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:m}},6269:t=>{"use strict";t.exports={}},6198:(t,e,r)=>{"use strict";var n=r(8014);t.exports=function(t){return n(t.length)}},283:(t,e,r)=>{"use strict";var n=r(9504),i=r(9039),s=r(4901),o=r(9297),a=r(3724),u=r(350).CONFIGURABLE,c=r(3706),h=r(1181),l=h.enforce,f=h.get,d=String,p=Object.defineProperty,m=n("".slice),g=n("".replace),v=n([].join),y=a&&!i((function(){return 8!==p((function(){}),"length",{value:8}).length})),b=String(String).split("String"),x=t.exports=function(t,e,r){"Symbol("===m(d(e),0,7)&&(e="["+g(d(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!o(t,"name")||u&&t.name!==e)&&(a?p(t,"name",{value:e,configurable:!0}):t.name=e),y&&r&&o(r,"arity")&&t.length!==r.arity&&p(t,"length",{value:r.arity});try{r&&o(r,"constructor")&&r.constructor?a&&p(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=l(t);return o(n,"source")||(n.source=v(b,"string"==typeof e?e:"")),t};Function.prototype.toString=x((function(){return s(this)&&f(this).source||c(this)}),"toString")},2248:(t,e,r)=>{"use strict";var n=r(9504),i=Map.prototype;t.exports={Map,set:n(i.set),get:n(i.get),has:n(i.has),remove:n(i.delete),proto:i}},6223:(t,e,r)=>{"use strict";var n=r(9504),i=r(507),s=r(2248),o=s.Map,a=s.proto,u=n(a.forEach),c=n(a.entries),h=c(new o).next;t.exports=function(t,e,r){return r?i({iterator:c(t),next:h},(function(t){return e(t[1],t[0])})):u(t,e)}},3164:(t,e,r)=>{"use strict";var n=r(7782),i=Math.abs,s=2220446049250313e-31,o=1/s;t.exports=function(t,e,r,a){var u=+t,c=i(u),h=n(u);if(cr||f!=f?h*(1/0):h*f}},5617:(t,e,r)=>{"use strict";var n=r(3164);t.exports=Math.fround||function(t){return n(t,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)}},7905:t=>{"use strict";t.exports=Math.scale||function(t,e,r,n,i){var s=+t,o=+e,a=+r,u=+n,c=+i;return s!=s||o!=o||a!=a||u!=u||c!=c?NaN:s===1/0||s===-1/0?s:(s-o)*(c-u)/(a-o)+u}},7782:t=>{"use strict";t.exports=Math.sign||function(t){var e=+t;return 0===e||e!=e?e:e<0?-1:1}},741:t=>{"use strict";var e=Math.ceil,r=Math.floor;t.exports=Math.trunc||function(t){var n=+t;return(n>0?r:e)(n)}},6043:(t,e,r)=>{"use strict";var n=r(9306),i=TypeError,s=function(t){var e,r;this.promise=new t((function(t,n){if(void 0!==e||void 0!==r)throw new i("Bad Promise constructor");e=t,r=n})),this.resolve=n(e),this.reject=n(r)};t.exports.f=function(t){return new s(t)}},360:(t,e,r)=>{"use strict";var n=r(4475).isFinite;t.exports=Number.isFinite||function(t){return"number"==typeof t&&n(t)}},2360:(t,e,r)=>{"use strict";var n,i=r(8551),s=r(6801),o=r(8727),a=r(421),u=r(397),c=r(4055),h=r(6119),l="prototype",f="script",d=h("IE_PROTO"),p=function(){},m=function(t){return"<"+f+">"+t+""},g=function(t){t.write(m("")),t.close();var e=t.parentWindow.Object;return t=null,e},v=function(){try{n=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;v="undefined"!=typeof document?document.domain&&n?g(n):(e=c("iframe"),r="java"+f+":",e.style.display="none",u.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write(m("document.F=Object")),t.close(),t.F):g(n);for(var i=o.length;i--;)delete v[l][o[i]];return v()};a[d]=!0,t.exports=Object.create||function(t,e){var r;return null!==t?(p[l]=i(t),r=new p,p[l]=null,r[d]=t):r=v(),void 0===e?r:s.f(r,e)}},6801:(t,e,r)=>{"use strict";var n=r(3724),i=r(8686),s=r(4913),o=r(8551),a=r(5397),u=r(1072);e.f=n&&!i?Object.defineProperties:function(t,e){o(t);for(var r,n=a(e),i=u(e),c=i.length,h=0;c>h;)s.f(t,r=i[h++],n[r]);return t}},4913:(t,e,r)=>{"use strict";var n=r(3724),i=r(5917),s=r(8686),o=r(8551),a=r(6969),u=TypeError,c=Object.defineProperty,h=Object.getOwnPropertyDescriptor,l="enumerable",f="configurable",d="writable";e.f=n?s?function(t,e,r){if(o(t),e=a(e),o(r),"function"==typeof t&&"prototype"===e&&"value"in r&&d in r&&!r[d]){var n=h(t,e);n&&n[d]&&(t[e]=r.value,r={configurable:f in r?r[f]:n[f],enumerable:l in r?r[l]:n[l],writable:!1})}return c(t,e,r)}:c:function(t,e,r){if(o(t),e=a(e),o(r),i)try{return c(t,e,r)}catch(t){}if("get"in r||"set"in r)throw new u("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},7347:(t,e,r)=>{"use strict";var n=r(3724),i=r(9565),s=r(8773),o=r(6980),a=r(5397),u=r(6969),c=r(9297),h=r(5917),l=Object.getOwnPropertyDescriptor;e.f=n?l:function(t,e){if(t=a(t),e=u(e),h)try{return l(t,e)}catch(t){}if(c(t,e))return o(!i(s.f,t,e),t[e])}},298:(t,e,r)=>{"use strict";var n=r(4576),i=r(5397),s=r(8480).f,o=r(7680),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"Window"===n(t)?function(t){try{return s(t)}catch(t){return o(a)}}(t):s(i(t))}},8480:(t,e,r)=>{"use strict";var n=r(1828),i=r(8727).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,i)}},3717:(t,e)=>{"use strict";e.f=Object.getOwnPropertySymbols},2787:(t,e,r)=>{"use strict";var n=r(9297),i=r(4901),s=r(8981),o=r(6119),a=r(2211),u=o("IE_PROTO"),c=Object,h=c.prototype;t.exports=a?c.getPrototypeOf:function(t){var e=s(t);if(n(e,u))return e[u];var r=e.constructor;return i(r)&&e instanceof r?r.prototype:e instanceof c?h:null}},4124:(t,e,r)=>{"use strict";var n=r(9039),i=r(34),s=r(4576),o=r(5652),a=Object.isExtensible,u=n((function(){a(1)}));t.exports=u||o?function(t){return!!i(t)&&(!o||"ArrayBuffer"!==s(t))&&(!a||a(t))}:a},1625:(t,e,r)=>{"use strict";var n=r(9504);t.exports=n({}.isPrototypeOf)},1828:(t,e,r)=>{"use strict";var n=r(9504),i=r(9297),s=r(5397),o=r(9617).indexOf,a=r(421),u=n([].push);t.exports=function(t,e){var r,n=s(t),c=0,h=[];for(r in n)!i(a,r)&&i(n,r)&&u(h,r);for(;e.length>c;)i(n,r=e[c++])&&(~o(h,r)||u(h,r));return h}},1072:(t,e,r)=>{"use strict";var n=r(1828),i=r(8727);t.exports=Object.keys||function(t){return n(t,i)}},8773:(t,e)=>{"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);e.f=i?function(t){var e=n(this,t);return!!e&&e.enumerable}:r},2967:(t,e,r)=>{"use strict";var n=r(6706),i=r(34),s=r(7750),o=r(3506);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=n(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return s(r),o(n),i(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0)},4270:(t,e,r)=>{"use strict";var n=r(9565),i=r(4901),s=r(34),o=TypeError;t.exports=function(t,e){var r,a;if("string"===e&&i(r=t.toString)&&!s(a=n(r,t)))return a;if(i(r=t.valueOf)&&!s(a=n(r,t)))return a;if("string"!==e&&i(r=t.toString)&&!s(a=n(r,t)))return a;throw new o("Can't convert object to primitive value")}},5031:(t,e,r)=>{"use strict";var n=r(7751),i=r(9504),s=r(8480),o=r(3717),a=r(8551),u=i([].concat);t.exports=n("Reflect","ownKeys")||function(t){var e=s.f(a(t)),r=o.f;return r?u(e,r(t)):e}},9167:(t,e,r)=>{"use strict";var n=r(4475);t.exports=n},1103:t=>{"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},8449:(t,e,r)=>{"use strict";r(6033),r(3772);var n=r(7751),i=r(9504),s=r(5745),o=n("Map"),a=n("WeakMap"),u=i([].push),c=s("metadata"),h=c.store||(c.store=new a),l=function(t,e,r){var n=h.get(t);if(!n){if(!r)return;h.set(t,n=new o)}var i=n.get(e);if(!i){if(!r)return;n.set(e,i=new o)}return i};t.exports={store:h,getMap:l,has:function(t,e,r){var n=l(e,r,!1);return void 0!==n&&n.has(t)},get:function(t,e,r){var n=l(e,r,!1);return void 0===n?void 0:n.get(t)},set:function(t,e,r,n){l(r,n,!0).set(t,e)},keys:function(t,e){var r=l(t,e,!1),n=[];return r&&r.forEach((function(t,e){u(n,e)})),n},toKey:function(t){return void 0===t||"symbol"==typeof t?t:String(t)}}},7979:(t,e,r)=>{"use strict";var n=r(8551);t.exports=function(){var t=n(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.unicodeSets&&(e+="v"),t.sticky&&(e+="y"),e}},7750:(t,e,r)=>{"use strict";var n=r(4117),i=TypeError;t.exports=function(t){if(n(t))throw new i("Can't call method on "+t);return t}},3317:t=>{"use strict";t.exports=function(t,e){return t===e||t!=t&&e!=e}},9472:(t,e,r)=>{"use strict";var n,i=r(4475),s=r(8745),o=r(4901),a=r(6763),u=r(9392),c=r(7680),h=r(2812),l=i.Function,f=/MSIE .\./.test(u)||a&&((n=i.Bun.version.split(".")).length<3||"0"===n[0]&&(n[1]<3||"3"===n[1]&&"0"===n[2]));t.exports=function(t,e){var r=e?2:1;return f?function(n,i){var a=h(arguments.length,1)>r,u=o(n)?n:l(n),f=a?c(arguments,r):[],d=a?function(){s(u,this,f)}:u;return e?t(d,i):t(d)}:t}},9286:(t,e,r)=>{"use strict";var n=r(4402),i=r(8469),s=n.Set,o=n.add;t.exports=function(t){var e=new s;return i(t,(function(t){o(e,t)})),e}},3440:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402),s=r(9286),o=r(5170),a=r(3789),u=r(8469),c=r(507),h=i.has,l=i.remove;t.exports=function(t){var e=n(this),r=a(t),i=s(e);return o(e)<=r.size?u(e,(function(t){r.includes(t)&&l(i,t)})):c(r.getIterator(),(function(t){h(e,t)&&l(i,t)})),i}},4402:(t,e,r)=>{"use strict";var n=r(9504),i=Set.prototype;t.exports={Set,add:n(i.add),has:n(i.has),remove:n(i.delete),proto:i}},8750:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402),s=r(5170),o=r(3789),a=r(8469),u=r(507),c=i.Set,h=i.add,l=i.has;t.exports=function(t){var e=n(this),r=o(t),i=new c;return s(e)>r.size?u(r.getIterator(),(function(t){l(e,t)&&h(i,t)})):a(e,(function(t){r.includes(t)&&h(i,t)})),i}},4449:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402).has,s=r(5170),o=r(3789),a=r(8469),u=r(507),c=r(9539);t.exports=function(t){var e=n(this),r=o(t);if(s(e)<=r.size)return!1!==a(e,(function(t){if(r.includes(t))return!1}),!0);var h=r.getIterator();return!1!==u(h,(function(t){if(i(e,t))return c(h,"normal",!1)}))}},3838:(t,e,r)=>{"use strict";var n=r(7080),i=r(5170),s=r(8469),o=r(3789);t.exports=function(t){var e=n(this),r=o(t);return!(i(e)>r.size)&&!1!==s(e,(function(t){if(!r.includes(t))return!1}),!0)}},8527:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402).has,s=r(5170),o=r(3789),a=r(507),u=r(9539);t.exports=function(t){var e=n(this),r=o(t);if(s(e){"use strict";var n=r(9504),i=r(507),s=r(4402),o=s.Set,a=s.proto,u=n(a.forEach),c=n(a.keys),h=c(new o).next;t.exports=function(t,e,r){return r?i({iterator:c(t),next:h},e):u(t,e)}},5170:(t,e,r)=>{"use strict";var n=r(6706),i=r(4402);t.exports=n(i.proto,"size","get")||function(t){return t.size}},7633:(t,e,r)=>{"use strict";var n=r(7751),i=r(2106),s=r(8227),o=r(3724),a=s("species");t.exports=function(t){var e=n(t);o&&e&&!e[a]&&i(e,a,{configurable:!0,get:function(){return this}})}},3650:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402),s=r(9286),o=r(3789),a=r(507),u=i.add,c=i.has,h=i.remove;t.exports=function(t){var e=n(this),r=o(t).getIterator(),i=s(e);return a(r,(function(t){c(e,t)?h(i,t):u(i,t)})),i}},687:(t,e,r)=>{"use strict";var n=r(4913).f,i=r(9297),s=r(8227)("toStringTag");t.exports=function(t,e,r){t&&!r&&(t=t.prototype),t&&!i(t,s)&&n(t,s,{configurable:!0,value:e})}},4204:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402).add,s=r(9286),o=r(3789),a=r(507);t.exports=function(t){var e=n(this),r=o(t).getIterator(),u=s(e);return a(r,(function(t){i(u,t)})),u}},6119:(t,e,r)=>{"use strict";var n=r(5745),i=r(3392),s=n("keys");t.exports=function(t){return s[t]||(s[t]=i(t))}},7629:(t,e,r)=>{"use strict";var n=r(6395),i=r(4475),s=r(9433),o="__core-js_shared__",a=t.exports=i[o]||s(o,{});(a.versions||(a.versions=[])).push({version:"3.36.1",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(t,e,r)=>{"use strict";var n=r(7629);t.exports=function(t,e){return n[t]||(n[t]=e||{})}},8183:(t,e,r)=>{"use strict";var n=r(9504),i=r(1291),s=r(655),o=r(7750),a=n("".charAt),u=n("".charCodeAt),c=n("".slice),h=function(t){return function(e,r){var n,h,l=s(o(e)),f=i(r),d=l.length;return f<0||f>=d?t?"":void 0:(n=u(l,f))<55296||n>56319||f+1===d||(h=u(l,f+1))<56320||h>57343?t?a(l,f):n:t?c(l,f,f+2):h-56320+(n-55296<<10)+65536}};t.exports={codeAt:h(!1),charAt:h(!0)}},4495:(t,e,r)=>{"use strict";var n=r(7388),i=r(9039),s=r(4475).String;t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol("symbol detection");return!s(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},9225:(t,e,r)=>{"use strict";var n,i,s,o,a=r(4475),u=r(8745),c=r(6080),h=r(4901),l=r(9297),f=r(9039),d=r(397),p=r(7680),m=r(4055),g=r(2812),v=r(8119),y=r(9088),b=a.setImmediate,x=a.clearImmediate,w=a.process,_=a.Dispatch,I=a.Function,A=a.MessageChannel,O=a.String,S=0,P={},k="onreadystatechange";f((function(){n=a.location}));var C=function(t){if(l(P,t)){var e=P[t];delete P[t],e()}},T=function(t){return function(){C(t)}},M=function(t){C(t.data)},E=function(t){a.postMessage(O(t),n.protocol+"//"+n.host)};b&&x||(b=function(t){g(arguments.length,1);var e=h(t)?t:I(t),r=p(arguments,1);return P[++S]=function(){u(e,void 0,r)},i(S),S},x=function(t){delete P[t]},y?i=function(t){w.nextTick(T(t))}:_&&_.now?i=function(t){_.now(T(t))}:A&&!v?(o=(s=new A).port2,s.port1.onmessage=M,i=c(o.postMessage,o)):a.addEventListener&&h(a.postMessage)&&!a.importScripts&&n&&"file:"!==n.protocol&&!f(E)?(i=E,a.addEventListener("message",M,!1)):i=k in m("script")?function(t){d.appendChild(m("script"))[k]=function(){d.removeChild(this),C(t)}}:function(t){setTimeout(T(t),0)}),t.exports={set:b,clear:x}},5610:(t,e,r)=>{"use strict";var n=r(1291),i=Math.max,s=Math.min;t.exports=function(t,e){var r=n(t);return r<0?i(r+e,0):s(r,e)}},5397:(t,e,r)=>{"use strict";var n=r(7055),i=r(7750);t.exports=function(t){return n(i(t))}},1291:(t,e,r)=>{"use strict";var n=r(741);t.exports=function(t){var e=+t;return e!=e||0===e?0:n(e)}},8014:(t,e,r)=>{"use strict";var n=r(1291),i=Math.min;t.exports=function(t){var e=n(t);return e>0?i(e,9007199254740991):0}},8981:(t,e,r)=>{"use strict";var n=r(7750),i=Object;t.exports=function(t){return i(n(t))}},8229:(t,e,r)=>{"use strict";var n=r(9590),i=RangeError;t.exports=function(t,e){var r=n(t);if(r%e)throw new i("Wrong offset");return r}},9590:(t,e,r)=>{"use strict";var n=r(1291),i=RangeError;t.exports=function(t){var e=n(t);if(e<0)throw new i("The argument can't be less than 0");return e}},2777:(t,e,r)=>{"use strict";var n=r(9565),i=r(34),s=r(757),o=r(5966),a=r(4270),u=r(8227),c=TypeError,h=u("toPrimitive");t.exports=function(t,e){if(!i(t)||s(t))return t;var r,u=o(t,h);if(u){if(void 0===e&&(e="default"),r=n(u,t,e),!i(r)||s(r))return r;throw new c("Can't convert object to primitive value")}return void 0===e&&(e="number"),a(t,e)}},6969:(t,e,r)=>{"use strict";var n=r(2777),i=r(757);t.exports=function(t){var e=n(t,"string");return i(e)?e:e+""}},7650:(t,e,r)=>{"use strict";var n=r(7751),i=r(4901),s=r(1563),o=r(34),a=n("Set");t.exports=function(t){return function(t){return o(t)&&"number"==typeof t.size&&i(t.has)&&i(t.keys)}(t)?t:s(t)?new a(t):t}},2140:(t,e,r)=>{"use strict";var n={};n[r(8227)("toStringTag")]="z",t.exports="[object z]"===String(n)},655:(t,e,r)=>{"use strict";var n=r(6955),i=String;t.exports=function(t){if("Symbol"===n(t))throw new TypeError("Cannot convert a Symbol value to a string");return i(t)}},6823:t=>{"use strict";var e=String;t.exports=function(t){try{return e(t)}catch(t){return"Object"}}},3392:(t,e,r)=>{"use strict";var n=r(9504),i=0,s=Math.random(),o=n(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+o(++i+s,36)}},7040:(t,e,r)=>{"use strict";var n=r(4495);t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:(t,e,r)=>{"use strict";var n=r(3724),i=r(9039);t.exports=n&&i((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:t=>{"use strict";var e=TypeError;t.exports=function(t,r){if(t{"use strict";var n=r(4475),i=r(4901),s=n.WeakMap;t.exports=i(s)&&/native code/.test(String(s))},4995:(t,e,r)=>{"use strict";var n=r(9504),i=WeakMap.prototype;t.exports={WeakMap,set:n(i.set),get:n(i.get),has:n(i.has),remove:n(i.delete)}},8205:(t,e,r)=>{"use strict";var n=r(9504),i=WeakSet.prototype;t.exports={WeakSet,add:n(i.add),has:n(i.has),remove:n(i.delete)}},511:(t,e,r)=>{"use strict";var n=r(9167),i=r(9297),s=r(1951),o=r(4913).f;t.exports=function(t){var e=n.Symbol||(n.Symbol={});i(e,t)||o(e,t,{value:s.f(t)})}},1951:(t,e,r)=>{"use strict";var n=r(8227);e.f=n},8227:(t,e,r)=>{"use strict";var n=r(4475),i=r(5745),s=r(9297),o=r(3392),a=r(4495),u=r(7040),c=n.Symbol,h=i("wks"),l=u?c.for||c:c&&c.withoutSetter||o;t.exports=function(t){return s(h,t)||(h[t]=a&&s(c,t)?c[t]:l("Symbol."+t)),h[t]}},4423:(t,e,r)=>{"use strict";var n=r(6518),i=r(9617).includes,s=r(9039),o=r(6469);n({target:"Array",proto:!0,forced:s((function(){return!Array(1).includes()}))},{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),o("includes")},8523:(t,e,r)=>{"use strict";r(6468)("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),r(6938))},7072:(t,e,r)=>{"use strict";var n=r(6518),i=r(9504),s=r(9306),o=r(7750),a=r(2652),u=r(2248),c=r(6395),h=u.Map,l=u.has,f=u.get,d=u.set,p=i([].push);n({target:"Map",stat:!0,forced:c},{groupBy:function(t,e){o(t),s(e);var r=new h,n=0;return a(t,(function(t){var i=e(t,n++);l(r,i)?p(f(r,i),t):d(r,i,[t])})),r}})},6033:(t,e,r)=>{"use strict";r(8523)},9479:(t,e,r)=>{"use strict";var n=r(4475),i=r(3724),s=r(2106),o=r(7979),a=r(9039),u=n.RegExp,c=u.prototype;i&&a((function(){var t=!0;try{u(".","d")}catch(e){t=!1}var e={},r="",n=t?"dgimsy":"gimsy",i=function(t,n){Object.defineProperty(e,t,{get:function(){return r+=n,!0}})},s={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var o in t&&(s.hasIndices="d"),s)i(o,s[o]);return Object.getOwnPropertyDescriptor(c,"flags").get.call(e)!==n||r!==n}))&&s(c,"flags",{configurable:!0,get:o})},8845:(t,e,r)=>{"use strict";var n=r(4475),i=r(9565),s=r(4644),o=r(6198),a=r(8229),u=r(8981),c=r(9039),h=n.RangeError,l=n.Int8Array,f=l&&l.prototype,d=f&&f.set,p=s.aTypedArray,m=s.exportTypedArrayMethod,g=!c((function(){var t=new Uint8ClampedArray(2);return i(d,t,{length:1,0:3},1),3!==t[1]})),v=g&&s.NATIVE_ARRAY_BUFFER_VIEWS&&c((function(){var t=new l(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));m("set",(function(t){p(this);var e=a(arguments.length>1?arguments[1]:void 0,1),r=u(t);if(g)return i(d,this,r,e);var n=this.length,s=o(r),c=0;if(s+e>n)throw new h("Wrong length");for(;c{"use strict";var n,i=r(2744),s=r(4475),o=r(9504),a=r(6279),u=r(3451),c=r(6468),h=r(4006),l=r(34),f=r(1181).enforce,d=r(9039),p=r(8622),m=Object,g=Array.isArray,v=m.isExtensible,y=m.isFrozen,b=m.isSealed,x=m.freeze,w=m.seal,_=!s.ActiveXObject&&"ActiveXObject"in s,I=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},A=c("WeakMap",I,h),O=A.prototype,S=o(O.set);if(p)if(_){n=h.getConstructor(I,"WeakMap",!0),u.enable();var P=o(O.delete),k=o(O.has),C=o(O.get);a(O,{delete:function(t){if(l(t)&&!v(t)){var e=f(this);return e.frozen||(e.frozen=new n),P(this,t)||e.frozen.delete(t)}return P(this,t)},has:function(t){if(l(t)&&!v(t)){var e=f(this);return e.frozen||(e.frozen=new n),k(this,t)||e.frozen.has(t)}return k(this,t)},get:function(t){if(l(t)&&!v(t)){var e=f(this);return e.frozen||(e.frozen=new n),k(this,t)?C(this,t):e.frozen.get(t)}return C(this,t)},set:function(t,e){if(l(t)&&!v(t)){var r=f(this);r.frozen||(r.frozen=new n),k(this,t)?S(this,t,e):r.frozen.set(t,e)}else S(this,t,e);return this}})}else i&&d((function(){var t=x([]);return S(new A,t,1),!y(t)}))&&a(O,{set:function(t,e){var r;return g(t)&&(y(t)?r=x:b(t)&&(r=w)),S(this,t,e),r&&r(t),this}})},3772:(t,e,r)=>{"use strict";r(5746)},7656:(t,e,r)=>{"use strict";var n=r(3724),i=r(6469),s=r(8981),o=r(6198),a=r(2106);n&&(a(Array.prototype,"lastIndex",{configurable:!0,get:function(){var t=s(this),e=o(t);return 0===e?0:e-1}}),i("lastIndex"))},5105:(t,e,r)=>{"use strict";var n=r(3724),i=r(6469),s=r(8981),o=r(6198),a=r(2106);n&&(a(Array.prototype,"lastItem",{configurable:!0,get:function(){var t=s(this),e=o(t);return 0===e?void 0:t[e-1]},set:function(t){var e=s(this),r=o(e);return e[0===r?0:r-1]=t}}),i("lastItem"))},7467:(t,e,r)=>{"use strict";var n=r(6518),i=r(8745),s=r(9323),o=r(7751),a=r(2360),u=Object,c=function(){var t=o("Object","freeze");return t?t(a(null)):a(null)};n({global:!0,forced:!0},{compositeKey:function(){return i(s,u,arguments).get("object",c)}})},586:(t,e,r)=>{"use strict";var n=r(6518),i=r(9323),s=r(7751),o=r(8745);n({global:!0,forced:!0},{compositeSymbol:function(){return 1===arguments.length&&"string"==typeof arguments[0]?s("Symbol").for(arguments[0]):o(i,null,arguments).get("symbol",s("Symbol"))}})},1517:(t,e,r)=>{"use strict";var n=r(6518),i=r(6194),s=r(2248).remove;n({target:"Map",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=i(this),r=!0,n=0,o=arguments.length;n{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{every:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0);return!1!==o(e,(function(t,n){if(!r(t,n,e))return!1}),!0)}})},4190:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(2248),a=r(6223),u=o.Map,c=o.set;n({target:"Map",proto:!0,real:!0,forced:!0},{filter:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=new u;return a(e,(function(t,i){r(t,i,e)&&c(n,i,t)})),n}})},6097:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{findKey:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=o(e,(function(t,n){if(r(t,n,e))return{key:n}}),!0);return n&&n.key}})},2359:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{find:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=o(e,(function(t,n){if(r(t,n,e))return{value:t}}),!0);return n&&n.value}})},9172:(t,e,r)=>{"use strict";var n=r(6518),i=r(2248);n({target:"Map",stat:!0,forced:!0},{from:r(933)(i.Map,i.set,!0)})},7019:(t,e,r)=>{"use strict";r(7072)},7273:(t,e,r)=>{"use strict";var n=r(6518),i=r(3317),s=r(6194),o=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{includes:function(t){return!0===o(s(this),(function(e){if(i(e,t))return!0}),!0)}})},1723:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(2652),o=r(4901),a=r(9306),u=r(2248).Map;n({target:"Map",stat:!0,forced:!0},{keyBy:function(t,e){var r=new(o(this)?this:u);a(e);var n=a(r.set);return s(t,(function(t){i(n,r,e(t),t)})),r}})},7415:(t,e,r)=>{"use strict";var n=r(6518),i=r(6194),s=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{keyOf:function(t){var e=s(i(this),(function(e,r){if(e===t)return{key:r}}),!0);return e&&e.key}})},9929:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(2248),a=r(6223),u=o.Map,c=o.set;n({target:"Map",proto:!0,real:!0,forced:!0},{mapKeys:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=new u;return a(e,(function(t,i){c(n,r(t,i,e),t)})),n}})},7583:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(2248),a=r(6223),u=o.Map,c=o.set;n({target:"Map",proto:!0,real:!0,forced:!0},{mapValues:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=new u;return a(e,(function(t,i){c(n,i,r(t,i,e))})),n}})},5122:(t,e,r)=>{"use strict";var n=r(6518),i=r(6194),s=r(2652),o=r(2248).set;n({target:"Map",proto:!0,real:!0,arity:1,forced:!0},{merge:function(t){for(var e=i(this),r=arguments.length,n=0;n{"use strict";var n=r(6518),i=r(2248);n({target:"Map",stat:!0,forced:!0},{of:r(7500)(i.Map,i.set,!0)})},230:(t,e,r)=>{"use strict";var n=r(6518),i=r(9306),s=r(6194),o=r(6223),a=TypeError;n({target:"Map",proto:!0,real:!0,forced:!0},{reduce:function(t){var e=s(this),r=arguments.length<2,n=r?void 0:arguments[1];if(i(t),o(e,(function(i,s){r?(r=!1,n=i):n=t(n,i,s,e)})),r)throw new a("Reduce of empty map with no initial value");return n}})},7268:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{some:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0);return!0===o(e,(function(t,n){if(r(t,n,e))return!0}),!0)}})},9733:(t,e,r)=>{"use strict";var n=r(6518),i=r(9306),s=r(6194),o=r(2248),a=TypeError,u=o.get,c=o.has,h=o.set;n({target:"Map",proto:!0,real:!0,forced:!0},{update:function(t,e){var r=s(this),n=arguments.length;i(e);var o=c(r,t);if(!o&&n<3)throw new a("Updating absent value");var l=o?u(r,t):i(n>2?arguments[2]:void 0)(t,r);return h(r,t,e(l,t,r)),r}})},8179:(t,e,r)=>{"use strict";var n=r(6518),i=Math.min,s=Math.max;n({target:"Math",stat:!0,forced:!0},{clamp:function(t,e,r){return i(r,s(e,t))}})},456:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,nonConfigurable:!0,nonWritable:!0},{DEG_PER_RAD:Math.PI/180})},4017:(t,e,r)=>{"use strict";var n=r(6518),i=180/Math.PI;n({target:"Math",stat:!0,forced:!0},{degrees:function(t){return t*i}})},9310:(t,e,r)=>{"use strict";var n=r(6518),i=r(7905),s=r(5617);n({target:"Math",stat:!0,forced:!0},{fscale:function(t,e,r,n,o){return s(i(t,e,r,n,o))}})},3062:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{iaddh:function(t,e,r,n){var i=t>>>0,s=r>>>0;return(e>>>0)+(n>>>0)+((i&s|(i|s)&~(i+s>>>0))>>>31)|0}})},6369:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{imulh:function(t,e){var r=65535,n=+t,i=+e,s=n&r,o=i&r,a=n>>16,u=i>>16,c=(a*o>>>0)+(s*o>>>16);return a*u+(c>>16)+((s*u>>>0)+(c&r)>>16)}})},5637:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{isubh:function(t,e,r,n){var i=t>>>0,s=r>>>0;return(e>>>0)-(n>>>0)-((~i&s|(i^~s)&i-s>>>0)>>>31)|0}})},2848:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,nonConfigurable:!0,nonWritable:!0},{RAD_PER_DEG:180/Math.PI})},4842:(t,e,r)=>{"use strict";var n=r(6518),i=Math.PI/180;n({target:"Math",stat:!0,forced:!0},{radians:function(t){return t*i}})},4746:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{scale:r(7905)})},3454:(t,e,r)=>{"use strict";var n=r(6518),i=r(8551),s=r(360),o=r(3994),a=r(2529),u=r(1181),c="Seeded Random",h=c+" Generator",l=u.set,f=u.getterFor(h),d=TypeError,p=o((function(t){l(this,{type:h,seed:t%2147483647})}),c,(function(){var t=f(this),e=t.seed=(1103515245*t.seed+12345)%2147483647;return a((1073741823&e)/1073741823,!1)}));n({target:"Math",stat:!0,forced:!0},{seededPRNG:function(t){var e=i(t).seed;if(!s(e))throw new d('Math.seededPRNG() argument should have a "seed" field with a finite value.');return new p(e)}})},6660:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{signbit:function(t){var e=+t;return e==e&&0===e?1/e==-1/0:e<0}})},5941:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{umulh:function(t,e){var r=65535,n=+t,i=+e,s=n&r,o=i&r,a=n>>>16,u=i>>>16,c=(a*o>>>0)+(s*o>>>16);return a*u+(c>>>16)+((s*u>>>0)+(c&r)>>>16)}})},2101:(t,e,r)=>{"use strict";var n=r(6518),i=r(9504),s=r(1291),o="Invalid number representation",a=RangeError,u=SyntaxError,c=TypeError,h=parseInt,l=Math.pow,f=/^[\d.a-z]+$/,d=i("".charAt),p=i(f.exec),m=i(1..toString),g=i("".slice),v=i("".split);n({target:"Number",stat:!0,forced:!0},{fromString:function(t,e){var r=1;if("string"!=typeof t)throw new c(o);if(!t.length)throw new u(o);if("-"===d(t,0)&&(r=-1,!(t=g(t,1)).length))throw new u(o);var n=void 0===e?10:s(e);if(n<2||n>36)throw new a("Invalid radix");if(!p(f,t))throw new u(o);var i=v(t,"."),y=h(i[0],n);if(i.length>1&&(y+=h(i[1],n)/l(n,i[1].length)),10===n&&m(y,n)!==t)throw new u(o);return r*y}})},5239:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(3724),o=r(7633),a=r(9306),u=r(8551),c=r(679),h=r(4901),l=r(4117),f=r(34),d=r(5966),p=r(6840),m=r(6279),g=r(2106),v=r(3138),y=r(8227),b=r(1181),x=y("observable"),w="Observable",_="Subscription",I="SubscriptionObserver",A=b.getterFor,O=b.set,S=A(w),P=A(_),k=A(I),C=function(t){this.observer=u(t),this.cleanup=void 0,this.subscriptionObserver=void 0};C.prototype={type:_,clean:function(){var t=this.cleanup;if(t){this.cleanup=void 0;try{t()}catch(t){v(t)}}},close:function(){if(!s){var t=this.facade,e=this.subscriptionObserver;t.closed=!0,e&&(e.closed=!0)}this.observer=void 0},isClosed:function(){return void 0===this.observer}};var T=function(t,e){var r,n=O(this,new C(t));s||(this.closed=!1);try{(r=d(t,"start"))&&i(r,t,this)}catch(t){v(t)}if(!n.isClosed()){var o=n.subscriptionObserver=new M(n);try{var u=e(o),c=u;l(u)||(n.cleanup=h(u.unsubscribe)?function(){c.unsubscribe()}:a(u))}catch(t){return void o.error(t)}n.isClosed()&&n.clean()}};T.prototype=m({},{unsubscribe:function(){var t=P(this);t.isClosed()||(t.close(),t.clean())}}),s&&g(T.prototype,"closed",{configurable:!0,get:function(){return P(this).isClosed()}});var M=function(t){O(this,{type:I,subscriptionState:t}),s||(this.closed=!1)};M.prototype=m({},{next:function(t){var e=k(this).subscriptionState;if(!e.isClosed()){var r=e.observer;try{var n=d(r,"next");n&&i(n,r,t)}catch(t){v(t)}}},error:function(t){var e=k(this).subscriptionState;if(!e.isClosed()){var r=e.observer;e.close();try{var n=d(r,"error");n?i(n,r,t):v(t)}catch(t){v(t)}e.clean()}},complete:function(){var t=k(this).subscriptionState;if(!t.isClosed()){var e=t.observer;t.close();try{var r=d(e,"complete");r&&i(r,e)}catch(t){v(t)}t.clean()}}}),s&&g(M.prototype,"closed",{configurable:!0,get:function(){return k(this).subscriptionState.isClosed()}});var E=function(t){c(this,F),O(this,{type:w,subscriber:a(t)})},F=E.prototype;m(F,{subscribe:function(t){var e=arguments.length;return new T(h(t)?{next:t,error:e>1?arguments[1]:void 0,complete:e>2?arguments[2]:void 0}:f(t)?t:{},S(this).subscriber)}}),p(F,x,(function(){return this})),n({global:!0,constructor:!0,forced:!0},{Observable:E}),o(w)},9035:(t,e,r)=>{"use strict";var n=r(6518),i=r(7751),s=r(9565),o=r(8551),a=r(3517),u=r(81),c=r(5966),h=r(2652),l=r(8227)("observable");n({target:"Observable",stat:!0,forced:!0},{from:function(t){var e=a(this)?this:i("Observable"),r=c(o(t),l);if(r){var n=o(s(r,t));return n.constructor===e?n:new e((function(t){return n.subscribe(t)}))}var f=u(t);return new e((function(t){h(f,(function(e,r){if(t.next(e),t.closed)return r()}),{IS_ITERATOR:!0,INTERRUPTED:!0}),t.complete()}))}})},2917:(t,e,r)=>{"use strict";r(5239),r(9035),r(8662)},8662:(t,e,r)=>{"use strict";var n=r(6518),i=r(7751),s=r(3517),o=i("Array");n({target:"Observable",stat:!0,forced:!0},{of:function(){for(var t=s(this)?this:i("Observable"),e=arguments.length,r=o(e),n=0;n{"use strict";var n=r(6518),i=r(6043),s=r(1103);n({target:"Promise",stat:!0,forced:!0},{try:function(t){var e=i.f(this),r=s(t);return(r.error?e.reject:e.resolve)(r.value),e.promise}})},5186:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.toKey,a=i.set;n({target:"Reflect",stat:!0},{defineMetadata:function(t,e,r){var n=arguments.length<4?void 0:o(arguments[3]);a(t,e,s(r),n)}})},2978:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.toKey,a=i.getMap,u=i.store;n({target:"Reflect",stat:!0},{deleteMetadata:function(t,e){var r=arguments.length<3?void 0:o(arguments[2]),n=a(s(e),r,!1);if(void 0===n||!n.delete(t))return!1;if(n.size)return!0;var i=u.get(e);return i.delete(r),!!i.size||u.delete(e)}})},9852:(t,e,r)=>{"use strict";var n=r(6518),i=r(9504),s=r(8449),o=r(8551),a=r(2787),u=i(r(1946)),c=i([].concat),h=s.keys,l=s.toKey,f=function(t,e){var r=h(t,e),n=a(t);if(null===n)return r;var i=f(n,e);return i.length?r.length?u(c(r,i)):i:r};n({target:"Reflect",stat:!0},{getMetadataKeys:function(t){var e=arguments.length<2?void 0:l(arguments[1]);return f(o(t),e)}})},2527:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=r(2787),a=i.has,u=i.get,c=i.toKey,h=function(t,e,r){if(a(t,e,r))return u(t,e,r);var n=o(e);return null!==n?h(t,n,r):void 0};n({target:"Reflect",stat:!0},{getMetadata:function(t,e){var r=arguments.length<3?void 0:c(arguments[2]);return h(t,s(e),r)}})},617:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.keys,a=i.toKey;n({target:"Reflect",stat:!0},{getOwnMetadataKeys:function(t){var e=arguments.length<2?void 0:a(arguments[1]);return o(s(t),e)}})},2376:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.get,a=i.toKey;n({target:"Reflect",stat:!0},{getOwnMetadata:function(t,e){var r=arguments.length<3?void 0:a(arguments[2]);return o(t,s(e),r)}})},3067:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=r(2787),a=i.has,u=i.toKey,c=function(t,e,r){if(a(t,e,r))return!0;var n=o(e);return null!==n&&c(t,n,r)};n({target:"Reflect",stat:!0},{hasMetadata:function(t,e){var r=arguments.length<3?void 0:u(arguments[2]);return c(t,s(e),r)}})},6820:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.has,a=i.toKey;n({target:"Reflect",stat:!0},{hasOwnMetadata:function(t,e){var r=arguments.length<3?void 0:a(arguments[2]);return o(t,s(e),r)}})},8288:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.toKey,a=i.set;n({target:"Reflect",stat:!0},{metadata:function(t,e){return function(r,n){a(t,e,s(r),o(n))}}})},5509:(t,e,r)=>{"use strict";var n=r(6518),i=r(7080),s=r(4402).add;n({target:"Set",proto:!0,real:!0,forced:!0},{addAll:function(){for(var t=i(this),e=0,r=arguments.length;e{"use strict";var n=r(6518),i=r(7080),s=r(4402).remove;n({target:"Set",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=i(this),r=!0,n=0,o=arguments.length;n{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(3440);n({target:"Set",proto:!0,real:!0,forced:!0},{difference:function(t){return i(o,this,s(t))}})},1927:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(7080),o=r(8469);n({target:"Set",proto:!0,real:!0,forced:!0},{every:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0);return!1!==o(e,(function(t){if(!r(t,t,e))return!1}),!0)}})},1632:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(7080),o=r(4402),a=r(8469),u=o.Set,c=o.add;n({target:"Set",proto:!0,real:!0,forced:!0},{filter:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=new u;return a(e,(function(t){r(t,t,e)&&c(n,t)})),n}})},4377:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(7080),o=r(8469);n({target:"Set",proto:!0,real:!0,forced:!0},{find:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=o(e,(function(t){if(r(t,t,e))return{value:t}}),!0);return n&&n.value}})},9522:(t,e,r)=>{"use strict";var n=r(6518),i=r(4402);n({target:"Set",stat:!0,forced:!0},{from:r(933)(i.Set,i.add,!1)})},6771:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(8750);n({target:"Set",proto:!0,real:!0,forced:!0},{intersection:function(t){return i(o,this,s(t))}})},2516:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(4449);n({target:"Set",proto:!0,real:!0,forced:!0},{isDisjointFrom:function(t){return i(o,this,s(t))}})},8931:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(3838);n({target:"Set",proto:!0,real:!0,forced:!0},{isSubsetOf:function(t){return i(o,this,s(t))}})},2514:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(8527);n({target:"Set",proto:!0,real:!0,forced:!0},{isSupersetOf:function(t){return i(o,this,s(t))}})},5694:(t,e,r)=>{"use strict";var n=r(6518),i=r(9504),s=r(7080),o=r(8469),a=r(655),u=i([].join),c=i([].push);n({target:"Set",proto:!0,real:!0,forced:!0},{join:function(t){var e=s(this),r=void 0===t?",":a(t),n=[];return o(e,(function(t){c(n,t)})),u(n,r)}})},2774:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(7080),o=r(4402),a=r(8469),u=o.Set,c=o.add;n({target:"Set",proto:!0,real:!0,forced:!0},{map:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=new u;return a(e,(function(t){c(n,r(t,t,e))})),n}})},3283:(t,e,r)=>{"use strict";var n=r(6518),i=r(4402);n({target:"Set",stat:!0,forced:!0},{of:r(7500)(i.Set,i.add,!1)})},9536:(t,e,r)=>{"use strict";var n=r(6518),i=r(9306),s=r(7080),o=r(8469),a=TypeError;n({target:"Set",proto:!0,real:!0,forced:!0},{reduce:function(t){var e=s(this),r=arguments.length<2,n=r?void 0:arguments[1];if(i(t),o(e,(function(i){r?(r=!1,n=i):n=t(n,i,i,e)})),r)throw new a("Reduce of empty set with no initial value");return n}})},1926:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(7080),o=r(8469);n({target:"Set",proto:!0,real:!0,forced:!0},{some:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0);return!0===o(e,(function(t){if(r(t,t,e))return!0}),!0)}})},4483:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(3650);n({target:"Set",proto:!0,real:!0,forced:!0},{symmetricDifference:function(t){return i(o,this,s(t))}})},6215:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(4204);n({target:"Set",proto:!0,real:!0,forced:!0},{union:function(t){return i(o,this,s(t))}})},8898:(t,e,r)=>{"use strict";var n=r(6518),i=r(8183).charAt,s=r(7750),o=r(1291),a=r(655);n({target:"String",proto:!0,forced:!0},{at:function(t){var e=a(s(this)),r=e.length,n=o(t),u=n>=0?n:r+n;return u<0||u>=r?void 0:i(e,u)}})},4176:(t,e,r)=>{"use strict";var n=r(6518),i=r(3994),s=r(2529),o=r(7750),a=r(655),u=r(1181),c=r(8183),h=c.codeAt,l=c.charAt,f="String Iterator",d=u.set,p=u.getterFor(f),m=i((function(t){d(this,{type:f,string:t,index:0})}),"String",(function(){var t,e=p(this),r=e.string,n=e.index;return n>=r.length?s(void 0,!0):(t=l(r,n),e.index+=t.length,s({codePoint:h(t,0),position:n},!1))}));n({target:"String",proto:!0,forced:!0},{codePoints:function(){return new m(a(o(this)))}})},3275:(t,e,r)=>{"use strict";var n=r(4475),i=r(511),s=r(4913).f,o=r(7347).f,a=n.Symbol;if(i("dispose"),a){var u=o(a,"dispose");u.enumerable&&u.configurable&&u.writable&&s(a,"dispose",{value:u.value,enumerable:!1,configurable:!1,writable:!1})}},2793:(t,e,r)=>{"use strict";r(511)("observable")},7208:(t,e,r)=>{"use strict";r(511)("patternMatch")},7348:(t,e,r)=>{"use strict";var n=r(6518),i=r(6557),s=r(4995).remove;n({target:"WeakMap",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=i(this),r=!0,n=0,o=arguments.length;n{"use strict";var n=r(6518),i=r(4995);n({target:"WeakMap",stat:!0,forced:!0},{from:r(933)(i.WeakMap,i.set,!0)})},9732:(t,e,r)=>{"use strict";var n=r(6518),i=r(4995);n({target:"WeakMap",stat:!0,forced:!0},{of:r(7500)(i.WeakMap,i.set,!0)})},3742:(t,e,r)=>{"use strict";var n=r(6518),i=r(3755),s=r(8205).add;n({target:"WeakSet",proto:!0,real:!0,forced:!0},{addAll:function(){for(var t=i(this),e=0,r=arguments.length;e{"use strict";var n=r(6518),i=r(3755),s=r(8205).remove;n({target:"WeakSet",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=i(this),r=!0,n=0,o=arguments.length;n{"use strict";var n=r(6518),i=r(8205);n({target:"WeakSet",stat:!0,forced:!0},{from:r(933)(i.WeakSet,i.add,!1)})},6270:(t,e,r)=>{"use strict";var n=r(6518),i=r(8205);n({target:"WeakSet",stat:!0,forced:!0},{of:r(7500)(i.WeakSet,i.add,!1)})},6368:(t,e,r)=>{"use strict";var n=r(6518),i=r(4475),s=r(9225).clear;n({global:!0,bind:!0,enumerable:!0,forced:i.clearImmediate!==s},{clearImmediate:s})},9848:(t,e,r)=>{"use strict";r(6368),r(9309)},9309:(t,e,r)=>{"use strict";var n=r(6518),i=r(4475),s=r(9225).set,o=r(9472),a=i.setImmediate?o(s,!1):s;n({global:!0,bind:!0,enumerable:!0,forced:i.setImmediate!==a},{setImmediate:a})}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var s=e[n]={exports:{}};return t[n].call(s.exports,s,s.exports,r),s.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";r.r(n),r.d(n,{OPFSCache:()=>s.x});var t=r(1136),e=r(577);let i=new class{constructor(){this._workers={}}dispatch(r){if(Object.prototype.hasOwnProperty.call(r,"operation")){r.endpoint&&e.sR.setEndpointAndApi(r.endpoint,r.api);var n=this._workers[r.operation];if(n){if(r.basePath="",r.url){var i=r.url.lastIndexOf("/");-1!=i&&(r.basePath=r.url.substr(0,i+1))}r.raiseError=function(){r.worker.raiseError.apply(r.worker,arguments)},r.onFailureCallback=t.PG.defaultFailureCallback.bind(r),n.doOperation(r)}}}register(t,e){this._workers[t]=e}unregister(t){delete this._workers[t]}};r(3870).k(i),r(574).k(i),r(8262).k(i),r(5499).k(i),r(3484).k(i),r(2637).k(i),r(8401).k(i),r(6324).k(i),r(1711).k(i),r(7676).k(i),i.register("REGISTER_FILE_PORT",{doOperation:function(e){if(e&&e.protocolPortMap)for(var r in e.protocolPortMap)t.PG.registerProtocolPort(r,e.protocolPortMap[r])}});var s=r(8914);self.addEventListener("message",(function(t){var e=t.data;e.worker=self,i.dispatch(e)}),!1),self.raiseError=function(t,e,r){self.postMessage({error:{code:t,msg:e,args:r}})},self.debug=function(t){self.postMessage({debug:1,message:t})}})(),LMV=n})(); +//# sourceMappingURL=lmvworker.min.js.map \ No newline at end of file diff --git a/public/autodesk/res/environments/SharpHighlights_irr.logluv.dds b/public/autodesk/res/environments/SharpHighlights_irr.logluv.dds new file mode 100644 index 0000000000000000000000000000000000000000..aedf9dc2d264925d5b1a160c0a62563683e0c32a GIT binary patch literal 98432 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/_s}ihp#9WB&3t_Fjw{tTKPGMZX z<7e2je%H@}T(}U$Pyx{k?bz;t0T_u%n1#hyjXU6+*oFOg9+3z8!F!nFW8C{RI5%>` zTogcIlz`)Q{N}`1tf9FvHn}bP*&edK<=}b6Q3O%vh}nCc4xcj{wf6JdHOsMmfVX%) zgX7DHY_Jy!!d`G)s0Y`DPPhVoMvTQ&I473E&&rLsACU+9;V|CD$M_1~+n&e(b74(# z!oD;g*2}fi+L;$)a^3`AyWjUc&Utk{jMtoct*CRv{44kLbIR|q*7_sZqetMpeS!Et z$M^Vy*QX&T&WGzldDK8dv_V(&!BC8cpOrVjwP7vHgZ;1*epa|X9K;)V51+#Pn+x;) zCu8=r!+ba|9lvwb^~t_9t|a#vXLfk3=XkF19)mIb02J)Z)N}wVxMH93`cl5(>Ou)5>JlGG;i_O@MJ@8)7;}Fcf<8fTp#Bn-a z?`^$|!G3kl*ej4ab?|F>JdXDvd0nRsT>~;5IH+I1M-;3ih^VjjL!U|%%7u&HHPvant;O{xX z_A!plinDP6ilQ8~Ub`x7t@bMp+0 zEBM;|*7b2%TVu7ScVRos@qO?f8?hd1Va&^6UFKmHv8}~MY{5g=2j|2g`1$ZLzQIwB zKLuwXH!egn4|RFn46YAd(HjFX0uwM5Ghr?k!@jr~>tH@M!TxaE*2}zXgYj6yB=`Bg zao!L6*>k;yeP+Doc{RMxQY^$=T#sup854+W5msUyHo-MvH}>NI4&xof+VCsqrRJds z`)2}xV6JDudzt@hFdm~Z41=D$YdVQ=33{YFiN8m zYN7#}!=C7Z%V91C!M+%ai7+45WG3doahn%wW^Rlp$$j>)?|YoR?0Lp|9j3!;Cgb&f zLvR%wLoakEjxm^o>o5vjF z#MB?dFbdbQuE-v_!ht5FRpnSvf~_Fh{7m^3aAEi(Gbnx9BB{p z(H+*rob-d^9td+|-G-(yuGn_Jz2tEo?|FS-tj@b`@Y)^F7OmiYouBnln=yCA6}Sq+ zF&et#FRGZkms#Xo)ts z4A#i8TQB1%)j?7jDn2M9%zJ?=m6J*D`6f+!aPhvY95>y zt`A$`I_c+ypPPPvcpa`0pTM5*yVS3UT%5_hbHX{24+UU8ilQXUNjW%X>tt^17wabH zQEa>4_l?mx<~g2Q8eXdy?7KqnJ{Q1#^xnA`Qw3B<9W+KOL>~IE?Po-49-J4kKDbW$ zdEw{gPWW$%r|<#}!=88_t`m_9`@*#%BeKAJ`KHu{g zW4s9VmvMR>`z;UbJ?~*3X2og9#5jteG%CV8)I}4tMo08OY93;Jn9qC5uo~;(_Xod6 zxmNm_5k2t|+pZID!CcrEU%}7OpI~qN$#_mdW|$M#4#%1u_KNF>F_9+LCI^}%&=3TEO4`2FD~+=4rB4<5u$ z?8OssewYjU;t1Zwhp;!kgr6hd!*Mx2$N2~Bl?*UH#*rT1GrnUm#@`Wf{>-*>&^75B znETIR9kL-e@*(n2hHd+y1|kow*p7M8o9+0#7|Zq~_&sV4Vy(QHZF}NQY{phZE*@w5 z89a}dVQ(CPpCk6iM{sP8(Y$;O$8EnDgUnO#weQK}Jl+^xhyA|hwY=sBcn{vkdFeWJ z3bNoVoG1^~dCxpFhIwd@Zny#iFchOP5z}xz=3xm|!q3kQ*aUO&ARfZQ*av&#X&k_d zFemni<1;UB!7v5IawY`^L|B` zhdOA4mbeUEa5?&7Fh;_;F$vdVHWpwh%*7h4$41@TG;mJs`V-{U;qd^+dMt=BTou1Q{hFCP9sN)}Qt literal 0 HcmV?d00001 diff --git a/public/autodesk/res/environments/SharpHighlights_mipdrop.logluv.dds b/public/autodesk/res/environments/SharpHighlights_mipdrop.logluv.dds new file mode 100644 index 0000000000000000000000000000000000000000..cb100cffd63f6598ed4d47c4853d2c5397c0d9d6 GIT binary patch literal 524408 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 CtIF;G literal 0 HcmV?d00001 diff --git a/public/autodesk/res/environments/boardwalk_mipdrop.logluv.dds b/public/autodesk/res/environments/boardwalk_mipdrop.logluv.dds new file mode 100644 index 0000000000000000000000000000000000000000..63a0d79fa91653d3717cb218ef342c9e8686f3ba GIT binary patch literal 524408 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 Ms8=ltjxPDv*gW-(F+3$kd(@y>Ct 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 JG9k6a{{ZJ9^UeSO literal 0 HcmV?d00001 diff --git a/public/autodesk/res/locales/en/VCcrossRGBA8small.dds b/public/autodesk/res/locales/en/VCcrossRGBA8small.dds new file mode 100644 index 0000000000000000000000000000000000000000..da6915ec0e22bed547b0a2c19651da345f967cce GIT binary patch literal 98432 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 zp=}Error: {0}","ATF-1023":"The referenced file {0} is missing.","ATF-1024":"The version of the file: {0} is not supported.","ATF-1025":"The file: {0} is corrupt or invalid.","ATF-1026":"The file: {0} is empty.","ATF-1028":"Fail to load component: {0}.","ATF-1031":"Unauthorized file type.","ATF-1032":"Assembly feature is lost.","ATF-1033":"Entity in the file: {0} is not supported.","ATF-1034":"The file name: {0} is invalid.","AssImp-OpenFailure":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","AssImp-InternalError":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","AssImp-CannotCreateOutput":"Cannot write output file.","AssImp-CannotLoadOBJ":"Cannot load OBJ file.","AssImp-MissingTextures":"Missing texture image file:

","AutoCAD-MissingReferences":"Missing referencesSome references were not uploaded, so the drawing may not be fully displayed.Please upload the composite design with all the missing referenced files:
    {0}
","AutoCAD-MissingReference":"Missing referenceOne reference was not uploaded, so the drawing may not be fully displayed.Please upload the composite design with the missing referenced file: {0}","AutoCAD-NoDWFxFilesGenerated":"The drawing may not contain visible objects. No views have been generated.","AutoCAD-PasswordProtectedFile":"Sorry!This item can't be viewed because it's password-protected.Please remove the password, and upload it again to view.","AutoCAD-InvalidFile":"Sorry!The drawing file is invalid and cannot be viewed.Please try to recover the file in AutoCAD, and upload it again to view.","AutoCAD-ProxyGraphicsFalse":"The drawing contains custom objects that are not displayed in the viewer.","AutoCAD-ProxyGraphicsTrue":"The drawing contains custom objects. Some properties of custom objects may not be displayed or searched.","AutoCAD-ClippedView":"The 2D model view is clipped to the last saved view and may not display the entire drawing.Resave the drawing in AutoCAD with the desired view and upload again if the drawing is clipped.","AutoCAD-MissingShxFonts":"Missing fontsSome missing fonts were substituted for the drawing file: {0}","AutoCAD-MissingTtfFonts":"Missing fontsSome missing fonts were substituted for the drawing file: {0}","AutoCAD-MissingPlotStyleFiles":"Missing plot style files: {0}","DWF2D-Corrupt_File_Error":"Unable to open corrupt DWF/DWFx file.","DWF2D-Building_XML_Object_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-File_Not_In_DWF":"Unable to open file, expected resource is not present in DWF/DWFx file contents.","DWF2D-File_Open_Error":"Unable to open DWF/DWFx file.","DWF2D-File_Read_Error":"Unable to read DWF/DWFx file.","DWF2D-File_Write_Error":"Unable to write DWF/DWFx file.","DWF2D-Internal_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Invalid_Argument_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Invalid_XML_Content_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Invalid_DWF_Version_Error":"Invalid DWF/DWFx file version.","DWF2D-Not_A_DWF_Error":"Unable to open, not a DWF/DWFx file.","DWF2D-Open_Section_Descriptor_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Out_Of_Memory_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Stream_Write_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Temp_File_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Toolkit_Usage_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-ZipLib_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Bad_Password_Error":"Unable to open password protected file.","DWF2D-Resource_Handler_Not_Specified_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Not_Implemented":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Stream_In_Progress":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-User_Requested_Abort":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Unsupported_File_Type_Error":"Unable to open, not a valid DWF/DWFx file.","DWF2D-Temp_Path_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Incompatable_XML_Version_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Incompatible_Section_Type":"Unknown section resource processing DWF/DWFx file.","DWF2D-Drm_Encryption":"Unable to open DRM / rights-protected file.","DWF2D-Load_Section_Error":"Unable to load section resource in DWF/DWFx file.","DWF2D-Secured_Section_Type":"Unable to open DRM / rights-protected file.","DWF2D-Unknown_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF3D-BadPassword":"Could not open password-protected DWF file.","DWF3D-CorruptFile":"Could not open DWF file.The data appears corrupted.","DWF3D-InvalidVersion":"Could not open DWF file.Unsupported version.","DWF3D-DRMFailure":"Could not open DWF file.File contains DRM protected content.","Navisworks-2DSheetUnsupported":"Navisworks 2D sheet is not supported.","Navisworks-MissingXref":"Missing external reference file:
    {0}
","Navisworks-EmptyFile":"There is no geometry that can be displayed.","Navisworks-PointUnsupported":"Navisworks point and snappoint are not supported.","Navisworks-Failed":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","Revit-UnsupportedFileType":"The file is not a Revit file or is not a supported version.","Revit-UnsupportedFileType_rfa":"The file is not a Revit file.","Revit-UnsupportedFileType_rte":"The file is not a Revit file.","Revit-UnsupportedFileType_rft":"The file is not a Revit file.","Revit-MissingLink":"Missing link files:
    {0}
","Revit-UpgradeWarning":"Removed some elements to resolve issues encountered during upgrade. Please note that Revit file may not view as expected.For best results, open the file in Revit, resolve warnings, re-save it and try again.","Revit-UpgradeError":"Failed to upgrade the project.Please upgrade the project using the current version of Revit and try again.","Revit-FileOpenError":"Failed to open the file.Please open the file in the current version of Revit, resolve warnings and errors, re-save it, and try again.","Revit-Timeout":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","Revit-MassVisibilitySettingFailure":"Failed to export the mass in 3D view.","Revit-View3DExportError":"Failed to export the 3D view - {0}.","Revit-View2DExportError":"Failed to export the 2D view - {0}.","Revit-ThumbnailGenerationError":"Failed to generate the preview image for the view - {0}.","Revit-DocumentCorruption":"The file is corrupt.Please open the file in the current version of Revit to see more details about the corruption.","Revit-InternalError":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","Revit-UnsupportedVersionOlder":"The file was saved in an old version of Revit which we don't support.Please upgrade this project to Revit {0} or later.","Revit-UnsupportedVersionLater":"The file was saved by a later version of Revit which we don't support.","Revit-InvalidLink":"Unable to load link files:
    {0}
","Recent Queries":"Recent Queries","Loading":"Loading...","Loading Search":"Loading Search..","Load More":"Load More","Results Count":"{0} results for \"{1}\" in {2}","No Results for":"No results for \"__0__\" in __1__","Open Another Window":"Open in another window","Open This Window":"Open in this window","Geometries Loading":"Processing model properties. Please retry your search for more complete results.","Recent Queries Empty":"There are no previous queries to show.","Selected Node Result Not Visible":"The selected node is not visible.","No Visible Node Results For Geometry":"No results or no visible nodes in the results for the query in this geometry.","Saved Queries":"Saved Queries","{0} saved of {1} allocated":"{0} saved of {1} allocated","Saved queries settings":"Saved queries settings","There are no queries saved for this document":"There are no queries saved for this document.","Saved Queries Settings":"Saved Queries Settings","Space":"Space","Saving":"Saving...","Deleting":"Deleting...","No queries saved":"There are no queries saved.","An error occur while saving query, please try again later":"An error occur while saving query, please try again later.","An error occur while deleting query, please try again later":"An error occur while deleting query, please try again later","Error saving query cause query list was outdated. Review list and retry operation.":"Error saving query cause query list was outdated. Review list and retry operation.","Error deleting query cause query list was outdated. Review list and retry operation.":"Error deleting query cause query list was outdated. Review list and retry operation.","Error getting queries, please close and retry":"Error getting queries, please close and retry","Delete":"Delete","Cancel":"Cancel","Are you sure you want to delete the query from your list?":"Are you sure you want to delete the query {0} from your list?","The query is already saved.":"The query is already saved.","Maximum number of queries saved exceeded, please delete some queries or contact to your administrator":"Maximum number of queries saved exceeded, please delete some queries or contact to your administrator.","TranslationWorker-TextureResizingFailed":"The drawing’s textures were not correctly processed.","TranslationWorker-ThumbnailGenerationFailed":"The drawing’s thumbnails were not properly created.","TranslationWorker-InternalFailure":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","TranslationWorker-InsufficientDataFromExtractor":"Not enough drawing information was produced to make this file viewable. Contact support for further assistance.","TranslationWorker-RecoverableInternalFailure":"An error occurred while processing this file. It may succeed if processing is attempted again later.","New First Person":"New First Person","Navigate in First Person":"Navigate in First Person","Walk":"Walk","Go Up and Down":"Go Up and Down","Release key to land on the nearest floor":"Release key to land on the nearest floor","Move":"Move","OR":"OR","Adjust Speed":"Adjust Speed","Run":"Run","Direction Key":"Direction Key","Teleport":"Teleport","Double click on destination":"Double click on destination","Look Around":"Look Around","Drag with left key on view":"Drag with left key on view","Dont remind me again":"Don't remind me again","Ok Got It":"Ok, Got It.","Enable Gravity":"Enable Gravity","Toggles gravity while in first person mode":"Toggles gravity while in first person mode","Location Icons":"Location Icons","Show location icons":"Show location icons","Toggles availability of the location icons when looking at the project model":"Toggles availability of the location icons when looking at the project model.","Components":"Components","Sheets":"Sheets","%(attributeChanged) by":"%(attributeChanged) by","%(attributeChanged) to":"%(attributeChanged) to","%(moved) %(units) in %(axis)":"%(moved) %(units) in %(axis)","%(rotated) around %(axis)":"%(rotated) around %(axis)","%(scaled) on %(axis)":"%(scaled) on %(axis)","%(versionB) vs. %(versionA)":"%(versionB) vs. %(versionA)","Add the \"%(categoryName)\" category as a filter":"Add the \"%(categoryName)\" category as a filter","Added":"Added","An error occured while trying to find differences between versions.":"An error occured while trying to find differences between versions.","Architecture":"Architecture","Back to top":"Back to top","Change list":"Change list","Changes":"Changes","Changes between %(versionB) & %(versionA)":"Changes between %(versionB) & %(versionA)","Details":"Details","Diff Failed":"Diff Failed","Disciplines affected":"Disciplines affected","Electrical":"Electrical","Exit comparing":"Exit comparing","Flat Result List":"Flat Result List","Hide":"Hide","Hide \"%(name)\" changes":"Hide \"%(name)\" changes","Hide Selected":"Hide selected","Hide property changes":"Hide property changes","Hide shape changes":"Hide shape changes","Hide transformations":"Hide transformations","INFORMATION":"INFORMATION","Isolate":"Isolate","Isolate Selected":"Isolate Selected","Isolated or hidden in view":"Isolated or hidden in view","Learn more":"Learn more","Mechanical":"Mechanical","Miscellaneous":"Miscellaneous","Modification type":"Modification type","Modified":"Modified","Moved by":"Moved by","No search results found":"No search results found","OTG translation failed for model \"%(modelName)\" using version \"%(modelVersion)\"":"OTG translation failed for model \"%(modelName)\" using version \"%(modelVersion)\"","Overlay":"Overlay","Piping":"Piping","Project Model":"Project Model","Remove filter that includes elements and categories having \"%(filterText)\" in their name":"Remove filter that includes elements and categories having \"%(filterText)\" in their name","Remove the \"%(categoryName)\" category as a filter":"Remove the \"%(categoryName)\" category as a filter","Removed":"Removed","Result as Tree":"Result as Tree","Rotated by":"Rotated by","Scaled by":"Scaled by","Search + Filter":"Search + Filter","Show \"%(name)\" changes":"Show \"%(name)\" changes","Show All":"Show All","Show Differences":"Show Differences","Show in model":"Show in model","Show property changes":"Show property changes","Show shape changes":"Show shape changes","Show the results in a flat list":"Show the results in a flat list","Show the results in a tree view":"Show the results in a tree view","Show transformations":"Show transformations","Side by Side":"Side by Side","Structure":"Structure","The file type is not fully supported.":"The file type is not fully supported.","The file type is not fully unsupported for 2D":"The file type is not fully unsupported for 2D","The shape of this object has been changed":"The shape of this object has been changed","There are too many results to display at once. Use the filters to reduce the amount.":"There are too many results to display at once. Use the filters to reduce the amount.","This element has been added in version %(version)":"This element has been added in version %(version)","This element has been removed in version %(version)":"This element has been removed in version %(version)","Toggle between different disciplines":"Toggle between different disciplines","Toggle between different types of modifications":"Toggle between different types of modifications","of %(maxCount)":"of %(maxCount)","undefined":"undefined","Click a 2D location to view that space in 3D":"Click a 2D location to view that space in 3D","Current view is not supported by Place Me":"Current view is not supported by Place Me","Click on a location to ground yourself, then select a camera direction":"Click on a location to ground yourself, then select a camera direction","View object in 3D":"View object in 3D","Simple Grey":"Simple Grey","Grey Room":"Grey Room","Photo Booth":"Photo Booth","Sharp Highlights":"Sharp Highlights","Contrast":"Contrast","Infinity Pool":"Infinity Pool","Tranquility":"Tranquility","Dark Sky":"Dark Sky","Simple White":"Simple White","Riverbank":"Riverbank","Rim Highlights":"Rim Highlights","Cool Light":"Cool Light","Warm Light":"Warm Light","Soft Light":"Soft Light","Grid Light":"Grid Light","Plaza":"Plaza","Snow Field":"Snow Field","Field":"Field","Crossroads":"Crossroads","Seaport":"Seaport","Glacier":"Glacier","Boardwalk":"Boardwalk","RaaS Test Env":"RaaS Test Env","Flat Shading":"Flat Shading","Harbor":"Harbor","Night":"Night","Parking":"Parking","River Road":"River Road","Custom Model defined":"(Custom: Model defined)","header-sorry":"Sorry","header-warning":"Warning","Error Occurred":"Error Occurred","OK":"OK","Viewer-UnknownFailure":"Sorry We seem to have some technical difficulties and couldn’t complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem.","Viewer-BadData":"SorryThe item you are trying to view was not processed completely. Try loading the item again. Please upload the file again to see if that fixes the issue.","Viewer-NetworkError":"SorryWe seem to have some technical difficulties and couldn’t complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem.","Viewer-AccessDenied":"No access Sorry. You don’t have the required privileges to access this item. Please contact the author.","Viewer-FileNotFound":"SorryWe can’t display the item you are looking for. It may not have been processed yet. It may have been moved, deleted, or you may be using a corrupt file or unsupported file format. Try loading the item again. Please upload the file again to see if that fixes the issue.
See a list of supported formats.","Viewer-ServerError":"SorryWe seem to have some technical difficulties and couldn’t complete your request Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem.","Viewer-UnhandledResponseCode":"Network problem Sorry. We seem to have some technical difficulties and couldn’t complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem.","Viewer-WebGlNotSupported":"SorryWe can't show this item because this browser doesn’t support WebGL.Try Google Chrome, Mozilla Firefox, or another browser that supports WebGL 3D graphics.For more information, see the A360 browser requirements.","Viewer-WebGlDisabled":"SorryWe can't show this item because WebGL is disabled on this device. For more information see the A360 Help.","Viewer-NoViewable":"No viewable contentThere’s nothing to display for this item. It may not have been processed or it may not have content we can display. Please contact the author. Please upload the file again to see if that fixes the issue.","Viewer-ModeIsEmpty":"Model is emptyModel is empty, there is no geometry for the viewer to show. Please contact the author. Please upload the file again to see if that fixes the issue.","Viewer-RTCError":" Sorry We couldn’t connect to the Collaboration server. Please verify your Internet connection, and refresh the browser to see if that fixes the problem.","Sorry":"Sorry","The file extension loaded into the Viewer is not supported":"The file extension loaded into the Viewer is not supported.","Try a different file":"Try a different file.","WebGL context lost":"WebGL context lost","Unable to recover from software mode. Please restart your browser and reload the Viewer.":"Unable to recover from software mode. Please restart your browser and reload the Viewer.","If you continue to encounter this issue when viewing this model, we recommend switching to a different browser.":"If you continue to encounter this issue when viewing this model, we recommend switching to a different browser.","UNKNOWN FAILURE":"Unknown Failure","BAD DATA":"Bad Data","NETWORK ERROR":"Network Error","NETWORK ACCESS DENIED":"Network Access Denied","NETWORK FILE NOT FOUND":"Network File Not Found","NETWORK SERVER ERROR":"Network Server Error","NETWORK UNHANDLED RESPONSE CODE":"Network Unhandled Response Code","BROWSER WEBGL NOT SUPPORTED":"Browser WebGL Not Supported","BAD DATA NO VIEWABLE CONTENT":"Bad Data No Viewable Content","Network failure":"Network failure","Access denied to remote resource":"Access denied to remote resource","Remote resource not found":"Remote resource not found","Server error when accessing resource":"Server error when accessing resource","Unhandled response code from server":"Unhandled response code from server","Malformed data received when requesting file":"Malformed data received when requesting file","Malicious document content detected Abort loading":"Malicious document content detected. Abort loading.","No viewable content":"No viewable content","An exception occurred while loading the document":"An exception occurred while loading the document","Properties failed to load since model does not exist":"Properties failed to load since model does not exist","ObjectTree failed to load since model does not exist":"ObjectTree failed to load since model does not exist","Search failed since model does not exist":"Search failed since model does not exist","Viewer failed to initialize":"Viewer failed to initialize","Unhandled exception while reading pack file":"Unhandled exception while reading pack file","Unhandled exception while reading geometry":"Unhandled exception while reading geometry","Unable to load geometry":"Unable to load geometry","Failed to load properties":"Failed to load properties","Unhandled exception while loading SVF":"Unhandled exception while loading SVF","Failure while loading SVF":"Failure while loading SVF","First Person Tool":"First Person Tool","First person":"First person","Use the WASD and QE keys to move":"Use the WASD and QE keys to move. Shift+Key to move faster or use +/- keys to adjust walk speed. G key toggles view orientation drag mode. F1 to view this help.","View Orientation Drag Mode Toggled":"View Orientation Drag Mode Toggled","Press the primary mouse button and drag to change the view orientation":"Press the primary mouse button and drag to change the view orientation.","Move the cursor to change the view orientation":"Move the cursor to change the view orientation.","Virtual Reality Tool":"Virtual Reality Tool","This is the Virtual Reality tool":"This is the Virtual Reality tool.","VR Toggle Move":"VR Toggle Move","START Auto Move":"START Auto Move","STOP Auto Move":"STOP Auto Move","VR Device Orientation":"VR Device Orientation","VR Mode Enabled Device Orientation":"VR Mode Enabled (Device Orientation)","VR Head Mounted Display":"VR Head Mounted Display","VR Mode Enabled Head Mounted Display":"VR Mode Enabled (Head Mounted Display) - Use SPACE key to toggle move control.","External Link":"External Link","View":"View","Back":"Back","Ctrl + Click to preview the link":"Ctrl + Click to preview the link","Levels":"Levels","Markup":"Markup","Write Something":"Write something...","Add Length":"Add Length","Measure":"Measure","Select Object":"Select Object","Vertex":"Vertex","Edge":"Edge","Face":"Face","Delta":"Delta","Unit type":"Unit type","Decimal feet":"Decimal feet","Feet and fractional inches":"Feet and fractional inches","Feet and decimal inches":"Feet and decimal inches","Decimal inches":"Decimal inches","Fractional inches":"Fractional inches","Meters":"Meters","Centimeters":"Centimeters","Millimeters":"Millimeters","Meters and centimeters":"Meters and centimeters","Points":"Points","Unknown":"Unknown","Precision":"Precision","Enable free measure":"Enable free measure","Isolate measurement":"Isolate measurement","Restart":"Restart","Select two points":"Select two points to calibrate drawing","Calibration":"Calibration","Calibrate":"Calibrate","Define Size":"Define Size","Set Calibration":"Set Calibration","Calibration Message":"Before using the ruler, the scale for this sheet needs to be set and calibrated","Calibrate Now":"Calibrate Now","Add Calibration":"Add Calibration","Calibration Required":"Calibration Required","Distance":"Distance","Angle":"Angle","Area":"Area","Arc":"Arc","Delete measurement":"Delete measurement","Measure settings":"Measure settings","Done":"Done","Show minimap":"Show minimap","Toggles availability of the Minimap":"Toggles availability of the Minimap","Minimap":"Minimap","3D Mini-map":"3D Mini-map","Show 3D mini-map":"Show 3D mini-map","Toggles availability of the 3D mini-map when using first person mode":"Toggles availability of the 3D mini-map when using first person mode.","Min":"Min","Max":"Max","Compared Documents":"Compared Documents","Hide colors":"Hide colors","Show colors":"Show colors","Finish align":"Finish align","Align":"Align","Document":"Document","Uploaded By":"Uploaded By","Issuance date":"Issuance date","At":"At","Close Panel":"Close Panel","ProgressLoading":"Loading...","ProgressRendering":"Rendering...","ProgressOptimizing":"Optimizing...","INITIATING DIRECT LINK":"INITIATING DIRECT LINK...","CONTACTING MOTHERSHIP":"CONTACTING MOTHERSHIP...","DISCONNECTED":"DISCONNECTED!","Remote Control":"Remote Control","Reload main viewer and pair again":"Reload main viewer and pair again.","Go to this link":"Go to this link:","Scan the QR code with your device":"Scan the QR code with your device:","or":"or","Pair with controller device":"Pair with controller device","Rendering Options":"Rendering Options","Background Color":"Background color:","Cel Shaded":"Cel Shaded","AO Enabled":"AO Enabled:","@AO Enabled":{"description":"AO means Ambient Occlusion. Abbreviated to save space"},"AO Radius":"AO Radius:","@AO Radius":{"description":"AO means Ambient Occlusion. Abbreviated to save space"},"AO Intensity":"AO Intensity:","@AO Intensity":{"description":"AO means Ambient Occlusion. Abbreviated to save space"},"Shadow Alpha":"Shadow Alpha:","Shadow Color":"Shadow Color:","Reflection Alpha":"Reflection Alpha:","Reflection Color":"Reflection Color:","Environment":"Environment","Tonemap Method":"Tonemap method:","Exposure Bias":"Exposure bias:","Light Intensity":"Light Intensity:","FOV-degrees":"FOV (degrees):","@FOV-degrees":{"description":"FOV is abbreviation for 'field of view angle'."},"Frame rate":"Frame rate:","None":"None","Canon-RGB":"Canon (RGB)","Canon-Lum":"Canon (Lum)","Rotate page":"Rotate page","Stress reference":"Stress reference","Displays the distribution of stress based on the factor of safety value set in the Objectives and Limits dialog in the Define workspace.":"Displays the distribution of stress based on the factor of safety value set in the Objectives and Limits dialog in the Define workspace.","High":"High","Ideal":"Ideal","Low":"Low","Model View":"Model View","Stress View":"Stress View","Von Mises stress (Pa)":"Von Mises stress (Pa)","Analysis display":"Analysis display","Von Mises stress":"Von Mises stress","Factor of safety":"Factor of safety","For all displayed outcomes":"For all displayed outcomes","Displays the distribution of von Mises stress on the surface of the generated outcome.":"Displays the distribution of von Mises stress on the surface of the generated outcome.","Displays the distribution of the factor of safety on the surface of the generated outcome.":"Displays the distribution of the factor of safety on the surface of the generated outcome.","Min Stress":"Min. __min__","Max Stress":"Max. __max__","Min FOS":"Min: __min__","Max FOS":"Max: __max__","Min Value":"__min__ (Min)","Max Value":"__max__ (Max)","Units Stress":"Von Mises stress (__units__)","Stress Status":"__status__","Stress Text":"__statusText__","Section analysis":"Section analysis","Add X plane":"Add X plane","Add Y plane":"Add Y plane","Add Z plane":"Add Z plane","Add box":"Add box","Settings":"Settings","Configuration":"Configuration","Navigation":"Navigation","Performance":"Performance","Appearance":"Appearance","ViewCube":"ViewCube","Show ViewCube":"Show ViewCube","ViewCube acts on pivot":"ViewCube acts on pivot","Orbit":"Orbit","Fusion style orbit":"Fusion-style orbit","Orbit past world poles":"Orbit past world poles","Zoom":"Zoom","Zoom towards pivot":"Zoom toward pivot","Reverse mouse zoom direction":"Reverse mouse zoom direction","Mouse":"Mouse","Left handed mouse setup":"Left-handed mouse setup","Set pivot with left mouse button":"Set pivot with left mouse button","Open properties on select":"Open properties on select","Prototypes":"Prototypes","New First Person Tool":"New First Person Tool","Performance Optimization":"Performance Optimization","Disable shadow effect":"Disable shadow effect","Progressive display":"Progressive display","Display":"Display","Ghost hidden objects":"Ghost hidden objects","Display Lines":"Display lines","Display Points":"Display points","Display edges":"Display edges","Display Section Hatches":"Display Section Hatches","Vector Viewing":"Vector Viewing","Display Units":"Display Units","File units":"File units","Inches":"Inches","Feet":"Feet","File precision":"File precision","Selection":"Selection","Selection Mode":"Selection Mode","Leaf Object":"Leaf Object","First Object":"First Object","Last Object":"Last Object","Visual Quality Optimization":"Visual Quality Optimization","Anti-aliasing":"Anti-aliasing","Ambient shadows":"Ambient shadows","Ground shadow":"Ground shadow","Ground reflection":"Ground reflection","Existing behavior":"Existing behavior","2D Sheet Color":"2D Sheet Color","Loading Animation":"Loading Animation","Environment Image Visible":"Environment Image Visible","Environments and Lighting Selection":"Environments and Lighting Selection","Restore all default settings":"Restore all default settings","Restore":"Restore","More":"More","Look Direction":"Look Direction","Reverse horizontal look direction":"Reverse horizontal look direction","Reverse vertical look direction":"Reverse vertical look direction","Scroll Speed":"Scroll Speed","Drag Speed":"Drag Speed","Changes sensitivity of mouse movement with the zoom tool":"Changes sensitivity of mouse movement with the zoom tool","Changes sensitivity of the mouse scroll wheel when zooming":"Changes sensitivity of the mouse scroll wheel when zooming","Toggles availability of the ViewCube navigation control":"Toggles availability of the ViewCube navigation control.","When enabled, the ViewCube orbits the view around the active pivot point When disabled, it orbits around the center of the view":"When enabled, the ViewCube orbits the view around the active pivot point. When disabled, it orbits around the center of the view.","Enables Fusion-style orbit overlay and gives the ability to lock orbit axis":"Enables Fusion-style orbit overlay and gives the ability to lock orbit axis.","Allows view rotation to continue past the model’s North Pole":"Allows view rotation to continue past the model’s North Pole.","When disabled, zooming operations are centered at the current cursor location":"When disabled, zooming operations are centered at the current cursor location.","Toggles direction of zooming in and out":"Toggles direction of zooming in and out.","Swaps the buttons on the mouse":"Swaps the buttons on the mouse.","Change left-click behavior to set new pivot point (overrides select object)":"Change left-click behavior to set new pivot point (overrides select object).","Always show properties upon selecting object":"Always show properties upon selecting object.","Enable new walkthrough mode":"Enable new walkthrough mode.","Provides faster response(but degrades quality) while navigating":"Provides faster response(but degrades quality) while navigating","Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker) This improves perceived waiting time":"Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker). This improves perceived waiting time.","Leave hidden objects slightly visible":"Leave hidden objects slightly visible.","Large model experience":"Large model experience","Improves your overall experience viewing large models. The changes will take effect on the next page load.":"Improves your overall experience viewing large models. The changes will take effect on the next page load.","Toggles display of line objects":"Toggles display of line objects.","Toggles display of point objects":"Toggles display of point objects.","Shows outline of model surfaces":"Shows outline of model surfaces.","Shows hatch pattern for section planes this does not apply to section boxes":"Shows hatch pattern for section planes this does not apply to section boxes","Remove jagged edges from lines":"Remove jagged edges from lines.","Improve shading of occluded surfaces":"Improve shading of occluded surfaces.","Add simulated ground surface shadows":"Add simulated ground surface shadows.","Add simulated ground surface reflections":"Add simulated ground surface reflections.","Switch sheet color white to black":"Switch sheet color white to black","Animate lines during loading":"Animate lines during loading","Shows lighting environment as background":"Shows lighting environment as background.","Toggles direction of left and right camera movement":"Toggles direction of left and right camera movement","Toggles direction of up and down camera movement":"Toggles direction of up and down camera movement","Simulation":"Simulation","Simulation Results":"Simulation Results","Simulation Model Structure Loading":"Simulation Model Structure Loading","Static Stress":"Static Stress","Modal Frequencies":"Modal Frequencies","Analysis Type":"Analysis Type","Nodes":"Nodes","Elements":"Elements","Safety Factor":"Safety Factor","Stress":"Stress","Strain":"Strain","Von Mises":"Von Mises","Per Body":"Per Body","Total":"Total","Equivalent":"Equivalent","Displacement":"Displacement","Constraints":"Constraints","Loads":"Loads","Total Modal Displacement":"Total Modal Displacement","Name":"Name","Status":"Status","Attached":"Attached","Type":"Type","Magnitude":"Magnitude","Simulation Setup":"Simulation Setup","Simulation Setup Loading":"Simulation Setup Loading","Free orbit":"Free orbit","Pan":"Pan","Zoom window":"Zoom window","Walk to":"Walk to (double-click to Walk through)","Camera interactions":"Camera interactions","Fit to view":"Fit to view (F)","Focal length":"Focal length (Ctrl+Shift drag)","Focal Length":"Focal length","Roll":"Roll (Alt+Shift drag)","Model structure":"Model structure","Explode model":"Explode model","Layer Manager":"Layer manager","Reset model":"Reset model","Reset drawing":"Reset drawing","Properties":"Properties","Document Browser":"Document Browser","Comments and Markers":"Comments and markers","Rendering options":"Rendering options","Full screen":"Full screen","Exit full screen":"Exit full screen","Layers":"Layers","Enter filter term":"Enter filter term","Show/hide all layers":"Show/hide all layers","Show/hide this layer":"Show/hide this layer","Background and lighting":"Background and lighting","Performance and appearance settings":"Performance and appearance settings","Navigation and selection settings":"Navigation and selection settings","RaaS":"RaaS","@RaaS":{"description":"RaaS stands for Rendering as a Service"},"Gallery":"Gallery","FPS statistics":"FPS statistics","@FPS statistics":{"description":"FPS stands for Frames Per Seconds"},"Model statistics":"Model statistics","Show search bar":"Show search bar","Language":"Language","Error":"Error","Search the currently displayed content":"Search the currently displayed content","Comment and Markers":"Comment and markers","Comment":"Comment","Post":"Post","Hide Markers":"Hide markers","Show Markers:":"Show markers:","Orthographic View Set":"Orthographic View Set","The view is set to Orthographic":"The view is set to Orthographic. Changing the focal length will switch to Perspective.","Do not show this message again":"Do not show this message again","The view is set to Orthographic Beeline":"The view is set to Orthographic. Using this tool will switch to Perspective.","Long Focal Length View Set":"Long Focal Length View Set","The view is set to a long focal length":"This view has a long focal length. Using this tool will set a short focal length.","Go Home":"Go Home","Orthographic":"Orthographic","Perspective":"Perspective","Perspective with Ortho Faces":"Perspective with Ortho Faces","Set current view as Home":"Set current view as Home","Focus and set as Home":"Focus and set as Home","Reset Home":"Reset Home","Set current view as Front":"Set current view as Front","Set current view as Top":"Set current view as Top","Reset orientation":"Reset orientation","TOP":"TOP","BOTTOM":"BOTTOM","FRONT":"FRONT","RIGHT":"RIGHT","LEFT":"LEFT","BACK":"BACK","Show Selected":"Show selected","Show All Objects":"Show all objects","Show All Layers":"Show all layers","Focus":"Focus","Clear Selection":"Clear selection","Show Properties":"Show properties","Section Box":"Section Box","Section":"Section","Pivot":"Pivot","Section Plane":"Section Plane","Model":"Model","Tree":"Tree","Thumbnails":"Thumbnails","Model browser":"Model browser","Browser":"Browser","Filter by name":"Filter by name","Search":"Search","No Results":"No Results","Try another term":"Please try searching another term","Spinner Loading":"Loading","Loading Model for Change Visualization":"Loading Model for Change Visualization","Loading element properties":"Loading element properties","Computing change visualization":"Computing change visualization","Model translation failed for view '%(viewableName)'":"Model translation failed for view '%(viewableName)'","Model Browser is not available":"Model Browser is not available","Object Properties":"Object properties","Object Properties Loading":"Object properties loading...","No properties to display":"No properties to display","Other":"Other","Model Properties":"Model properties","Loading model":"Loading %(name)","Yes":"Yes","No":"No","Properties %(value)":"Properties %(value)","Sum":"Sum","Average":"Average","Count":"Count","Median":"Median","Mode":"Mode","Range":"Range","English":"English","Russian":"Russian","Japanese":"Japanese","Korean":"Korean","Spanish":"Spanish","Chinese Simplified":"Chinese Simplified","Chinese Traditional":"Chinese Traditional","Czech":"Czech","Polish":"Polish","Swedish":"Swedish","Dutch":"Dutch","Danish":"Danish","French":"French","Canadian French":"Canadian French","German":"German","Italian":"Italian","Portuguese Brazil":"Portuguese Brazil","Turkish":"Turkish"} \ No newline at end of file diff --git a/public/autodesk/res/locales/zh-Hant/VCcrossRGBA8small.dds b/public/autodesk/res/locales/zh-Hant/VCcrossRGBA8small.dds new file mode 100644 index 0000000000000000000000000000000000000000..544a6fd1ec8767b276fe2e347bb54c2626009a7c GIT binary patch literal 98432 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 literal 0 HcmV?d00001 diff --git a/public/autodesk/res/locales/zh-Hant/allstrings.json b/public/autodesk/res/locales/zh-Hant/allstrings.json new file mode 100644 index 0000000..32f04e6 --- /dev/null +++ b/public/autodesk/res/locales/zh-Hant/allstrings.json @@ -0,0 +1 @@ +{"@@locale":"zh-Hant","@@context":"Viewer","@@contact":"","ATF-1008":"錯誤: {0}","ATF-1023":"{0} 參考檔案遺失。","ATF-1024":"檔案的版本: {0} 不受支援。","ATF-1025":"檔案: {0} 已損壞或無效。","ATF-1026":"檔案: {0} 是空的。","ATF-1028":"無法載入元件: {0}。","ATF-1031":"未經授權的檔案類型。","ATF-1032":"組合特徵已遺失。","ATF-1033":"檔案中的圖元: {0} 不受支援。","ATF-1034":"檔名: {0} 無效。","AssImp-OpenFailure":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","AssImp-InternalError":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","AssImp-CannotCreateOutput":"無法寫入輸出檔案。","AssImp-CannotLoadOBJ":"無法載入 OBJ 檔案。","AssImp-MissingTextures":"缺少的材質影像檔案:
    {0}
","AutoCAD-MissingReferences":"缺少參考某些參考未上載,因此圖面可能不會完全顯示。請上載包含所有缺少參考檔案的複合設計:
    {0}
","AutoCAD-MissingReference":"缺少參考一個參考未上載,因此圖面可能不會完全顯示。請上載包含缺少參考檔案的複合設計: {0}","AutoCAD-NoDWFxFilesGenerated":"圖面可能不包含可見物件。並未產生任何視圖。","AutoCAD-PasswordProtectedFile":"抱歉!此項目無法檢視,因為它受密碼保護。請移除密碼,然後再次上載以進行檢視。","AutoCAD-InvalidFile":"抱歉!圖檔無效,無法進行檢視。請嘗試在 AutoCAD 中修復檔案,然後再次上載以進行檢視。","AutoCAD-ProxyGraphicsFalse":"圖面包含不會顯示在檢視器中的自訂物件。","AutoCAD-ProxyGraphicsTrue":"圖面包含自訂物件。您可能無法看到或搜尋某些自訂物件的性質。","AutoCAD-ClippedView":"2D 模型視圖會截取至上次儲存的視圖,且可能不會顯示整個圖面。使用所需視圖在 AutoCAD 中重新儲存圖面,且如果已截取視圖時再次進行上載。","AutoCAD-MissingShxFonts":"缺少字體已替代圖檔某些缺少的字體: {0}","AutoCAD-MissingTtfFonts":"缺少字體已替代圖檔某些缺少的字體: {0}","AutoCAD-MissingPlotStyleFiles":"缺少出圖型式檔: {0}","DWF2D-Corrupt_File_Error":"無法開啟損壞的 DWF/DWFx 檔。","DWF2D-Building_XML_Object_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-File_Not_In_DWF":"無法開啟檔案,DWF/DWFx 檔內容中沒有預期的資源。","DWF2D-File_Open_Error":"無法開啟 DWF/DWFx 檔。","DWF2D-File_Read_Error":"無法讀取 DWF/DWFx 檔。","DWF2D-File_Write_Error":"無法寫入 DWF/DWFx 檔。","DWF2D-Internal_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_Argument_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_XML_Content_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_DWF_Version_Error":"無效的 DWF/DWFx 檔版本。","DWF2D-Not_A_DWF_Error":"無法開啟,不是 DWF/DWFx 檔。","DWF2D-Open_Section_Descriptor_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Out_Of_Memory_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Stream_Write_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Temp_File_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Toolkit_Usage_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-ZipLib_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Bad_Password_Error":"無法開啟受密碼保護的檔案。","DWF2D-Resource_Handler_Not_Specified_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Not_Implemented":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Stream_In_Progress":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-User_Requested_Abort":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Unsupported_File_Type_Error":"無法開啟,不是一個有效的 DWF/DWFx 檔。","DWF2D-Temp_Path_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Incompatable_XML_Version_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Incompatible_Section_Type":"處理 DWF/DWFx 檔時發現不明的剖面資源。","DWF2D-Drm_Encryption":"無法開啟 DRM / 受版權保護的檔案。","DWF2D-Load_Section_Error":"無法在 DWF/DWFx 檔中載入剖面資源。","DWF2D-Secured_Section_Type":"無法開啟 DRM / 受版權保護的檔案。","DWF2D-Unknown_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF3D-BadPassword":"無法開啟受密碼保護的 DWF 檔。","DWF3D-CorruptFile":"無法開啟 DWF 檔。資料似乎已損壞。","DWF3D-InvalidVersion":"無法開啟 DWF 檔。不受支援的版本。","DWF3D-DRMFailure":"無法開啟 DWF 檔。檔案包含受 DRM 保護的內容。","Navisworks-2DSheetUnsupported":"Navisworks 2D 圖紙不受支援。","Navisworks-MissingXref":"缺少外部參考檔:
    {0}
","Navisworks-EmptyFile":"沒有可以顯示的幾何圖形。","Navisworks-PointUnsupported":"Navisworks 點和鎖點不受支援。","Navisworks-Failed":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-UnsupportedFileType":"檔案不是 Revit 檔案或為不受支援的版本。","Revit-UnsupportedFileType_rfa":"該檔案不是 Revit 檔案。","Revit-UnsupportedFileType_rte":"該檔案不是 Revit 檔案。","Revit-UnsupportedFileType_rft":"該檔案不是 Revit 檔案。","Revit-MissingLink":"缺少連結檔案:
    {0}
","Revit-UpgradeWarning":"已移除某些元素,以解決升級期間遇到的問題。請注意,Revit 檔案可能不會正常顯示。為取得最佳結果,請在 Revit 中開啟檔案,接著解決警告並重新儲存,然後再試一次。","Revit-UpgradeError":"升級專案失敗。請使用目前的 Revit 版本升級專案,然後再試一次。","Revit-FileOpenError":"開啟檔案失敗。請在目前的 Revit 版本中開啟檔案,接著解決警告和錯誤並重新儲存,然後再試一次。","Revit-Timeout":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-MassVisibilitySettingFailure":"在 3D 視圖中匯出量體失敗。","Revit-View3DExportError":"匯出 3D 視圖失敗 - {0}。","Revit-View2DExportError":"匯出 2D 視圖失敗 - {0}。","Revit-ThumbnailGenerationError":"產生視圖預覽影像失敗 - {0}。","Revit-DocumentCorruption":"檔案已損壞。請在目前的 Revit 版本中開啟檔案,以參閱更多關於損壞的詳細資料。","Revit-InternalError":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-UnsupportedVersionOlder":"此檔案是以我們不支援的舊版 Revit 儲存。請將此專案升級至 Revit {0} 或更高版本。","Revit-UnsupportedVersionLater":"此檔案是以我們不支援的新版 Revit 儲存。","Revit-InvalidLink":"無法載入連結檔案:
    {0}
","Recent Queries":"最近的查詢","Loading":"正在載入...","Loading Search":"正在載入搜尋...","Load More":"載入更多","Results Count":"在 {2} 找到 \"{1}\" 的 {0} 個結果","No Results for":"在 __1__ 沒有找到 \"__0__\" 的結果","Open Another Window":"在另一個視窗中開啟","Open This Window":"在此視窗中開啟","Geometries Loading":"正在處理模型性質。請重試搜尋以獲得更完整的結果。","Recent Queries Empty":"沒有先前的查詢可展示。","Selected Node Result Not Visible":"所選節點不可見。","No Visible Node Results For Geometry":"在此幾何圖形中的查詢沒有結果或結果中沒有可見的節點。","Saved Queries":"儲存的查詢","{0} saved of {1} allocated":"已儲存 {0} 個 (共配置 {1} 個)","Saved queries settings":"儲存的查詢設定","There are no queries saved for this document":"此文件沒有儲存任何查詢。","Saved Queries Settings":"儲存的查詢設定","Space":"空間","Saving":"正在儲存...","Deleting":"正在刪除…","No queries saved":"沒有儲存任何查詢。","An error occur while saving query, please try again later":"儲存查詢時發生錯誤,請稍後再試一次。","An error occur while deleting query, please try again later":"刪除查詢時發生錯誤,請稍後再試一次","Error saving query cause query list was outdated. Review list and retry operation.":"儲存查詢時發生錯誤,導致查詢清單已過期。請檢閱清單並重試作業。","Error deleting query cause query list was outdated. Review list and retry operation.":"刪除查詢時發生錯誤,導致查詢清單已過期。請檢閱清單並重試作業。","Error getting queries, please close and retry":"取得查詢時發生錯誤,請關閉並重試","Delete":"刪除","Cancel":"取消","Are you sure you want to delete the query from your list?":"您確定要從清單刪除查詢 {0}?","The query is already saved.":"查詢已儲存。","Maximum number of queries saved exceeded, please delete some queries or contact to your administrator":"儲存的查詢超出最大數目,請刪除一些查詢或聯絡您的管理員。","TranslationWorker-TextureResizingFailed":"圖面的材質並未正確處理。","TranslationWorker-ThumbnailGenerationFailed":"圖面的縮圖並未正確建立。","TranslationWorker-InternalFailure":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","TranslationWorker-InsufficientDataFromExtractor":"沒有產生足夠的圖面資訊使此檔案可供檢視。請聯絡支援以取得協助。","TranslationWorker-RecoverableInternalFailure":"處理此檔案時發生錯誤。若稍後再嘗試處理,可能就會成功。","New First Person":"新的第一人稱","Navigate in First Person":"以第一人稱導覽","Walk":"漫遊","Go Up and Down":"向上和向下","Release key to land on the nearest floor":"放開按鍵以置於最近的樓板上","Move":"移動","OR":"或","Adjust Speed":"調整速度","Run":"執行","Direction Key":"方向鍵","Teleport":"傳送","Double click on destination":"按兩下目標","Look Around":"環視","Drag with left key on view":"使用左鍵在視圖上拖曳","Dont remind me again":"不要再提醒我","Ok Got It":"好,瞭解了。","Enable Gravity":"啟用重力","Toggles gravity while in first person mode":"在第一人稱模式時切換重力","Location Icons":"位置圖示","Show location icons":"展示位置圖示","Toggles availability of the location icons when looking at the project model":"查看專案模型時切換位置圖示的可用性。","Components":"元件","Sheets":"圖紙","%(attributeChanged) by":"%(attributeChanged) 差異","%(attributeChanged) to":"%(attributeChanged) 結果","%(moved) %(units) in %(axis)":"沿 %(axis) 軸移動了 %(moved) %(units)","%(rotated) around %(axis)":"繞 %(axis) 軸旋轉了 %(rotated)","%(scaled) on %(axis)":"在 %(axis) 軸調整了 %(scaled) 倍","%(versionB) vs. %(versionA)":"%(versionB) 與 %(versionA)","Add the \"%(categoryName)\" category as a filter":"加入「%(categoryName)」品類做為篩選","Added":"已加入","An error occured while trying to find differences between versions.":"嘗試尋找不同版本之間的差異時發生錯誤。","Architecture":"建築","Back to top":"返回頂端","Change list":"變更清單","Changes":"變更","Changes between %(versionB) & %(versionA)":"%(versionB) 與 %(versionA) 之間的變更","Details":"詳細資料","Diff Failed":"比較差異失敗","Disciplines affected":"受影響的領域","Electrical":"電氣","Exit comparing":"結束比較","Flat Result List":"展開結果清單","Hide":"隱藏","Hide \"%(name)\" changes":"隱藏「%(name)」變更","Hide Selected":"隱藏選取的","Hide property changes":"隱藏性質變更","Hide shape changes":"隱藏造型變更","Hide transformations":"隱藏轉換","INFORMATION":"資訊","Isolate":"隔離","Isolate Selected":"隔離選取的項目","Isolated or hidden in view":"在檢視中隔離或隱藏的項目","Learn more":"進一步瞭解","Mechanical":"機械","Miscellaneous":"雜項","Modification type":"修改類型","Modified":"已修改","Moved by":"移動距離","No search results found":"找不到任何搜尋結果","OTG translation failed for model \"%(modelName)\" using version \"%(modelVersion)\"":"OTG 轉換失敗,因為模型「%(modelName)」使用版本「%(modelVersion)」","Overlay":"覆疊","Piping":"配管","Project Model":"專案模型","Remove filter that includes elements and categories having \"%(filterText)\" in their name":"移除其元素和品類的名稱有「%(filterText)」的篩選","Remove the \"%(categoryName)\" category as a filter":"移除做為篩選的「%(categoryName)」品類","Removed":"已移除","Result as Tree":"以樹狀呈現結果","Rotated by":"旋轉角度","Scaled by":"調整比例","Search + Filter":"搜尋與篩選","Show \"%(name)\" changes":"展示「%(name)」變更","Show All":"全部展示","Show Differences":"展示差異","Show in model":"在模型中展示","Show property changes":"展示性質變更","Show shape changes":"展示造型變更","Show the results in a flat list":"以展開的清單展示結果","Show the results in a tree view":"以樹狀檢視展示結果","Show transformations":"展示轉換","Side by Side":"並排","Structure":"結構","The file type is not fully supported.":"不完全支援此檔案類型。","The file type is not fully unsupported for 2D":"不完全支援 2D 的此檔案類型","The shape of this object has been changed":"此物件的造型已變更","There are too many results to display at once. Use the filters to reduce the amount.":"結果太多,無法一次顯示。請使用篩選減少數量。","This element has been added in version %(version)":"此元素已加入版本 %(version) 中","This element has been removed in version %(version)":"此元素已從版本 %(version) 中移除","Toggle between different disciplines":"切換不同領域","Toggle between different types of modifications":"切換不同類型的修改","of %(maxCount)":"/ %(maxCount)","undefined":"未定義","Click a 2D location to view that space in 3D":"按一下 2D 位置,以 3D 檢視該空間","Current view is not supported by Place Me":"Place Me 不支援目前視圖","Click on a location to ground yourself, then select a camera direction":"按一下某個位置固定您自己,然後選取相機方向","View object in 3D":"以 3D 檢視物件","Simple Grey":"簡單的灰色","Grey Room":"灰色房間","Photo Booth":"大頭貼","Sharp Highlights":"銳利亮顯","Contrast":"對比","Infinity Pool":"無邊際泳池","Tranquility":"寧靜","Dark Sky":"黑暗天空","Simple White":"簡單的白色","Riverbank":"河岸","Rim Highlights":"邊緣亮顯","Cool Light":"冷光","Warm Light":"暖光","Soft Light":"柔光","Grid Light":"格線光源","Plaza":"廣場","Snow Field":"雪地","Field":"田野","Crossroads":"交叉路","Seaport":"海港","Glacier":"冰川","Boardwalk":"木板步道","RaaS Test Env":"RAAS 測試環境","Flat Shading":"平板描影","Harbor":"港口","Night":"夜晚","Parking":"停車場","River Road":"河岸道路","Custom Model defined":"(自訂: 定義的模型)","header-sorry":"抱歉","header-warning":"警告","Error Occurred":"發生錯誤","OK":"確定","Viewer-UnknownFailure":"抱歉我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-BadData":"抱歉您嘗試檢視的項目未完成處理。請嘗試再次載入該項目。請再次上載檔案,以查看是否能修正問題。","Viewer-NetworkError":"抱歉我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-AccessDenied":"無存取權限很抱歉。您沒有存取此項目所需的權限。 請聯絡作者。","Viewer-FileNotFound":"抱歉我們無法顯示您正在尋找的項目。它可能尚未處理。它可能已遭到移動、刪除或您可能使用損壞檔案或不受支援的檔案格式。請嘗試再次載入該項目。請再次上載檔案,以查看是否能修正問題。請參閱受支援格式的清單。","Viewer-ServerError":"抱歉我們似乎有某些技術問題,無法完成您的請求請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-UnhandledResponseCode":"網路問題 很抱歉。我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-WebGlNotSupported":"抱歉我們無法展示此項目,因為此瀏覽器不支援 WebGL。請嘗試 Google Chrome、Mozilla Firefox,或其他支援 WebGL 3D 圖形的瀏覽器。若要取得更多資訊,請參閱 A360 瀏覽器需求。","Viewer-WebGlDisabled":"抱歉我們無法展示此項目,因為此裝置上已停用 WebGL。若要取得更多資訊,請參閱 A360 說明。","Viewer-NoViewable":"沒有可檢視內容此項目沒有可顯示的內容。它可能尚未處理,也可能不具有我們可以顯示的內容。請聯絡作者。請再次上載檔案,以查看是否能修正問題。","Viewer-ModeIsEmpty":"模型是空的模型是空的,沒有幾何圖形可供檢視器展示。 請聯絡作者。 請再次上載檔案,以查看是否能修正問題。","Viewer-RTCError":" 抱歉我們無法連接至伺服器的協同合作。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Sorry":"抱歉","The file extension loaded into the Viewer is not supported":"不支援載入檢視器的副檔名。","Try a different file":"請嘗試其他檔案。","WebGL context lost":"WebGL 環境遺失","Unable to recover from software mode. Please restart your browser and reload the Viewer.":"無法從軟體模式恢復。請重新啟動瀏覽器並重新載入檢視器。","If you continue to encounter this issue when viewing this model, we recommend switching to a different browser.":"如果您在檢視此模型時持續遇到此問題,建議切換至其他瀏覽器。","UNKNOWN FAILURE":"未知的失敗","BAD DATA":"不良資料","NETWORK ERROR":"網路錯誤","NETWORK ACCESS DENIED":"網路存取遭拒","NETWORK FILE NOT FOUND":"找不到網路檔案","NETWORK SERVER ERROR":"網路伺服器錯誤","NETWORK UNHANDLED RESPONSE CODE":"網路未處理的回應代碼","BROWSER WEBGL NOT SUPPORTED":"瀏覽器 WebGL 不受支援","BAD DATA NO VIEWABLE CONTENT":"不良資料沒有可檢視內容","Network failure":"網路故障","Access denied to remote resource":"遠端資源存取遭拒","Remote resource not found":"找不到遠端資源","Server error when accessing resource":"存取資源時發生伺服器錯誤","Unhandled response code from server":"伺服器產生的未處理回應代碼","Malformed data received when requesting file":"請求檔案時收到錯誤的資料","Malicious document content detected Abort loading":"偵測到惡意文件內容。中斷載入。","No viewable content":"沒有可檢視內容","An exception occurred while loading the document":"載入文件時發生例外錯誤","Properties failed to load since model does not exist":"性質無法載入,因為模型不存在","ObjectTree failed to load since model does not exist":"ObjectTree 無法載入,因為模型不存在","Search failed since model does not exist":"搜尋失敗,因為模型不存在","Viewer failed to initialize":"檢視器初始化失敗","Unhandled exception while reading pack file":"讀取打包檔案時發生未處理的例外狀況","Unhandled exception while reading geometry":"讀取幾何圖形時發生未處理的例外狀況","Unable to load geometry":"無法載入幾何圖形","Failed to load properties":"載入性質失敗","Unhandled exception while loading SVF":"載入 SVF 時發生未處理的例外狀況","Failure while loading SVF":"載入 SVF 時發生錯誤","First Person Tool":"第一人稱工具","First person":"第一人稱","Use the WASD and QE keys to move":"使用 WASD 和 QE 鍵可移動。Shift+按鍵可更快速移動,或使用 +/- 鍵調整漫遊速度。G 鍵可切換視圖方位拖曳模式。按 F1 可檢視此說明。","View Orientation Drag Mode Toggled":"已切換為視圖方位拖曳模式","Press the primary mouse button and drag to change the view orientation":"按下主要滑鼠按鈕並拖曳,以變更視圖方位。","Move the cursor to change the view orientation":"移動游標以變更視圖方位。","Virtual Reality Tool":"虛擬實境工具","This is the Virtual Reality tool":"此為虛擬實境工具。","VR Toggle Move":"VR 切換移動","START Auto Move":"開始自動移動","STOP Auto Move":"停止自動移動","VR Device Orientation":"VR 裝置方位","VR Mode Enabled Device Orientation":"VR 模式已啟用 (裝置方位)","VR Head Mounted Display":"VR 抬頭顯示器","VR Mode Enabled Head Mounted Display":"VR 模式已啟用 (抬頭顯示器) - 使用空格鍵以切換移動控制。","External Link":"外部連結","View":"檢視","Back":"上一步","Ctrl + Click to preview the link":"按住 Ctrl 的同時按一下以預覽連結","Levels":"樓層","Markup":"標記","Write Something":"寫點東西...","Add Length":"加入長度","Measure":"測量","Select Object":"選取物件","Vertex":"頂點","Edge":"邊","Face":"面","Delta":"差值","Unit type":"單位類型","Decimal feet":"小數英呎","Feet and fractional inches":"英呎和分數英吋","Feet and decimal inches":"英呎和小數英吋","Decimal inches":"小數英吋","Fractional inches":"分數英吋","Meters":"公尺","Centimeters":"公分","Millimeters":"公釐","Meters and centimeters":"公尺和公分","Points":"點","Unknown":"不明","Precision":"精確度","Enable free measure":"啟用自由測量","Isolate measurement":"隔離測量","Restart":"重新啟動","Select two points":"選取兩個點以校正圖面","Calibration":"校正","Calibrate":"校正","Define Size":"定義大小","Set Calibration":"設定校正","Calibration Message":"使用尺規之前,必須先設定和校正此圖紙的比例","Calibrate Now":"立即校正","Add Calibration":"加入校正","Calibration Required":"需要校正","Distance":"距離","Angle":"角度","Area":"面積","Arc":"弧","Delete measurement":"刪除測量","Measure settings":"測量設定","Done":"完成","Show minimap":"展示小地圖","Toggles availability of the Minimap":"切換小地圖的可用性","Minimap":"小地圖","3D Mini-map":"3D 小地圖","Show 3D mini-map":"展示 3D 小地圖","Toggles availability of the 3D mini-map when using first person mode":"使用第一人稱模式時切換 3D 小地圖的可用性","Min":"最小值","Max":"最大值","Compared Documents":"比較的文件","Hide colors":"隱藏顏色","Show colors":"展示顏色","Finish align":"完成對齊","Align":"對齊","Document":"文件","Uploaded By":"上傳者","Issuance date":"發佈日期","At":"於","Close Panel":"關閉面板","ProgressLoading":"正在載入...","ProgressRendering":"正在彩現...","ProgressOptimizing":"正在最佳化...","INITIATING DIRECT LINK":"正在初始化直接連結...","CONTACTING MOTHERSHIP":"正在聯絡主要裝置...","DISCONNECTED":"已中斷連接!","Remote Control":"遠端控制","Reload main viewer and pair again":"重新載入主檢視器並再次配對。","Go to this link":"移往此連結:","Scan the QR code with your device":"使用您的裝置掃瞄 QR 碼:","or":"或","Pair with controller device":"與控制器裝置配對","Rendering Options":"彩現選項","Background Color":"背景顏色:","Cel Shaded":"卡通渲染","AO Enabled":"AO 已啟用:","@AO Enabled":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"AO Radius":"AO 半徑:","@AO Radius":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"AO Intensity":"AO 強度:","@AO Intensity":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"Shadow Alpha":"陰影 α (A):","Shadow Color":"陰影顏色:","Reflection Alpha":"反射 α (A):","Reflection Color":"反射顏色:","Environment":"環境","Tonemap Method":"色調貼圖方法:","Exposure Bias":"曝光偏差:","Light Intensity":"光源強度:","FOV-degrees":"FOV (度):","@FOV-degrees":{"description":"FOV 是「視野角度」的縮寫。"},"Frame rate":"畫面速率:","None":"無","Canon-RGB":"Canon (RGB)","Canon-Lum":"Canon (明度)","Rotate page":"旋轉頁面","Stress reference":"應力參考","Displays the distribution of stress based on the factor of safety value set in the Objectives and Limits dialog in the Define workspace.":"根據在「定義」工作區的「目標和限制」對話方塊中設定的安全係數值,顯示應力的分佈。","High":"高","Ideal":"理想","Low":"低","Model View":"模型視圖","Stress View":"應力視圖","Von Mises stress (Pa)":"Von Mises 應力 (Pa)","Analysis display":"分析顯示","Von Mises stress":"Von Mises 應力","Factor of safety":"安全係數","For all displayed outcomes":"對於所有顯示的結果","Displays the distribution of von Mises stress on the surface of the generated outcome.":"顯示 von Mises 應力在產生的結果表面上的分佈。","Displays the distribution of the factor of safety on the surface of the generated outcome.":"顯示安全係數在產生的結果表面上的分佈。","Min Stress":"最小 __min__","Max Stress":"最大 __max__","Min FOS":"最小: __min__","Max FOS":"最大: __max__","Min Value":"__min__ (最小)","Max Value":"__max__ (最大)","Units Stress":"Von Mises 應力 (__units__)","Stress Status":"__status__","Stress Text":"__statusText__","Section analysis":"剖面分析","Add X plane":"加入 X 平面","Add Y plane":"加入 Y 平面","Add Z plane":"加入 Z 平面","Add box":"加入方塊","Settings":"設定","Configuration":"規劃","Navigation":"導覽","Performance":"效能","Appearance":"外觀","ViewCube":"ViewCube","Show ViewCube":"展示 ViewCube","ViewCube acts on pivot":"ViewCube 作用於樞軸","Orbit":"環轉","Fusion style orbit":"Fusion 型式環轉","Orbit past world poles":"環轉超過世界極點","Zoom":"縮放","Zoom towards pivot":"縮放至樞軸","Reverse mouse zoom direction":"反轉滑鼠縮放方向","Mouse":"滑鼠","Left handed mouse setup":"慣用左手滑鼠設置","Set pivot with left mouse button":"使用滑鼠左鍵設定樞軸","Open properties on select":"開啟選取的性質","Prototypes":"原型","New First Person Tool":"新的第一人稱工具","Performance Optimization":"效能最佳化","Disable shadow effect":"Disable shadow effect","Progressive display":"漸進式顯示","Display":"顯示","Ghost hidden objects":"幽靈隱藏物件","Display Lines":"顯示線","Display Points":"顯示點","Display edges":"顯示邊","Display Section Hatches":"顯示剖面填充線","Vector Viewing":"向量檢視","Display Units":"顯示單位","File units":"檔案單位","Inches":"英吋","Feet":"英呎","File precision":"檔案精確度","Selection":"選取","Selection Mode":"選取模式","Leaf Object":"門扇物件","First Object":"第一個物件","Last Object":"最後一個物件","Visual Quality Optimization":"視覺品質最佳化","Anti-aliasing":"消除鋸齒","Ambient shadows":"環境陰影","Ground shadow":"地面陰影","Ground reflection":"地面反射","Existing behavior":"既有行為","2D Sheet Color":"2D 圖紙顏色","Loading Animation":"載入動畫","Environment Image Visible":"環境影像可見","Environments and Lighting Selection":"環境和照明選取","Restore all default settings":"還原所有預設設定","Restore":"還原","More":"更多","Look Direction":"面對方向","Reverse horizontal look direction":"反轉水平面對方向","Reverse vertical look direction":"反轉垂直面對方向","Scroll Speed":"捲動速度","Drag Speed":"拖曳速度","Changes sensitivity of mouse movement with the zoom tool":"使用縮放工具變更滑鼠移動的敏感度","Changes sensitivity of the mouse scroll wheel when zooming":"變更滑鼠滾輪在縮放時的敏感度","Toggles availability of the ViewCube navigation control":"切換 ViewCube 導覽控制項的可用性。","When enabled, the ViewCube orbits the view around the active pivot point When disabled, it orbits around the center of the view":"啟用時,ViewCube 會圍繞作用中的樞軸點環轉視圖。停用時,則會圍繞視圖的中心環轉。","Enables Fusion-style orbit overlay and gives the ability to lock orbit axis":"啟用 Fusion 型式的環轉覆疊,並可鎖住環轉軸。","Allows view rotation to continue past the model’s North Pole":"允許視圖旋轉,以繼續超過模型的北極。","When disabled, zooming operations are centered at the current cursor location":"停用時,縮放作業會在目前的游標位置置中。","Toggles direction of zooming in and out":"切換拉近和拉遠的方向。","Swaps the buttons on the mouse":"交換滑鼠上的按鈕。","Change left-click behavior to set new pivot point (overrides select object)":"變更按一下左鍵行為以設定新的樞軸點 (取代選取物件)。","Always show properties upon selecting object":"選取物件時永遠展示性質。","Enable new walkthrough mode":"啟用新的穿越模式。","Provides faster response(but degrades quality) while navigating":"導覽時提供更快的反應 (但會降低品質)","Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker) This improves perceived waiting time":"展示視圖的增量更新,並允許與模型的互動更有反應 (某些元素可能會閃爍)。這樣可改善感受到的等待時間。","Leave hidden objects slightly visible":"讓隱藏的物件稍微可見。","Large model experience":"大型模型體驗","Improves your overall experience viewing large models. The changes will take effect on the next page load.":"改善檢視大型模型的整體體驗。變更將在下一頁載入時生效。","Toggles display of line objects":"切換線物件的顯示。","Toggles display of point objects":"切換點物件的顯示。","Shows outline of model surfaces":"展示模型表面的外框。","Shows hatch pattern for section planes this does not apply to section boxes":"展示剖面平面的填充線樣式,不適用於剖面框","Remove jagged edges from lines":"移除線的鋸齒狀邊緣。","Improve shading of occluded surfaces":"改善遮蔽表面的描影。","Add simulated ground surface shadows":"加入模擬的地表陰影。","Add simulated ground surface reflections":"加入模擬的地表反射。","Switch sheet color white to black":"切換白色圖紙顏色為黑色","Animate lines during loading":"載入時以動畫顯示線條","Shows lighting environment as background":"將照明環境展示為背景。","Toggles direction of left and right camera movement":"切換相機左右移動的方向","Toggles direction of up and down camera movement":"切換相機上下移動的方向","Simulation":"模擬","Simulation Results":"模擬結果","Simulation Model Structure Loading":"模擬模型結構負載","Static Stress":"靜態應力","Modal Frequencies":"模態頻率","Analysis Type":"分析類型","Nodes":"節點","Elements":"元素","Safety Factor":"安全係數","Stress":"應力","Strain":"應變","Von Mises":"Von Mises","Per Body":"每個本體","Total":"總計","Equivalent":"對等","Displacement":"位移","Constraints":"約束","Loads":"負載","Total Modal Displacement":"總模態位移","Name":"名稱","Status":"狀態","Attached":"貼附","Type":"類型","Magnitude":"大小","Simulation Setup":"模擬設置","Simulation Setup Loading":"模擬設置負載","Free orbit":"自由環轉","Pan":"平移","Zoom window":"縮放視窗","Walk to":"漫遊至 (按兩下以穿越)","Camera interactions":"相機互動","Fit to view":"佈滿視圖 (F)","Focal length":"焦距長度 (Ctrl + Shift 拖曳)","Focal Length":"焦距長度","Roll":"滾動 (Alt + Shift 拖曳)","Model structure":"模型結構","Explode model":"分解模型","Layer Manager":"圖層管理員","Reset model":"重置模型","Reset drawing":"重置圖面","Properties":"性質","Document Browser":"文件瀏覽器","Comments and Markers":"註解和標識","Rendering options":"彩現選項","Full screen":"全螢幕","Exit full screen":"結束全螢幕","Layers":"圖層","Enter filter term":"輸入篩選關鍵字","Show/hide all layers":"展示/隱藏所有圖層","Show/hide this layer":"展示/隱藏此圖層","Background and lighting":"背景和照明","Performance and appearance settings":"效能和外觀設定","Navigation and selection settings":"導覽和選取設定","RaaS":"RaaS","@RaaS":{"description":"RaaS 代表彩現之服務"},"Gallery":"圖庫","FPS statistics":"FPS 統計","@FPS statistics":{"description":"FPS 代表每秒的畫面數"},"Model statistics":"模型統計","Show search bar":"展示搜尋列","Language":"語言","Error":"錯誤","Search the currently displayed content":"搜尋目前顯示的內容","Comment and Markers":"註釋和標識","Comment":"意見","Post":"張貼","Hide Markers":"隱藏標識","Show Markers:":"展示標識:","Orthographic View Set":"正投影視圖集","The view is set to Orthographic":"此視圖設定為「正投影」。變更焦距長度將會切換至透視投影。","Do not show this message again":"不要再展示此訊息","The view is set to Orthographic Beeline":"此視圖設定為「正投影」。使用此工具將會切換至透視投影。","Long Focal Length View Set":"長焦距長度視圖集","The view is set to a long focal length":"此視圖具有長焦距長度。使用此工具將會設定短焦距長度。","Go Home":"移至主視圖","Orthographic":"正投影","Perspective":"透視","Perspective with Ortho Faces":"透視與正投影面","Set current view as Home":"將目前視圖設定為主視圖","Focus and set as Home":"焦點,並設定為首頁","Reset Home":"重置主視圖","Set current view as Front":"將目前視圖設定為前視圖","Set current view as Top":"將目前視圖設定為上視圖","Reset orientation":"重置方位","TOP":"上","BOTTOM":"下","FRONT":"前","RIGHT":"右","LEFT":"左","BACK":"後","Show Selected":"展示選取的","Show All Objects":"展示所有物件","Show All Layers":"展示所有圖層","Focus":"焦點","Clear Selection":"清除選取項目","Show Properties":"展示性質","Section Box":"剖面框","Section":"剖面","Pivot":"樞軸","Section Plane":"剖面平面","Model":"模型","Tree":"樹","Thumbnails":"縮圖","Model browser":"模型瀏覽器","Browser":"瀏覽器","Filter by name":"依名稱篩選","Search":"搜尋","No Results":"沒有結果","Try another term":"請嘗試搜尋其他字詞","Spinner Loading":"正在載入","Loading Model for Change Visualization":"正在載入模型以顯示變更視覺化","Loading element properties":"正在載入元素性質","Computing change visualization":"正在運算變更視覺化","Model translation failed for view '%(viewableName)'":"視圖「%(viewableName)」的模型轉換失敗","Model Browser is not available":"模型瀏覽器無法使用","Object Properties":"物件性質","Object Properties Loading":"物件性質載入中...","No properties to display":"沒有可顯示的性質","Other":"其他","Model Properties":"模型性質","Loading model":"正在載入 %(name)","Yes":"是","No":"否","Properties %(value)":"性質 %(value)","Sum":"總和","Average":"平均","Count":"計數","Median":"中位數","Mode":"模式","Range":"範圍","English":"英文","Russian":"俄文","Japanese":"日文","Korean":"韓文","Spanish":"西班牙文","Chinese Simplified":"簡體中文","Chinese Traditional":"繁體中文","Czech":"捷克文","Polish":"波蘭文","Swedish":"瑞典文","Dutch":"荷蘭文","Danish":"丹麥文","French":"法文","Canadian French":"加拿大法文","German":"德文","Italian":"義大利文","Portuguese Brazil":"葡萄牙文 (巴西)","Turkish":"土耳其文"} \ No newline at end of file diff --git a/public/autodesk/res/locales/zh/allstrings.json b/public/autodesk/res/locales/zh/allstrings.json new file mode 100644 index 0000000..32f04e6 --- /dev/null +++ b/public/autodesk/res/locales/zh/allstrings.json @@ -0,0 +1 @@ +{"@@locale":"zh-Hant","@@context":"Viewer","@@contact":"","ATF-1008":"錯誤: {0}","ATF-1023":"{0} 參考檔案遺失。","ATF-1024":"檔案的版本: {0} 不受支援。","ATF-1025":"檔案: {0} 已損壞或無效。","ATF-1026":"檔案: {0} 是空的。","ATF-1028":"無法載入元件: {0}。","ATF-1031":"未經授權的檔案類型。","ATF-1032":"組合特徵已遺失。","ATF-1033":"檔案中的圖元: {0} 不受支援。","ATF-1034":"檔名: {0} 無效。","AssImp-OpenFailure":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","AssImp-InternalError":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","AssImp-CannotCreateOutput":"無法寫入輸出檔案。","AssImp-CannotLoadOBJ":"無法載入 OBJ 檔案。","AssImp-MissingTextures":"缺少的材質影像檔案:
    {0}
","AutoCAD-MissingReferences":"缺少參考某些參考未上載,因此圖面可能不會完全顯示。請上載包含所有缺少參考檔案的複合設計:
    {0}
","AutoCAD-MissingReference":"缺少參考一個參考未上載,因此圖面可能不會完全顯示。請上載包含缺少參考檔案的複合設計: {0}","AutoCAD-NoDWFxFilesGenerated":"圖面可能不包含可見物件。並未產生任何視圖。","AutoCAD-PasswordProtectedFile":"抱歉!此項目無法檢視,因為它受密碼保護。請移除密碼,然後再次上載以進行檢視。","AutoCAD-InvalidFile":"抱歉!圖檔無效,無法進行檢視。請嘗試在 AutoCAD 中修復檔案,然後再次上載以進行檢視。","AutoCAD-ProxyGraphicsFalse":"圖面包含不會顯示在檢視器中的自訂物件。","AutoCAD-ProxyGraphicsTrue":"圖面包含自訂物件。您可能無法看到或搜尋某些自訂物件的性質。","AutoCAD-ClippedView":"2D 模型視圖會截取至上次儲存的視圖,且可能不會顯示整個圖面。使用所需視圖在 AutoCAD 中重新儲存圖面,且如果已截取視圖時再次進行上載。","AutoCAD-MissingShxFonts":"缺少字體已替代圖檔某些缺少的字體: {0}","AutoCAD-MissingTtfFonts":"缺少字體已替代圖檔某些缺少的字體: {0}","AutoCAD-MissingPlotStyleFiles":"缺少出圖型式檔: {0}","DWF2D-Corrupt_File_Error":"無法開啟損壞的 DWF/DWFx 檔。","DWF2D-Building_XML_Object_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-File_Not_In_DWF":"無法開啟檔案,DWF/DWFx 檔內容中沒有預期的資源。","DWF2D-File_Open_Error":"無法開啟 DWF/DWFx 檔。","DWF2D-File_Read_Error":"無法讀取 DWF/DWFx 檔。","DWF2D-File_Write_Error":"無法寫入 DWF/DWFx 檔。","DWF2D-Internal_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_Argument_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_XML_Content_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_DWF_Version_Error":"無效的 DWF/DWFx 檔版本。","DWF2D-Not_A_DWF_Error":"無法開啟,不是 DWF/DWFx 檔。","DWF2D-Open_Section_Descriptor_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Out_Of_Memory_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Stream_Write_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Temp_File_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Toolkit_Usage_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-ZipLib_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Bad_Password_Error":"無法開啟受密碼保護的檔案。","DWF2D-Resource_Handler_Not_Specified_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Not_Implemented":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Stream_In_Progress":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-User_Requested_Abort":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Unsupported_File_Type_Error":"無法開啟,不是一個有效的 DWF/DWFx 檔。","DWF2D-Temp_Path_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Incompatable_XML_Version_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Incompatible_Section_Type":"處理 DWF/DWFx 檔時發現不明的剖面資源。","DWF2D-Drm_Encryption":"無法開啟 DRM / 受版權保護的檔案。","DWF2D-Load_Section_Error":"無法在 DWF/DWFx 檔中載入剖面資源。","DWF2D-Secured_Section_Type":"無法開啟 DRM / 受版權保護的檔案。","DWF2D-Unknown_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF3D-BadPassword":"無法開啟受密碼保護的 DWF 檔。","DWF3D-CorruptFile":"無法開啟 DWF 檔。資料似乎已損壞。","DWF3D-InvalidVersion":"無法開啟 DWF 檔。不受支援的版本。","DWF3D-DRMFailure":"無法開啟 DWF 檔。檔案包含受 DRM 保護的內容。","Navisworks-2DSheetUnsupported":"Navisworks 2D 圖紙不受支援。","Navisworks-MissingXref":"缺少外部參考檔:
    {0}
","Navisworks-EmptyFile":"沒有可以顯示的幾何圖形。","Navisworks-PointUnsupported":"Navisworks 點和鎖點不受支援。","Navisworks-Failed":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-UnsupportedFileType":"檔案不是 Revit 檔案或為不受支援的版本。","Revit-UnsupportedFileType_rfa":"該檔案不是 Revit 檔案。","Revit-UnsupportedFileType_rte":"該檔案不是 Revit 檔案。","Revit-UnsupportedFileType_rft":"該檔案不是 Revit 檔案。","Revit-MissingLink":"缺少連結檔案:
    {0}
","Revit-UpgradeWarning":"已移除某些元素,以解決升級期間遇到的問題。請注意,Revit 檔案可能不會正常顯示。為取得最佳結果,請在 Revit 中開啟檔案,接著解決警告並重新儲存,然後再試一次。","Revit-UpgradeError":"升級專案失敗。請使用目前的 Revit 版本升級專案,然後再試一次。","Revit-FileOpenError":"開啟檔案失敗。請在目前的 Revit 版本中開啟檔案,接著解決警告和錯誤並重新儲存,然後再試一次。","Revit-Timeout":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-MassVisibilitySettingFailure":"在 3D 視圖中匯出量體失敗。","Revit-View3DExportError":"匯出 3D 視圖失敗 - {0}。","Revit-View2DExportError":"匯出 2D 視圖失敗 - {0}。","Revit-ThumbnailGenerationError":"產生視圖預覽影像失敗 - {0}。","Revit-DocumentCorruption":"檔案已損壞。請在目前的 Revit 版本中開啟檔案,以參閱更多關於損壞的詳細資料。","Revit-InternalError":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-UnsupportedVersionOlder":"此檔案是以我們不支援的舊版 Revit 儲存。請將此專案升級至 Revit {0} 或更高版本。","Revit-UnsupportedVersionLater":"此檔案是以我們不支援的新版 Revit 儲存。
","Revit-InvalidLink":"無法載入連結檔案:
    {0}
","Recent Queries":"最近的查詢","Loading":"正在載入...","Loading Search":"正在載入搜尋...","Load More":"載入更多","Results Count":"在 {2} 找到 \"{1}\" 的 {0} 個結果","No Results for":"在 __1__ 沒有找到 \"__0__\" 的結果","Open Another Window":"在另一個視窗中開啟","Open This Window":"在此視窗中開啟","Geometries Loading":"正在處理模型性質。請重試搜尋以獲得更完整的結果。","Recent Queries Empty":"沒有先前的查詢可展示。","Selected Node Result Not Visible":"所選節點不可見。","No Visible Node Results For Geometry":"在此幾何圖形中的查詢沒有結果或結果中沒有可見的節點。","Saved Queries":"儲存的查詢","{0} saved of {1} allocated":"已儲存 {0} 個 (共配置 {1} 個)","Saved queries settings":"儲存的查詢設定","There are no queries saved for this document":"此文件沒有儲存任何查詢。","Saved Queries Settings":"儲存的查詢設定","Space":"空間","Saving":"正在儲存...","Deleting":"正在刪除…","No queries saved":"沒有儲存任何查詢。","An error occur while saving query, please try again later":"儲存查詢時發生錯誤,請稍後再試一次。","An error occur while deleting query, please try again later":"刪除查詢時發生錯誤,請稍後再試一次","Error saving query cause query list was outdated. Review list and retry operation.":"儲存查詢時發生錯誤,導致查詢清單已過期。請檢閱清單並重試作業。","Error deleting query cause query list was outdated. Review list and retry operation.":"刪除查詢時發生錯誤,導致查詢清單已過期。請檢閱清單並重試作業。","Error getting queries, please close and retry":"取得查詢時發生錯誤,請關閉並重試","Delete":"刪除","Cancel":"取消","Are you sure you want to delete the query from your list?":"您確定要從清單刪除查詢 {0}?","The query is already saved.":"查詢已儲存。","Maximum number of queries saved exceeded, please delete some queries or contact to your administrator":"儲存的查詢超出最大數目,請刪除一些查詢或聯絡您的管理員。","TranslationWorker-TextureResizingFailed":"圖面的材質並未正確處理。","TranslationWorker-ThumbnailGenerationFailed":"圖面的縮圖並未正確建立。","TranslationWorker-InternalFailure":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","TranslationWorker-InsufficientDataFromExtractor":"沒有產生足夠的圖面資訊使此檔案可供檢視。請聯絡支援以取得協助。","TranslationWorker-RecoverableInternalFailure":"處理此檔案時發生錯誤。若稍後再嘗試處理,可能就會成功。","New First Person":"新的第一人稱","Navigate in First Person":"以第一人稱導覽","Walk":"漫遊","Go Up and Down":"向上和向下","Release key to land on the nearest floor":"放開按鍵以置於最近的樓板上","Move":"移動","OR":"或","Adjust Speed":"調整速度","Run":"執行","Direction Key":"方向鍵","Teleport":"傳送","Double click on destination":"按兩下目標","Look Around":"環視","Drag with left key on view":"使用左鍵在視圖上拖曳","Dont remind me again":"不要再提醒我","Ok Got It":"好,瞭解了。","Enable Gravity":"啟用重力","Toggles gravity while in first person mode":"在第一人稱模式時切換重力","Location Icons":"位置圖示","Show location icons":"展示位置圖示","Toggles availability of the location icons when looking at the project model":"查看專案模型時切換位置圖示的可用性。","Components":"元件","Sheets":"圖紙","%(attributeChanged) by":"%(attributeChanged) 差異","%(attributeChanged) to":"%(attributeChanged) 結果","%(moved) %(units) in %(axis)":"沿 %(axis) 軸移動了 %(moved) %(units)","%(rotated) around %(axis)":"繞 %(axis) 軸旋轉了 %(rotated)","%(scaled) on %(axis)":"在 %(axis) 軸調整了 %(scaled) 倍","%(versionB) vs. %(versionA)":"%(versionB) 與 %(versionA)","Add the \"%(categoryName)\" category as a filter":"加入「%(categoryName)」品類做為篩選","Added":"已加入","An error occured while trying to find differences between versions.":"嘗試尋找不同版本之間的差異時發生錯誤。","Architecture":"建築","Back to top":"返回頂端","Change list":"變更清單","Changes":"變更","Changes between %(versionB) & %(versionA)":"%(versionB) 與 %(versionA) 之間的變更","Details":"詳細資料","Diff Failed":"比較差異失敗","Disciplines affected":"受影響的領域","Electrical":"電氣","Exit comparing":"結束比較","Flat Result List":"展開結果清單","Hide":"隱藏","Hide \"%(name)\" changes":"隱藏「%(name)」變更","Hide Selected":"隱藏選取的","Hide property changes":"隱藏性質變更","Hide shape changes":"隱藏造型變更","Hide transformations":"隱藏轉換","INFORMATION":"資訊","Isolate":"隔離","Isolate Selected":"隔離選取的項目","Isolated or hidden in view":"在檢視中隔離或隱藏的項目","Learn more":"進一步瞭解","Mechanical":"機械","Miscellaneous":"雜項","Modification type":"修改類型","Modified":"已修改","Moved by":"移動距離","No search results found":"找不到任何搜尋結果","OTG translation failed for model \"%(modelName)\" using version \"%(modelVersion)\"":"OTG 轉換失敗,因為模型「%(modelName)」使用版本「%(modelVersion)」","Overlay":"覆疊","Piping":"配管","Project Model":"專案模型","Remove filter that includes elements and categories having \"%(filterText)\" in their name":"移除其元素和品類的名稱有「%(filterText)」的篩選","Remove the \"%(categoryName)\" category as a filter":"移除做為篩選的「%(categoryName)」品類","Removed":"已移除","Result as Tree":"以樹狀呈現結果","Rotated by":"旋轉角度","Scaled by":"調整比例","Search + Filter":"搜尋與篩選","Show \"%(name)\" changes":"展示「%(name)」變更","Show All":"全部展示","Show Differences":"展示差異","Show in model":"在模型中展示","Show property changes":"展示性質變更","Show shape changes":"展示造型變更","Show the results in a flat list":"以展開的清單展示結果","Show the results in a tree view":"以樹狀檢視展示結果","Show transformations":"展示轉換","Side by Side":"並排","Structure":"結構","The file type is not fully supported.":"不完全支援此檔案類型。","The file type is not fully unsupported for 2D":"不完全支援 2D 的此檔案類型","The shape of this object has been changed":"此物件的造型已變更","There are too many results to display at once. Use the filters to reduce the amount.":"結果太多,無法一次顯示。請使用篩選減少數量。","This element has been added in version %(version)":"此元素已加入版本 %(version) 中","This element has been removed in version %(version)":"此元素已從版本 %(version) 中移除","Toggle between different disciplines":"切換不同領域","Toggle between different types of modifications":"切換不同類型的修改","of %(maxCount)":"/ %(maxCount)","undefined":"未定義","Click a 2D location to view that space in 3D":"按一下 2D 位置,以 3D 檢視該空間","Current view is not supported by Place Me":"Place Me 不支援目前視圖","Click on a location to ground yourself, then select a camera direction":"按一下某個位置固定您自己,然後選取相機方向","View object in 3D":"以 3D 檢視物件","Simple Grey":"簡單的灰色","Grey Room":"灰色房間","Photo Booth":"大頭貼","Sharp Highlights":"銳利亮顯","Contrast":"對比","Infinity Pool":"無邊際泳池","Tranquility":"寧靜","Dark Sky":"黑暗天空","Simple White":"簡單的白色","Riverbank":"河岸","Rim Highlights":"邊緣亮顯","Cool Light":"冷光","Warm Light":"暖光","Soft Light":"柔光","Grid Light":"格線光源","Plaza":"廣場","Snow Field":"雪地","Field":"田野","Crossroads":"交叉路","Seaport":"海港","Glacier":"冰川","Boardwalk":"木板步道","RaaS Test Env":"RAAS 測試環境","Flat Shading":"平板描影","Harbor":"港口","Night":"夜晚","Parking":"停車場","River Road":"河岸道路","Custom Model defined":"(自訂: 定義的模型)","header-sorry":"抱歉","header-warning":"警告","Error Occurred":"發生錯誤","OK":"確定","Viewer-UnknownFailure":"抱歉我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-BadData":"抱歉您嘗試檢視的項目未完成處理。請嘗試再次載入該項目。請再次上載檔案,以查看是否能修正問題。","Viewer-NetworkError":"抱歉我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-AccessDenied":"無存取權限很抱歉。您沒有存取此項目所需的權限。 請聯絡作者。","Viewer-FileNotFound":"抱歉我們無法顯示您正在尋找的項目。它可能尚未處理。它可能已遭到移動、刪除或您可能使用損壞檔案或不受支援的檔案格式。請嘗試再次載入該項目。請再次上載檔案,以查看是否能修正問題。請參閱受支援格式的清單。","Viewer-ServerError":"抱歉我們似乎有某些技術問題,無法完成您的請求請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-UnhandledResponseCode":"網路問題 很抱歉。我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-WebGlNotSupported":"抱歉我們無法展示此項目,因為此瀏覽器不支援 WebGL。請嘗試 Google Chrome、Mozilla Firefox,或其他支援 WebGL 3D 圖形的瀏覽器。若要取得更多資訊,請參閱 A360 瀏覽器需求。","Viewer-WebGlDisabled":"抱歉我們無法展示此項目,因為此裝置上已停用 WebGL。若要取得更多資訊,請參閱 A360 說明。","Viewer-NoViewable":"沒有可檢視內容此項目沒有可顯示的內容。它可能尚未處理,也可能不具有我們可以顯示的內容。請聯絡作者。請再次上載檔案,以查看是否能修正問題。","Viewer-ModeIsEmpty":"模型是空的模型是空的,沒有幾何圖形可供檢視器展示。 請聯絡作者。 請再次上載檔案,以查看是否能修正問題。","Viewer-RTCError":" 抱歉我們無法連接至伺服器的協同合作。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Sorry":"抱歉","The file extension loaded into the Viewer is not supported":"不支援載入檢視器的副檔名。","Try a different file":"請嘗試其他檔案。","WebGL context lost":"WebGL 環境遺失","Unable to recover from software mode. Please restart your browser and reload the Viewer.":"無法從軟體模式恢復。請重新啟動瀏覽器並重新載入檢視器。","If you continue to encounter this issue when viewing this model, we recommend switching to a different browser.":"如果您在檢視此模型時持續遇到此問題,建議切換至其他瀏覽器。","UNKNOWN FAILURE":"未知的失敗","BAD DATA":"不良資料","NETWORK ERROR":"網路錯誤","NETWORK ACCESS DENIED":"網路存取遭拒","NETWORK FILE NOT FOUND":"找不到網路檔案","NETWORK SERVER ERROR":"網路伺服器錯誤","NETWORK UNHANDLED RESPONSE CODE":"網路未處理的回應代碼","BROWSER WEBGL NOT SUPPORTED":"瀏覽器 WebGL 不受支援","BAD DATA NO VIEWABLE CONTENT":"不良資料沒有可檢視內容","Network failure":"網路故障","Access denied to remote resource":"遠端資源存取遭拒","Remote resource not found":"找不到遠端資源","Server error when accessing resource":"存取資源時發生伺服器錯誤","Unhandled response code from server":"伺服器產生的未處理回應代碼","Malformed data received when requesting file":"請求檔案時收到錯誤的資料","Malicious document content detected Abort loading":"偵測到惡意文件內容。中斷載入。","No viewable content":"沒有可檢視內容","An exception occurred while loading the document":"載入文件時發生例外錯誤","Properties failed to load since model does not exist":"性質無法載入,因為模型不存在","ObjectTree failed to load since model does not exist":"ObjectTree 無法載入,因為模型不存在","Search failed since model does not exist":"搜尋失敗,因為模型不存在","Viewer failed to initialize":"檢視器初始化失敗","Unhandled exception while reading pack file":"讀取打包檔案時發生未處理的例外狀況","Unhandled exception while reading geometry":"讀取幾何圖形時發生未處理的例外狀況","Unable to load geometry":"無法載入幾何圖形","Failed to load properties":"載入性質失敗","Unhandled exception while loading SVF":"載入 SVF 時發生未處理的例外狀況","Failure while loading SVF":"載入 SVF 時發生錯誤","First Person Tool":"第一人稱工具","First person":"第一人稱","Use the WASD and QE keys to move":"使用 WASD 和 QE 鍵可移動。Shift+按鍵可更快速移動,或使用 +/- 鍵調整漫遊速度。G 鍵可切換視圖方位拖曳模式。按 F1 可檢視此說明。","View Orientation Drag Mode Toggled":"已切換為視圖方位拖曳模式","Press the primary mouse button and drag to change the view orientation":"按下主要滑鼠按鈕並拖曳,以變更視圖方位。","Move the cursor to change the view orientation":"移動游標以變更視圖方位。","Virtual Reality Tool":"虛擬實境工具","This is the Virtual Reality tool":"此為虛擬實境工具。","VR Toggle Move":"VR 切換移動","START Auto Move":"開始自動移動","STOP Auto Move":"停止自動移動","VR Device Orientation":"VR 裝置方位","VR Mode Enabled Device Orientation":"VR 模式已啟用 (裝置方位)","VR Head Mounted Display":"VR 抬頭顯示器","VR Mode Enabled Head Mounted Display":"VR 模式已啟用 (抬頭顯示器) - 使用空格鍵以切換移動控制。","External Link":"外部連結","View":"檢視","Back":"上一步","Ctrl + Click to preview the link":"按住 Ctrl 的同時按一下以預覽連結","Levels":"樓層","Markup":"標記","Write Something":"寫點東西...","Add Length":"加入長度","Measure":"測量","Select Object":"選取物件","Vertex":"頂點","Edge":"邊","Face":"面","Delta":"差值","Unit type":"單位類型","Decimal feet":"小數英呎","Feet and fractional inches":"英呎和分數英吋","Feet and decimal inches":"英呎和小數英吋","Decimal inches":"小數英吋","Fractional inches":"分數英吋","Meters":"公尺","Centimeters":"公分","Millimeters":"公釐","Meters and centimeters":"公尺和公分","Points":"點","Unknown":"不明","Precision":"精確度","Enable free measure":"啟用自由測量","Isolate measurement":"隔離測量","Restart":"重新啟動","Select two points":"選取兩個點以校正圖面","Calibration":"校正","Calibrate":"校正","Define Size":"定義大小","Set Calibration":"設定校正","Calibration Message":"使用尺規之前,必須先設定和校正此圖紙的比例","Calibrate Now":"立即校正","Add Calibration":"加入校正","Calibration Required":"需要校正","Distance":"距離","Angle":"角度","Area":"面積","Arc":"弧","Delete measurement":"刪除測量","Measure settings":"測量設定","Done":"完成","Show minimap":"展示小地圖","Toggles availability of the Minimap":"切換小地圖的可用性","Minimap":"小地圖","3D Mini-map":"3D 小地圖","Show 3D mini-map":"展示 3D 小地圖","Toggles availability of the 3D mini-map when using first person mode":"使用第一人稱模式時切換 3D 小地圖的可用性","Min":"最小值","Max":"最大值","Compared Documents":"比較的文件","Hide colors":"隱藏顏色","Show colors":"展示顏色","Finish align":"完成對齊","Align":"對齊","Document":"文件","Uploaded By":"上傳者","Issuance date":"發佈日期","At":"於","Close Panel":"關閉面板","ProgressLoading":"正在載入...","ProgressRendering":"正在彩現...","ProgressOptimizing":"正在最佳化...","INITIATING DIRECT LINK":"正在初始化直接連結...","CONTACTING MOTHERSHIP":"正在聯絡主要裝置...","DISCONNECTED":"已中斷連接!","Remote Control":"遠端控制","Reload main viewer and pair again":"重新載入主檢視器並再次配對。","Go to this link":"移往此連結:","Scan the QR code with your device":"使用您的裝置掃瞄 QR 碼:","or":"或","Pair with controller device":"與控制器裝置配對","Rendering Options":"彩現選項","Background Color":"背景顏色:","Cel Shaded":"卡通渲染","AO Enabled":"AO 已啟用:","@AO Enabled":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"AO Radius":"AO 半徑:","@AO Radius":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"AO Intensity":"AO 強度:","@AO Intensity":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"Shadow Alpha":"陰影 α (A):","Shadow Color":"陰影顏色:","Reflection Alpha":"反射 α (A):","Reflection Color":"反射顏色:","Environment":"環境","Tonemap Method":"色調貼圖方法:","Exposure Bias":"曝光偏差:","Light Intensity":"光源強度:","FOV-degrees":"FOV (度):","@FOV-degrees":{"description":"FOV 是「視野角度」的縮寫。"},"Frame rate":"畫面速率:","None":"無","Canon-RGB":"Canon (RGB)","Canon-Lum":"Canon (明度)","Rotate page":"旋轉頁面","Stress reference":"應力參考","Displays the distribution of stress based on the factor of safety value set in the Objectives and Limits dialog in the Define workspace.":"根據在「定義」工作區的「目標和限制」對話方塊中設定的安全係數值,顯示應力的分佈。","High":"高","Ideal":"理想","Low":"低","Model View":"模型視圖","Stress View":"應力視圖","Von Mises stress (Pa)":"Von Mises 應力 (Pa)","Analysis display":"分析顯示","Von Mises stress":"Von Mises 應力","Factor of safety":"安全係數","For all displayed outcomes":"對於所有顯示的結果","Displays the distribution of von Mises stress on the surface of the generated outcome.":"顯示 von Mises 應力在產生的結果表面上的分佈。","Displays the distribution of the factor of safety on the surface of the generated outcome.":"顯示安全係數在產生的結果表面上的分佈。","Min Stress":"最小 __min__","Max Stress":"最大 __max__","Min FOS":"最小: __min__","Max FOS":"最大: __max__","Min Value":"__min__ (最小)","Max Value":"__max__ (最大)","Units Stress":"Von Mises 應力 (__units__)","Stress Status":"__status__","Stress Text":"__statusText__","Section analysis":"剖面分析","Add X plane":"加入 X 平面","Add Y plane":"加入 Y 平面","Add Z plane":"加入 Z 平面","Add box":"加入方塊","Settings":"設定","Configuration":"規劃","Navigation":"導覽","Performance":"效能","Appearance":"外觀","ViewCube":"ViewCube","Show ViewCube":"展示 ViewCube","ViewCube acts on pivot":"ViewCube 作用於樞軸","Orbit":"環轉","Fusion style orbit":"Fusion 型式環轉","Orbit past world poles":"環轉超過世界極點","Zoom":"縮放","Zoom towards pivot":"縮放至樞軸","Reverse mouse zoom direction":"反轉滑鼠縮放方向","Mouse":"滑鼠","Left handed mouse setup":"慣用左手滑鼠設置","Set pivot with left mouse button":"使用滑鼠左鍵設定樞軸","Open properties on select":"開啟選取的性質","Prototypes":"原型","New First Person Tool":"新的第一人稱工具","Performance Optimization":"效能最佳化","Disable shadow effect":"Disable shadow effect","Progressive display":"漸進式顯示","Display":"顯示","Ghost hidden objects":"幽靈隱藏物件","Display Lines":"顯示線","Display Points":"顯示點","Display edges":"顯示邊","Display Section Hatches":"顯示剖面填充線","Vector Viewing":"向量檢視","Display Units":"顯示單位","File units":"檔案單位","Inches":"英吋","Feet":"英呎","File precision":"檔案精確度","Selection":"選取","Selection Mode":"選取模式","Leaf Object":"門扇物件","First Object":"第一個物件","Last Object":"最後一個物件","Visual Quality Optimization":"視覺品質最佳化","Anti-aliasing":"消除鋸齒","Ambient shadows":"環境陰影","Ground shadow":"地面陰影","Ground reflection":"地面反射","Existing behavior":"既有行為","2D Sheet Color":"2D 圖紙顏色","Loading Animation":"載入動畫","Environment Image Visible":"環境影像可見","Environments and Lighting Selection":"環境和照明選取","Restore all default settings":"還原所有預設設定","Restore":"還原","More":"更多","Look Direction":"面對方向","Reverse horizontal look direction":"反轉水平面對方向","Reverse vertical look direction":"反轉垂直面對方向","Scroll Speed":"捲動速度","Drag Speed":"拖曳速度","Changes sensitivity of mouse movement with the zoom tool":"使用縮放工具變更滑鼠移動的敏感度","Changes sensitivity of the mouse scroll wheel when zooming":"變更滑鼠滾輪在縮放時的敏感度","Toggles availability of the ViewCube navigation control":"切換 ViewCube 導覽控制項的可用性。","When enabled, the ViewCube orbits the view around the active pivot point When disabled, it orbits around the center of the view":"啟用時,ViewCube 會圍繞作用中的樞軸點環轉視圖。停用時,則會圍繞視圖的中心環轉。","Enables Fusion-style orbit overlay and gives the ability to lock orbit axis":"啟用 Fusion 型式的環轉覆疊,並可鎖住環轉軸。","Allows view rotation to continue past the model’s North Pole":"允許視圖旋轉,以繼續超過模型的北極。","When disabled, zooming operations are centered at the current cursor location":"停用時,縮放作業會在目前的游標位置置中。","Toggles direction of zooming in and out":"切換拉近和拉遠的方向。","Swaps the buttons on the mouse":"交換滑鼠上的按鈕。","Change left-click behavior to set new pivot point (overrides select object)":"變更按一下左鍵行為以設定新的樞軸點 (取代選取物件)。","Always show properties upon selecting object":"選取物件時永遠展示性質。","Enable new walkthrough mode":"啟用新的穿越模式。","Provides faster response(but degrades quality) while navigating":"導覽時提供更快的反應 (但會降低品質)","Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker) This improves perceived waiting time":"展示視圖的增量更新,並允許與模型的互動更有反應 (某些元素可能會閃爍)。這樣可改善感受到的等待時間。","Leave hidden objects slightly visible":"讓隱藏的物件稍微可見。","Large model experience":"大型模型體驗","Improves your overall experience viewing large models. The changes will take effect on the next page load.":"改善檢視大型模型的整體體驗。變更將在下一頁載入時生效。","Toggles display of line objects":"切換線物件的顯示。","Toggles display of point objects":"切換點物件的顯示。","Shows outline of model surfaces":"展示模型表面的外框。","Shows hatch pattern for section planes this does not apply to section boxes":"展示剖面平面的填充線樣式,不適用於剖面框","Remove jagged edges from lines":"移除線的鋸齒狀邊緣。","Improve shading of occluded surfaces":"改善遮蔽表面的描影。","Add simulated ground surface shadows":"加入模擬的地表陰影。","Add simulated ground surface reflections":"加入模擬的地表反射。","Switch sheet color white to black":"切換白色圖紙顏色為黑色","Animate lines during loading":"載入時以動畫顯示線條","Shows lighting environment as background":"將照明環境展示為背景。","Toggles direction of left and right camera movement":"切換相機左右移動的方向","Toggles direction of up and down camera movement":"切換相機上下移動的方向","Simulation":"模擬","Simulation Results":"模擬結果","Simulation Model Structure Loading":"模擬模型結構負載","Static Stress":"靜態應力","Modal Frequencies":"模態頻率","Analysis Type":"分析類型","Nodes":"節點","Elements":"元素","Safety Factor":"安全係數","Stress":"應力","Strain":"應變","Von Mises":"Von Mises","Per Body":"每個本體","Total":"總計","Equivalent":"對等","Displacement":"位移","Constraints":"約束","Loads":"負載","Total Modal Displacement":"總模態位移","Name":"名稱","Status":"狀態","Attached":"貼附","Type":"類型","Magnitude":"大小","Simulation Setup":"模擬設置","Simulation Setup Loading":"模擬設置負載","Free orbit":"自由環轉","Pan":"平移","Zoom window":"縮放視窗","Walk to":"漫遊至 (按兩下以穿越)","Camera interactions":"相機互動","Fit to view":"佈滿視圖 (F)","Focal length":"焦距長度 (Ctrl + Shift 拖曳)","Focal Length":"焦距長度","Roll":"滾動 (Alt + Shift 拖曳)","Model structure":"模型結構","Explode model":"分解模型","Layer Manager":"圖層管理員","Reset model":"重置模型","Reset drawing":"重置圖面","Properties":"性質","Document Browser":"文件瀏覽器","Comments and Markers":"註解和標識","Rendering options":"彩現選項","Full screen":"全螢幕","Exit full screen":"結束全螢幕","Layers":"圖層","Enter filter term":"輸入篩選關鍵字","Show/hide all layers":"展示/隱藏所有圖層","Show/hide this layer":"展示/隱藏此圖層","Background and lighting":"背景和照明","Performance and appearance settings":"效能和外觀設定","Navigation and selection settings":"導覽和選取設定","RaaS":"RaaS","@RaaS":{"description":"RaaS 代表彩現之服務"},"Gallery":"圖庫","FPS statistics":"FPS 統計","@FPS statistics":{"description":"FPS 代表每秒的畫面數"},"Model statistics":"模型統計","Show search bar":"展示搜尋列","Language":"語言","Error":"錯誤","Search the currently displayed content":"搜尋目前顯示的內容","Comment and Markers":"註釋和標識","Comment":"意見","Post":"張貼","Hide Markers":"隱藏標識","Show Markers:":"展示標識:","Orthographic View Set":"正投影視圖集","The view is set to Orthographic":"此視圖設定為「正投影」。變更焦距長度將會切換至透視投影。","Do not show this message again":"不要再展示此訊息","The view is set to Orthographic Beeline":"此視圖設定為「正投影」。使用此工具將會切換至透視投影。","Long Focal Length View Set":"長焦距長度視圖集","The view is set to a long focal length":"此視圖具有長焦距長度。使用此工具將會設定短焦距長度。","Go Home":"移至主視圖","Orthographic":"正投影","Perspective":"透視","Perspective with Ortho Faces":"透視與正投影面","Set current view as Home":"將目前視圖設定為主視圖","Focus and set as Home":"焦點,並設定為首頁","Reset Home":"重置主視圖","Set current view as Front":"將目前視圖設定為前視圖","Set current view as Top":"將目前視圖設定為上視圖","Reset orientation":"重置方位","TOP":"上","BOTTOM":"下","FRONT":"前","RIGHT":"右","LEFT":"左","BACK":"後","Show Selected":"展示選取的","Show All Objects":"展示所有物件","Show All Layers":"展示所有圖層","Focus":"焦點","Clear Selection":"清除選取項目","Show Properties":"展示性質","Section Box":"剖面框","Section":"剖面","Pivot":"樞軸","Section Plane":"剖面平面","Model":"模型","Tree":"樹","Thumbnails":"縮圖","Model browser":"模型瀏覽器","Browser":"瀏覽器","Filter by name":"依名稱篩選","Search":"搜尋","No Results":"沒有結果","Try another term":"請嘗試搜尋其他字詞","Spinner Loading":"正在載入","Loading Model for Change Visualization":"正在載入模型以顯示變更視覺化","Loading element properties":"正在載入元素性質","Computing change visualization":"正在運算變更視覺化","Model translation failed for view '%(viewableName)'":"視圖「%(viewableName)」的模型轉換失敗","Model Browser is not available":"模型瀏覽器無法使用","Object Properties":"物件性質","Object Properties Loading":"物件性質載入中...","No properties to display":"沒有可顯示的性質","Other":"其他","Model Properties":"模型性質","Loading model":"正在載入 %(name)","Yes":"是","No":"否","Properties %(value)":"性質 %(value)","Sum":"總和","Average":"平均","Count":"計數","Median":"中位數","Mode":"模式","Range":"範圍","English":"英文","Russian":"俄文","Japanese":"日文","Korean":"韓文","Spanish":"西班牙文","Chinese Simplified":"簡體中文","Chinese Traditional":"繁體中文","Czech":"捷克文","Polish":"波蘭文","Swedish":"瑞典文","Dutch":"荷蘭文","Danish":"丹麥文","French":"法文","Canadian French":"加拿大法文","German":"德文","Italian":"義大利文","Portuguese Brazil":"葡萄牙文 (巴西)","Turkish":"土耳其文"} \ No newline at end of file diff --git a/public/autodesk/res/textures/VCarrows.png b/public/autodesk/res/textures/VCarrows.png new file mode 100644 index 0000000000000000000000000000000000000000..1f5ac563d5a9adacb915235858ac0de39cde56d8 GIT binary patch literal 1840 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 UHIHtkNzD|vIJuL`h=Hts01akHjsO4v literal 0 HcmV?d00001 diff --git a/public/autodesk/res/textures/VCarrowsS1.png b/public/autodesk/res/textures/VCarrowsS1.png new file mode 100644 index 0000000000000000000000000000000000000000..040e21dde005f49321ef2f3221bc9f58f98f2dcc GIT binary patch literal 1829 zcmbVNX*ipS7Cv8WX$D1^+S)`6SBEMslCd?~FqVnN7OkbyDpwKLE@qNpsC|oxt zs-k63TWe@ijJ;)yHH^A0t*dk{Eo!Zs{=9$hkN2GCd7t;3=RD`f`({v`zm~(OV*o(T z!Jh0Y?unm(mKN7e>nj7|b|~EbQWOAY^%IbD)g~ok66bI4N&#S97b6eg;{)+f0YJPZ zz?uaBAs;~Z1}0?t8h~__1KGx%Ikht58|3zP&7QS`uN+30!NKO|8HyV7JGzw=pNbi$ zre4ETqW6^ojN4}|9?GezdiI3h<)j-3tqKtaT`p>^dRdu-b1yUtPx?o6j0c>clv4&C zUJCa14vFOXnyA^T7juhWx9th2m_N!&4tf^j2bZ!m{j)i-^J_`~D3Am+C;$#fkZ8ia zyp(|C&Znn0M`})V6}{=Y=pjITk;Z$NzqnmP)pJja2nOhhDEO8ABEm;|=zZGxyVN^+ znI+{@NSTJUfOi)GRY593-;!c6UVX$nstSUdyppf;bPHHmCjmvtCEM8S5S*6At@#N` z!fdn1_#Xg#GABXLa%+6l;fkZdUXs@NoM$V$jG`HTN z=<&lr>%$w%69>*$nPhStSHBYly&+ptNL?Gp>A#b%vXM}Q5?h9;?O0WEoQeh-qrP-1_l5izI-MTfu zyZQD^b8|CI8FOPSSgv<_dX%Wcaxgt2c?#heYAZ6F1*TpGMfLl;AEJ74k5xTCDqTF# z#HQ2#$?l%S0+lX#3HU0sOgntNw?WZHPac*K9UD7dP*_;_FlH+gwVHrd${^Q3k*6*B zBzbi5<;$Aor6p10mCn@2CON+dxSUE44XqvwZhHOMvv-WrlytAtDg3fIeI=5)q-M{t zK&OO@=@JtO3c1Iv9>%r!)Ydeb>M^$Jg@)h%EfhU(;@zptzxS`{fJZKbrHic*@PzVeS9TH|Bf1x+LVtogLexls|0^nJ`Ws zna-;E#CZ5zo5!-&mZwB1dJl_A1-|U9n1{-fK1z)DmPjWLR8`4~lk8A`M=A=8TTvdTY zk6h!Oy-t1Yy!)1RLs1&OG7KRV5lkRJ6Xx-r_lU;kGAvw=uhZCFgH3k6aRN^S^qgn> z4irSjt(=lU)-wN{L~eiE&r-lA&iH2wED6Lnr#3GEWP1K*U*-(ORsP1eyy>klZorLn zb0BR~j=0RWv=4I%WMZ1#U92CA*M+g~KGn3&%i@qH`_Q~IemMXq6M4_$-=xL$0_NTVU?;{ zrDj0=dhSUt&q*Y`LL0G!%1{;6owpI))6a6%-J}#n2+2xrpJ>h~h?K{bJ_SA=+|Fcq z-?!vX`Ro`K?~0GBEmyl&SrA3yj+r<+372HS{l~K=rdTdh;WrFl7e20Xx4${dyu)9t zLseE$=~u%j<=D`sYGaASelV~+np3sWx6XX}N`@Y&6~<+rNFN}ns03#BdoFX4#BK@5 zNjpQz_iDTSQNE@(XL8LsdeVOZ3Q`R4 literal 0 HcmV?d00001 diff --git a/public/autodesk/res/textures/VCcompass-base.png b/public/autodesk/res/textures/VCcompass-base.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b6c371f86ca0f609bdc0e40258c64e4e92d7ed GIT binary patch literal 9123 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 dwpZL!i+@@1g9003Y&F-F?ZFy{XU_yTS2 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 F{{uO%F9QGo literal 0 HcmV?d00001 diff --git a/public/autodesk/res/textures/VCcontext.png b/public/autodesk/res/textures/VCcontext.png new file mode 100644 index 0000000000000000000000000000000000000000..d16e811675f2cf866506efff9c34d48fec703ca9 GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgNJX+o zkS_y6-BAXH?lK03ukJvakAa~ufPvwKC~)nQq8+ z$Uvm+e|Qz^aX3Kh)d>mP91c06FT5|PPbZ|9SHv@>MG(%iVDBvxULR;SOko|FFz z3JL1mG}5^<$wBBuyMD(Djs)R}m7)_bFJWlNjlKRlq9pBHdN_lFn$nlG_ve{Cd_R|o zVXdLsvWRTq9Sjk!A{Afy{zjPg%wXNiGb5@oBhuhZ!%p7_!(wG6kyXaU%nL4Y&0(B! zY({j)%<{)m?(QgK6x`W9siM97@v9<*mKNST-bMZ@CIz8FzdSM?zS1b0SkP#Fm8rKy z`_4{@vz|W=>|OP6MvH#UCb1QEDq0M07~j-9Trc@`SF$#P%&z6)lP}%<@Sb%ZGsDl7 W?~)nQq9} z_NrGWczom9_YG-J2Pb22An( zjGuHi{k?I`?abyEe?zC}D=Qw6INRj#Dh_pD;GM$K@#5ChBi3^|)}6Av(CQ+*$FQSrVnCy|YN9k}=#Cut+^DfhBq-`=QQ?vuLTN;Mq4)vq0(dQt3N)B>H0VsV-W rbhr;Z`N)zyFHZN&{)hLu@31p430y97=E+(H3`_=3S3j3^P6QL70(Y)*K0-AbW|YuPggqMgdV3KIRQ&Ev!<;?}aZW*G=%A``v6;O|_~=*5eEN^M1`#VLht%vafVz|3CR-#&2`aJK}gx zvH$=9aY;l$RCwC#m(5MXKoCaXjI9WS=m9AvX#k~*bU*==L;>76&;_D_M2?gWIH2$o zWp}wuBqxw$*YUz7Bl+N;+4sD%zqKWVz<*ZRrb$EuxB2i|)DP}NXX)zoGpNg`Tc8}6Lb=J}#1d>aYv0uJDu)4Hw) z_FRmt=Xik__%RaN6}+v4b_s7IptWV zui(GTL{XZ+ysE0+dPXLb$yE;ca5$U;!M6EYAOMfRg)Pr_2?K4sL=oa1xCd6i0tlt; zyaDgPnO#K0K-(1}`(A-hzyYf=gy4Z?<86qoA2Sfy_Z33;Fdo?-x=y|aP68)^lR(be z_%9HVbKn*jM1;_9L3AjLroclph_)Mgz@@DVdH}vlK=#D&!eW29D?Zg0q#_|&Q=;41 h+T&aO8|J9*0RY?3{9i}?c9sAD002ovPDHLkV1h}E%pd>& literal 0 HcmV?d00001 diff --git a/public/autodesk/res/textures/VChomeS.png b/public/autodesk/res/textures/VChomeS.png new file mode 100644 index 0000000000000000000000000000000000000000..39a74e6834140072a36ceb47697c6dd019348c4a GIT binary patch literal 502 zcmVK}gx zvH$=9d`Uz>RCwC#mrYK>Koo$#d2LW*JcU=_0xkr$?yX@bcmj^V2~c-N4&as|2^Zi1 zY&?UD#vgv#=cY9U5ol@4hL_Bu&GdcWn@L|gMpfBo*l8Xz#u&MIy+!PM0D^flc)onp zG}WkTq5&9j+@{orIv9I87<(%9p^D=+0h2VJB(B_X8(5`Izg7Od-*1({Ds{wh8^#!u zB&X~O-&I1gfbSw9S;5mvNS5$45|TAMsf6SKPa+|C!MBx=JmK3&NZ#;G5>f8 z5ZJqbiJzv7F(=~mUa*d;xzPNH8+2<|@kX@V`AWc9_+9vKbu=~>iiwStpMkLddr{|Q s#bgN&tk#-DX+xv_AIkjQf_=o#02p=zYBuSnWdHyG07*qoM6N<$f;ZLFZ~y=R literal 0 HcmV?d00001 diff --git a/public/autodesk/res/ui/powered-by-autodesk-blk-rgb.png b/public/autodesk/res/ui/powered-by-autodesk-blk-rgb.png new file mode 100644 index 0000000000000000000000000000000000000000..b6fdb9fa6141da6bacfcba40991ecbbee40af791 GIT binary patch literal 22996 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
fb@oaM6r+5^c)+a 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 literal 0 HcmV?d00001 diff --git a/public/autodesk/style.min.css b/public/autodesk/style.min.css new file mode 100644 index 0000000..e255ee6 --- /dev/null +++ b/public/autodesk/style.min.css @@ -0,0 +1 @@ +.adsk-viewing-viewer.dark-theme{color:#fff;font-size:14px}.adsk-viewing-viewer.dark-theme.quality-text{text-rendering:geometricPrecision}.adsk-viewing-viewer.dark-theme .viewcube{color:#000}.adsk-viewing-viewer.dark-theme .adsk-lmv-tftable input,.adsk-viewing-viewer.dark-theme .option-drop-down,.adsk-viewing-viewer.dark-theme .property-drop-down{background-color:#d5dbe1;border:1px solid #939ca5;color:#000}.adsk-viewing-viewer.dark-theme .adsk-control-group{background-color:rgba(34,34,34,.94);box-shadow:1px 3px 10px 0 rgba(0,0,0,.5);color:#f4f4f4}.adsk-viewing-viewer.dark-theme .adsk-button:hover{border:1px solid #00bfff;color:#00bfff}.adsk-viewing-viewer.dark-theme .adsk-button.active,.adsk-viewing-viewer.dark-theme .adsk-button:focus{border-radius:3px;box-shadow:inset 0 2px 2px 0 #000;color:#00bfff;outline:none}.adsk-viewing-viewer.dark-theme .adsk-label-button.active,.adsk-viewing-viewer.dark-theme .adsk-label-button:focus,.adsk-viewing-viewer.dark-theme .adsk-label-button:hover{border:1px solid transparent}.adsk-viewing-viewer.dark-theme .adsk-label-button label{background-color:#06a7df;color:#fff}.adsk-viewing-viewer.dark-theme .adsk-label-button.active label,.adsk-viewing-viewer.dark-theme .adsk-label-button:focus label,.adsk-viewing-viewer.dark-theme .adsk-label-button:hover label{background-color:#00bfff;color:#fff}.adsk-viewing-viewer.dark-theme .adsk-control-tooltip{background-color:rgba(34,34,34,.94);border-radius:3px;box-shadow:0 3px 5px rgba(0,0,0,.3);color:#f4f4f4;opacity:1}.adsk-viewing-viewer.dark-theme .docking-panel{box-shadow:1px 3px 10px 0 rgba(0,0,0,.4)}.adsk-viewing-viewer.dark-theme .docking-panel-delimiter-shadow{box-shadow:0 3px 5px 0 rgba(0,0,0,.1)}.adsk-viewing-viewer.dark-theme .docking-panel-title{background-color:rgba(34,34,34,.94);border-bottom:1px solid rgba(34,34,34,.8);color:#fff}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .docking-panel-title{border-bottom:1px solid #4a555b}.adsk-viewing-viewer.dark-theme .docking-panel-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjOTQ5NDlGIiBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGZpbGw9IiM5MzlDQTUiIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.dark-theme .docking-panel-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iI0JFQzhEMiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.dark-theme .docking-panel-footer{background-color:#222}.adsk-viewing-viewer.dark-theme .docking-panel-footer-resizer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjMDAwIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.dark-theme .docking-panel-footer-resizer:hover{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjMDAwIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjRDREQkUxIiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.dark-theme .docking-panel-primary-button{background-color:#06a7df;color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-primary-button.active,.adsk-viewing-viewer.dark-theme .docking-panel-primary-button:focus,.adsk-viewing-viewer.dark-theme .docking-panel-primary-button:hover{background-color:#00bfff;color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-secondary-button{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-secondary-button.active,.adsk-viewing-viewer.dark-theme .docking-panel-secondary-button:focus,.adsk-viewing-viewer.dark-theme .docking-panel-secondary-button:hover{background-color:#bec8d2;color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-tertiary-button{border:1px solid #939ca5;color:#939ca5}.adsk-viewing-viewer.dark-theme .docking-panel-tertiary-button.active,.adsk-viewing-viewer.dark-theme .docking-panel-tertiary-button:focus,.adsk-viewing-viewer.dark-theme .docking-panel-tertiary-button:hover{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-container-solid-color-a{background-color:rgba(34,34,34,.9)}.adsk-viewing-viewer.dark-theme .docking-panel-container-solid-color-b{background-color:rgba(34,34,34,.94)}.adsk-viewing-viewer.dark-theme .docking-panel-container-solid-color-c{background-color:rgba(34,34,34,.4)}.adsk-viewing-viewer.dark-theme .docking-panel-container-gradient{background:repeating-linear-gradient(rgba(34,34,34,.2),rgba(34,34,34,.2) 36px,rgba(34,34,34,0) 0,rgba(34,34,34,0) 72px)}.adsk-viewing-viewer.dark-theme .docking-panel-textbox{background-color:transparent;border:1px solid #494849;color:#ccc}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .adsk-lmv-tftable tr td:first-child div{color:#f3f7fb!important}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .adsk-lmv-tftable tr td:first-child .switch-slider-row-beta-label{color:#3c3c3c!important}.adsk-viewing-viewer.dark-theme .adsk-lmv-tftable tr.logical-group{background-color:rgba(34,34,34,.4)}.adsk-viewing-viewer.dark-theme .adsk-lmv-tftable tr.logical-group td div{color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-scroll::-webkit-scrollbar-track{background:none}.adsk-viewing-viewer.dark-theme .docking-panel-scroll::-webkit-scrollbar-thumb{background:#939ca5}.adsk-viewing-viewer.dark-theme .docking-panel-scroll::-webkit-scrollbar-thumb:hover{background:#bec8d2}.adsk-viewing-viewer.dark-theme .docking-panel-scroll::-webkit-resizer{background-color:rgba(30,30,30,.8)}.adsk-viewing-viewer.dark-theme .docking-pane-scroll::-webkit-scrollbar-corner{background-color:rgba(0,0,0,.2)}.adsk-viewing-viewer.dark-theme .adsk-filterbox input.filter-box,.adsk-viewing-viewer.dark-theme .adsk-searchbox input.search-box{background:rgba(34,34,34,.94);border:1px solid transparent;border-bottom-color:rgba(34,34,34,.8);color:#fff}.adsk-viewing-viewer.dark-theme .adsk-filterbox input.filter-box:focus,.adsk-viewing-viewer.dark-theme .adsk-searchbox input.search-box:focus{border:1px solid #1dc6f2}.adsk-viewing-viewer.dark-theme .adsk-searchbox .search-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBBNS43MiA1LjcyIDAgMCAwIDEuNjggMS42OCA1LjcyIDUuNzIgMCAwIDAgMCA1LjcyNCA1LjcyIDUuNzIgMCAwIDAgMS42OCA5Ljc3YTUuNzIgNS43MiAwIDAgMCA0LjA0NSAxLjY4QTUuNiA1LjYgMCAwIDAgOS40NjUgMTBsMi44MjQgMi44MjRjLjA3Ny4wNzYuMTUzLjA3Ni4zMDYuMDc2LjE1MiAwIC4yMjkgMCAuMzA1LS4wNzYuMDc2LS4wNzcuMDc2LS4zODIgMC0uNTM1Ii8+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .adsk-searchbox .search-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzFEQzZGMiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.dark-theme .adsk-filterbox .filter-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzk3OTc5NyIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .adsk-filterbox .filter-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwQkZGRiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .adsk-filterbox .filter-box-close,.adsk-viewing-viewer.dark-theme .adsk-searchbox .search-box-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Zz48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iIzkzOUNBNSIvPjxwYXRoIGZpbGw9IiMzNjM2MzYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiMzNjM2MzYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .adsk-filterbox .filter-box-close:hover,.adsk-viewing-viewer.dark-theme .adsk-searchbox .search-box-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Zz48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI0JFQzhEMiIvPjxwYXRoIGZpbGw9IiMzNjM2MzYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiMzNjM2MzYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel .selected{background-color:#353d41}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel>div[lmv-nodeid]:hover{background-color:rgba(0,0,0,.4)}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel .search-match{color:#1dc6f2}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel .search-path{color:#bec8d2}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel .no-results-title{color:#f3f3f3}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel .no-results-description{color:#bec8d2}.adsk-viewing-viewer.dark-theme .loading-spinner path{stroke:#00bfff;fill:transparent}.adsk-viewing-viewer.dark-theme .loading-spinner path:first-child{stroke:#4a555b}.adsk-viewing-viewer.dark-theme .loading-spinner .message{color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel.menu .menu-item:hover{background:rgba(0,0,0,.4)}.adsk-viewing-viewer.dark-theme .docking-panel.menu .menu-divider{background-color:#666}.adsk-viewing-viewer.dark-theme .viewer-settings-panel.docking-panel .settings-tabs span{color:#fff}.adsk-viewing-viewer.dark-theme .viewer-settings-panel.docking-panel .settings-tabs span:hover{color:#1dc6f2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel.docking-panel .settings-tabs .tabselected span{border-color:#1dc6f2;color:#1dc6f2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-environment-cell{border:1px solid #4a555b}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-environment-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-environment-cell.border-select{border:1px solid #1dc6f2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-environment-name{color:#bec8d2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-cell{border:1px solid #4a555b}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-cell.border-select{border:1px solid #1dc6f2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-description,.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-name{color:#bec8d2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .docking-panel-tertiary-button:active{background-color:#4a555b;border:1px solid #4a555b}.adsk-viewing-viewer.dark-theme .switch .slider,.adsk-viewing-viewer.dark-theme .switch .slider:before{background-color:#d9e1e9}.adsk-viewing-viewer.dark-theme .switch input:checked+.slider:before{background-color:#1dc6f2}.adsk-viewing-viewer.dark-theme .layers-panel .visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTIuNDc0LjgyM2MuOTM2LjM5MyAxLjgxLjkyIDIuNTkyIDEuNTY2YTguOCA4LjggMCAwIDEgMS43ODIgMi4yMTQgNy4xIDcuMSAwIDAgMS0xLjU2NiAyLjQzIDkuMSA5LjEgMCAwIDEtMi41MzggMS42NzRjLTEuMzgzLjU4Ny0yLjg3Mi44OC00LjM3NC44NjRhMTAuMyAxMC4zIDAgMCAxLTQuMzItLjcwMiA4LjQgOC40IDAgMCAxLTIuNTM4LTEuNjJBNy4xIDcuMSAwIDAgMSAwIDQuNzY1YTkuMSA5LjEgMCAwIDEgMS43ODItMi40M0E5LjUgOS41IDAgMCAxIDQuMzc0LjcxNWE5LjIgOS4yIDAgMCAxIDQuMDUtLjcwMmMxLjM5LjAwNiAyLjc2NS4yODEgNC4wNS44MU04LjUzMiA4LjA2Yy40MjgtLjAwNC44NS0uMDk2IDEuMjQyLS4yNy4zODMtLjE2Ny43My0uNDA2IDEuMDI2LS43MDIuNjEtLjYxNi45NC0xLjQ1NS45MTgtMi4zMjJhMy4xOSAzLjE5IDAgMCAwLS45MTgtMi4yNjggMy40IDMuNCAwIDAgMC0xLjAyNi0uNzAyIDMuMjQgMy4yNCAwIDAgMC0yLjUzOCAwYy0uMzgzLjE2OC0uNzMuNDA2LTEuMDI2LjcwMmEzLjE5IDMuMTkgMCAwIDAtLjkxOCAyLjMyMmMuMDA2LjQyOC4wOTcuODUuMjcgMS4yNDIuMTY2LjM4NS40MDQuNzMzLjcwMiAxLjAyNmEzLjMgMy4zIDAgMCAwIDIuMjY4Ljk3Mm0xLjg5LTMuMjk0YTEuOCAxLjggMCAwIDAtLjE2Mi0uNzAyIDEuOSAxLjkgMCAwIDAtLjM3OC0uNTk0IDEuOCAxLjggMCAwIDAtLjU5NC0uMzc4bC0uNzAyLS4xNjItLjcwMi4xNjJhMS44NCAxLjg0IDAgMCAwLS45NzIuOTcyIDEuODQgMS44NCAwIDAgMCAwIDEuNDU4Yy4xNzMuNDI4LjUuNzc1LjkxOC45NzJsLjcwMi4xNjIuNzAyLS4xNjJjLjIyLS4wODYuNDIyLS4yMTQuNTk0LS4zNzguMTYxLS4xNzMuMjktLjM3NC4zNzgtLjU5NC4xMDktLjIzNy4xNjQtLjQ5NS4xNjItLjc1NnoiLz48L3N2Zz4=);opacity:.7}.adsk-viewing-viewer.dark-theme .layers-panel .visibility.dim{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNSI+PHBhdGggZmlsbD0iI0Y0RjRGNCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuMzIyLjU5NGEuNjQuNjQgMCAwIDAtLjkyNCAwTDEwLjM2MiAzLjYzYy0uNzkyLS4xOTgtMS41ODQtLjM5Ni0yLjQ0Mi0uMzk2LTMuNTY0IDAtNi42IDIuMTc4LTcuOTIgNC44MTguNTk0IDEuMTg4IDEuNTg0IDIuMzEgMi43NzIgMy4xNjhsLTIuMzEgMi4zMWEuNjQuNjQgMCAwIDAgMCAuOTI0Yy4yNjQuMjY0LjY2LjI2NC45MjQgMEwxNC4zMjIgMS41MThhLjY0LjY0IDAgMCAwIDAtLjkyNG0tOS41NyA3LjQ1OEEzLjE3IDMuMTcgMCAwIDEgNy45MiA0Ljg4NGMuMzMgMCAuNzI2LjA2Ni45OS4xOThsLS44NTguODU4aC0uMTk4Yy0xLjE4OCAwLTIuMTc4Ljk5LTIuMTc4IDIuMTc4di4xOThsLS44NTguODU4YzAtLjM5Ni0uMDY2LS43OTItLjA2Ni0xLjEyMk03LjkyIDEwLjIzYzEuMTg4IDAgMi4xNzgtLjk5IDIuMTc4LTIuMTc4IDAtLjE5OC0uMDY2LS4zOTYtLjEzMi0uNjZMNy4yNiAxMC4wOThjLjI2NC4wNjYuNDYyLjEzMi42Ni4xMzJtNy45Mi0yLjE3OGMtLjY2LTEuMzItMS43ODItMi41MDgtMy4xMDItMy4zNjZsLTEuOTggMS45OGMuMTk4LjM5Ni4zMy45MjQuMzMgMS4zODZBMy4xNyAzLjE3IDAgMCAxIDcuOTIgMTEuMjJjLS41MjggMC0uOTktLjEzMi0xLjM4Ni0uMzNsLTEuNDUyIDEuNDUyYy44NTguMzMgMS44NDguNTI4IDIuODM4LjUyOCAzLjU2NCAwIDYuNi0yLjE3OCA3LjkyLTQuODE4Ii8+PC9zdmc+);opacity:.3}.adsk-viewing-viewer.dark-theme .property-panel .no-properties{color:#eee}.adsk-viewing-viewer.dark-theme .property-panel .property-name{color:#f3f7fb}.adsk-viewing-viewer.dark-theme .property-panel .property-value{color:#e4e9ee}.adsk-viewing-viewer.dark-theme .property-panel .property-drop-down{background:rgba(0,0,0,.25);color:#f3f7fb}.adsk-viewing-viewer.dark-theme .property-panel .property-drop-down>option{background:rgba(0,0,0,.75)}.adsk-viewing-viewer.dark-theme .model-structure-panel .lmv-no-properties{color:#eee}.adsk-viewing-viewer.dark-theme .bimwalk .c-bimwalk-tooltip{background-color:#393939}.adsk-viewing-viewer.dark-theme .bimwalk .bimwalk-guide-dark-theme{display:block}.adsk-viewing-viewer.dark-theme .bimwalk .bimwalk-guide-light-theme{display:none}.adsk-viewing-viewer.dark-theme .bimwalk .bimwalk-tooltip-or{color:#fff}.adsk-viewing-viewer.dark-theme .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .adsk-button.active .toolbar-animation-play-icon,.adsk-viewing-viewer.dark-theme .adsk-button:focus .toolbar-animation-play-icon,.adsk-viewing-viewer.dark-theme .adsk-button:hover .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .adsk-button.active .toolbar-animation-pause-icon,.adsk-viewing-viewer.dark-theme .adsk-button:focus .toolbar-animation-pause-icon,.adsk-viewing-viewer.dark-theme .adsk-button:hover .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .adsk-button.active .toolbar-animation-backward-icon,.adsk-viewing-viewer.dark-theme .adsk-button:focus .toolbar-animation-backward-icon,.adsk-viewing-viewer.dark-theme .adsk-button:hover .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .adsk-button.active .toolbar-animation-forward-icon,.adsk-viewing-viewer.dark-theme .adsk-button:focus .toolbar-animation-forward-icon,.adsk-viewing-viewer.dark-theme .adsk-button:hover .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .treeview .group,.adsk-viewing-viewer.dark-theme .treeview .leaf,.adsk-viewing-viewer.dark-theme .treeview group,.adsk-viewing-viewer.dark-theme .treeview leaf{color:#fff}.adsk-viewing-viewer.dark-theme .treeview .group.selected label,.adsk-viewing-viewer.dark-theme .treeview .leaf.selected label,.adsk-viewing-viewer.dark-theme .treeview group.selected label,.adsk-viewing-viewer.dark-theme .treeview group.selected-ex>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview leaf.selected label,.adsk-viewing-viewer.dark-theme .treeview leaf.selected-ex>lmvheader>label{color:#1dc7f3!important}.adsk-viewing-viewer .treeview .leaf.property{color:#f3f7fb}.adsk-viewing-viewer.dark-theme .treeview .group.category>lmvheader,.adsk-viewing-viewer.dark-theme .treeview group.category>lmvheader{background-color:rgba(34,34,34,.2)}.adsk-viewing-viewer.dark-theme .treeview .group>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview .leaf>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview group>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview leaf>lmvheader>label{color:#fff}.adsk-viewing-viewer.dark-theme .treeview .group>lmvheader:hover,.adsk-viewing-viewer.dark-theme .treeview .leaf>lmvheader:hover,.adsk-viewing-viewer.dark-theme .treeview group>lmvheader:hover,.adsk-viewing-viewer.dark-theme .treeview leaf>lmvheader:hover{background:rgba(0,0,0,.4)!important}.adsk-viewing-viewer.dark-theme .treeview .group.dim>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview .leaf.dim>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview group.dim>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview leaf.dim>lmvheader>label{color:hsla(0,0%,93%,.3)}.adsk-viewing-viewer.dark-theme .treeview div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTIuNDc0LjgyM2MuOTM2LjM5MyAxLjgxLjkyIDIuNTkyIDEuNTY2YTguOCA4LjggMCAwIDEgMS43ODIgMi4yMTQgNy4xIDcuMSAwIDAgMS0xLjU2NiAyLjQzIDkuMSA5LjEgMCAwIDEtMi41MzggMS42NzRjLTEuMzgzLjU4Ny0yLjg3Mi44OC00LjM3NC44NjRhMTAuMyAxMC4zIDAgMCAxLTQuMzItLjcwMiA4LjQgOC40IDAgMCAxLTIuNTM4LTEuNjJBNy4xIDcuMSAwIDAgMSAwIDQuNzY1YTkuMSA5LjEgMCAwIDEgMS43ODItMi40M0E5LjUgOS41IDAgMCAxIDQuMzc0LjcxNWE5LjIgOS4yIDAgMCAxIDQuMDUtLjcwMmMxLjM5LjAwNiAyLjc2NS4yODEgNC4wNS44MU04LjUzMiA4LjA2Yy40MjgtLjAwNC44NS0uMDk2IDEuMjQyLS4yNy4zODMtLjE2Ny43My0uNDA2IDEuMDI2LS43MDIuNjEtLjYxNi45NC0xLjQ1NS45MTgtMi4zMjJhMy4xOSAzLjE5IDAgMCAwLS45MTgtMi4yNjggMy40IDMuNCAwIDAgMC0xLjAyNi0uNzAyIDMuMjQgMy4yNCAwIDAgMC0yLjUzOCAwYy0uMzgzLjE2OC0uNzMuNDA2LTEuMDI2LjcwMmEzLjE5IDMuMTkgMCAwIDAtLjkxOCAyLjMyMmMuMDA2LjQyOC4wOTcuODUuMjcgMS4yNDIuMTY2LjM4NS40MDQuNzMzLjcwMiAxLjAyNmEzLjMgMy4zIDAgMCAwIDIuMjY4Ljk3Mm0xLjg5LTMuMjk0YTEuOCAxLjggMCAwIDAtLjE2Mi0uNzAyIDEuOSAxLjkgMCAwIDAtLjM3OC0uNTk0IDEuOCAxLjggMCAwIDAtLjU5NC0uMzc4bC0uNzAyLS4xNjItLjcwMi4xNjJhMS44NCAxLjg0IDAgMCAwLS45NzIuOTcyIDEuODQgMS44NCAwIDAgMCAwIDEuNDU4Yy4xNzMuNDI4LjUuNzc1LjkxOC45NzJsLjcwMi4xNjIuNzAyLS4xNjJjLjIyLS4wODYuNDIyLS4yMTQuNTk0LS4zNzguMTYxLS4xNzMuMjktLjM3NC4zNzgtLjU5NC4xMDktLjIzNy4xNjQtLjQ5NS4xNjItLjc1NnoiLz48L3N2Zz4=);background-position:6px 12px;background-repeat:no-repeat;border:none;height:100%;margin:0;opacity:.7;outline:none;padding:0;position:absolute;right:0;top:0;width:35px}.adsk-viewing-viewer.dark-theme .treeview div.visibility:hover{filter:drop-shadow(0 0 0 #fff)}.adsk-viewing-viewer.dark-theme .treeview .dim div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNSI+PHBhdGggZmlsbD0iI0Y0RjRGNCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuMzIyLjU5NGEuNjQuNjQgMCAwIDAtLjkyNCAwTDEwLjM2MiAzLjYzYy0uNzkyLS4xOTgtMS41ODQtLjM5Ni0yLjQ0Mi0uMzk2LTMuNTY0IDAtNi42IDIuMTc4LTcuOTIgNC44MTguNTk0IDEuMTg4IDEuNTg0IDIuMzEgMi43NzIgMy4xNjhsLTIuMzEgMi4zMWEuNjQuNjQgMCAwIDAgMCAuOTI0Yy4yNjQuMjY0LjY2LjI2NC45MjQgMEwxNC4zMjIgMS41MThhLjY0LjY0IDAgMCAwIDAtLjkyNG0tOS41NyA3LjQ1OEEzLjE3IDMuMTcgMCAwIDEgNy45MiA0Ljg4NGMuMzMgMCAuNzI2LjA2Ni45OS4xOThsLS44NTguODU4aC0uMTk4Yy0xLjE4OCAwLTIuMTc4Ljk5LTIuMTc4IDIuMTc4di4xOThsLS44NTguODU4YzAtLjM5Ni0uMDY2LS43OTItLjA2Ni0xLjEyMk03LjkyIDEwLjIzYzEuMTg4IDAgMi4xNzgtLjk5IDIuMTc4LTIuMTc4IDAtLjE5OC0uMDY2LS4zOTYtLjEzMi0uNjZMNy4yNiAxMC4wOThjLjI2NC4wNjYuNDYyLjEzMi42Ni4xMzJtNy45Mi0yLjE3OGMtLjY2LTEuMzItMS43ODItMi41MDgtMy4xMDItMy4zNjZsLTEuOTggMS45OGMuMTk4LjM5Ni4zMy45MjQuMzMgMS4zODZBMy4xNyAzLjE3IDAgMCAxIDcuOTIgMTEuMjJjLS41MjggMC0uOTktLjEzMi0xLjM4Ni0uMzNsLTEuNDUyIDEuNDUyYy44NTguMzMgMS44NDguNTI4IDIuODM4LjUyOCAzLjU2NCAwIDYuNi0yLjE3OCA3LjkyLTQuODE4Ii8+PC9zdmc+);background-position:6px 9px;opacity:.3}.adsk-viewing-viewer.dark-theme .treeview .view lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-repeat:no-repeat;display:inline;padding:0 11px}.adsk-viewing-viewer.dark-theme .treeview .collapsed>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.dark-theme .treeview .expanded>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjcxOS44OTggMCAuODJsNS4wOTIgNS4wOTIiLz48L3N2Zz4=);cursor:zoom-out}.adsk-viewing-viewer.dark-theme .treeview .expanded.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05Ljg0Ny44OTguMTMuODIgNS4yMiA1LjkxMyIvPjwvc3ZnPg==);cursor:zoom-out}.adsk-viewing-viewer.dark-theme .treeview .collapsed.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.dark-theme .settings-tabs ul{box-shadow:0 1px 10px 0 rgba(0,0,0,.2)}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-environment-image{border:1px solid #4a555b!important}.adsk-viewing-viewer.dark-theme .propertysearch-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCA1OC4zNzEgNTguMzcxIj48cGF0aCBkPSJtNTUuODMzIDU2LjY3OS01Ljk2OS02LjI0M2ExMC43NCAxMC43NCAwIDAgMCAyLjgyLTcuMjVjMC01Ljk1My00Ljg0My0xMC43OTYtMTAuNzk2LTEwLjc5NnMtMTAuNzk2IDQuODQzLTEwLjc5NiAxMC43OTYgNC44NDMgMTAuNzk2IDEwLjc5NiAxMC43OTZjMi40NDIgMCA0LjY4OS0uODI0IDYuNS0yLjE5Nmw2IDYuMjc2YTEgMSAwIDAgMCAxLjQxNC4wMzIgMSAxIDAgMCAwIC4wMzEtMS40MTVNMzMuMDkyIDQzLjE4NmMwLTQuODUgMy45NDYtOC43OTYgOC43OTYtOC43OTZzOC43OTYgMy45NDYgOC43OTYgOC43OTYtMy45NDYgOC43OTYtOC43OTYgOC43OTYtOC43OTYtMy45NDYtOC43OTYtOC43OTZNMjguMDk2IDQzLjFjLjAyNS00LjAyOSAxLjc5My03LjY0NCA0LjU3OC0xMC4xNTMtLjkxMS4wNTQtMS44NDQuMDk3LTIuODA3LjEyM2E4NCA4NCAwIDAgMS01LjIyLS4wMDFjLTcuMzQxLS4yMDEtMTMuMTkxLTEuMjM4LTE3LjQwMy0yLjcxNy0xLjk4LS42NjctMy42NzUtMS40NTMtNC45ODMtMi4zNTJ2OS40YzIuODQ2IDIuOTcxIDEyLjM5NCA1LjcxMSAyNSA1LjcxMS4yODMgMCAuNTU1LS4wMDguODM1LS4wMTFNMjQuODk2IDI5Ljk2NXEuNDg3LjAxNC45ODIuMDIzYTc5IDc5IDAgMCAwIDIuNzY2LjAwMXEuNDk0LS4wMS45ODItLjAyM2wuMzQ5LS4wMDhjMTEuMjUzLS4zNTkgMTkuNjQ4LTIuOTE1IDIyLjI4Ni01LjY2OHYtOS40MDFDNDcuMzkzIDE4LjIzMiAzNy4xMDUgMjAgMjcuMjYxIDIwcy0yMC4xMzMtMS43NjgtMjUtNS4xMTF2OS40YzIuNjM4IDIuNzU0IDExLjAzMyA1LjMxIDIyLjI4NiA1LjY2OHoiLz48cGF0aCBkPSJNNTIuMjYxIDExLjMwNlY5YS45LjkgMCAwIDAtLjEzNS0uNDU4QzUxLjAwMyA0LjI0MSA0Mi4zNzYgMCAyNy4yNjEgMCAxMi4xODMgMCAzLjU2NCA0LjIyIDIuNDA3IDguNTFhLjk3Ljk3IDAgMCAwLS4xNDYuNDl2Mi4zMDZDNS4wOTcgMTQuMjY3IDE0LjU3NyAxNyAyNy4yNjEgMTdzMjIuMTYzLTIuNzMzIDI1LTUuNjk0TTI4LjQzIDQ2LjE4N2MtLjM5LjAwNS0uNzcyLjAxNC0xLjE3LjAxNC0xMi4zNDYgMC0yMC44NjYtMi4yOS0yNS01LjIwMXY4LjIwMWEuOTQuOTQgMCAwIDAgLjExNy40NTFjMS4xODEgNC44OTUgMTEuNzQ3IDguNTQ5IDI0Ljg4MyA4LjU0OSA0Ljc2NCAwIDkuMTgyLS40ODYgMTIuOTQ1LTEuMzMyLTUuODE2LS43MTItMTAuNTE5LTUuMDUtMTEuNzc1LTEwLjY4MiIvPjwvc3ZnPg==);filter:invert(1)}.adsk-viewing-viewer.dark-theme .docking-panel.menu .menu-item-expand{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==)}.adsk-viewing-viewer.dark-theme .progresslb{color:#000}.adsk-viewing-viewer.dark-theme .hyperlink-container{filter:drop-shadow(0 3px 5px rgba(0,0,0,.3))}.adsk-viewing-viewer.dark-theme .hyperlink-container .docking-panel{box-shadow:none}.adsk-viewing-viewer.dark-theme .hyperlink-container-triangle{border-right:19px solid rgba(34,34,34,.9)}.adsk-viewing-viewer.dark-theme .hyperlink-back-closer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:100;src:local("Artifakt Element Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Hair.woff2) format("woff2"),local("Artifakt Element Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Hair.woff) format("woff"),local("Artifakt Element Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Hair.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:200;src:local("Artifakt Element Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Thin.woff2) format("woff2"),local("Artifakt Element Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Thin.woff) format("woff"),local("Artifakt Element Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Thin.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:300;src:local("Artifakt Element Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Light.woff2) format("woff2"),local("Artifakt Element Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Light.woff) format("woff"),local("Artifakt Element Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Light.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:400;src:local("Artifakt Element Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Regular.woff2) format("woff2"),local("Artifakt Element Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Regular.woff) format("woff"),local("Artifakt Element Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Regular.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:500;src:local("Artifakt Element Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Book.woff2) format("woff2"),local("Artifakt Element Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Book.woff) format("woff"),local("Artifakt Element Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Book.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:600;src:local("Artifakt Element Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Medium.woff2) format("woff2"),local("Artifakt Element Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Medium.woff) format("woff"),local("Artifakt Element Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Medium.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:700;src:local("Artifakt Element Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Bold.woff2) format("woff2"),local("Artifakt Element Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Bold.woff) format("woff"),local("Artifakt Element Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Bold.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:800;src:local("Artifakt Element Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Black.woff2) format("woff2"),local("Artifakt Element Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Black.woff) format("woff"),local("Artifakt Element Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Black.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:900;src:local("Artifakt Element Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Heavy.woff2) format("woff2"),local("Artifakt Element Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Heavy.woff) format("woff"),local("Artifakt Element Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Heavy.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:100;src:local("Artifakt Legend Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Hair%20Italic.woff2) format("woff2"),local("Artifakt Legend Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Hair%20Italic.woff) format("woff"),local("Artifakt Legend Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Hair%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:200;src:local("Artifakt Legend Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Thin%20Italic.woff2) format("woff2"),local("Artifakt Legend Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Thin%20Italic.woff) format("woff"),local("Artifakt Legend Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Thin%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:300;src:local("Artifakt Legend Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Light%20Italic.woff2) format("woff2"),local("Artifakt Legend Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Light%20Italic.woff) format("woff"),local("Artifakt Legend Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Light%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:italic;src:local("Artifakt Legend Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Regular%20Italic.woff2) format("woff2"),local("Artifakt Legend Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Regular%20Italic.woff) format("woff"),local("Artifakt Legend Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Regular%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:500;src:local("Artifakt Legend Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Book%20Italic.woff2) format("woff2"),local("Artifakt Legend Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Book%20Italic.woff) format("woff"),local("Artifakt Legend Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Book%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:600;src:local("Artifakt Legend Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Medium%20Italic.woff2) format("woff2"),local("Artifakt Legend Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Medium%20Italic.woff) format("woff"),local("Artifakt Legend Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Medium%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:700;src:local("Artifakt Legend Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Bold%20Italic.woff2) format("woff2"),local("Artifakt Legend Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Bold%20Italic.woff) format("woff"),local("Artifakt Legend Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Bold%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:800;src:local("Artifakt Legend Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Black%20Italic.woff2) format("woff2"),local("Artifakt Legend Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Black%20Italic.woff) format("woff"),local("Artifakt Legend Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Black%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:900;src:local("Artifakt Legend Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Heavy%20Italic.woff2) format("woff2"),local("Artifakt Legend Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Heavy%20Italic.woff) format("woff"),local("Artifakt Legend Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Heavy%20Italic.ttf) format("truetype")}.adsk-viewing-viewer.light-theme{color:#0a131c;font-size:14px}.adsk-viewing-viewer.light-theme.quality-text{text-rendering:geometricPrecision}.adsk-viewing-viewer.light-theme .viewcube{color:#000}.adsk-viewing-viewer.dark-theme .property-drop-down,.adsk-viewing-viewer.light-theme .adsk-lmv-tftable input,.adsk-viewing-viewer.light-theme .option-drop-down{background-color:#fff;border:1px solid #d5dbe1;color:#000}.adsk-viewing-viewer.light-theme .adsk-control-group{background-color:#fff;box-shadow:1px 3px 10px 0 rgba(0,0,0,.5);color:#0a131c}.adsk-viewing-viewer.light-theme .adsk-button:hover{border:1px solid #00bfff;color:#00bfff}.adsk-viewing-viewer.light-theme .adsk-button.active,.adsk-viewing-viewer.light-theme .adsk-button:focus{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(0,0,0,.6);color:#00bfff;outline:none}.adsk-viewing-viewer.light-theme .adsk-label-button.active,.adsk-viewing-viewer.light-theme .adsk-label-button:focus,.adsk-viewing-viewer.light-theme .adsk-label-button:hover{border:1px solid transparent}.adsk-viewing-viewer.light-theme .adsk-label-button label{background-color:#06a7df;color:#fff}.adsk-viewing-viewer.light-theme .adsk-label-button.active label,.adsk-viewing-viewer.light-theme .adsk-label-button:focus label,.adsk-viewing-viewer.light-theme .adsk-label-button:hover label{background-color:#00bfff;color:#fff}.adsk-viewing-viewer.light-theme .adsk-control-tooltip{background-color:hsla(0,0%,100%,.94);border-radius:3px;box-shadow:0 3px 5px 0 rgba(0,0,0,.1);color:#0a131c;opacity:1}.adsk-viewing-viewer.light-theme .docking-panel{box-shadow:1px 3px 10px 0 rgba(0,0,0,.4)}.adsk-viewing-viewer.light-theme .docking-panel-delimiter-shadow{box-shadow:0 3px 5px 0 rgba(0,0,0,.1)}.adsk-viewing-viewer.light-theme .docking-panel-title{background-color:#fff;border-bottom:1px solid rgba(0,0,0,.2);color:#0a131c}.adsk-viewing-viewer.light-theme .docking-panel-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.light-theme .docking-panel-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.light-theme .docking-panel-footer-resizer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjOTM5Q0E1IiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.light-theme .docking-panel-footer-resizer:hover{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjNEE1NTVCIiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.light-theme .docking-panel-button{border:1px solid #d5dbe1;color:#4a555b}.adsk-viewing-viewer.light-theme .docking-panel-primary-button{background-color:#06a7df;color:#fff}.adsk-viewing-viewer.light-theme .docking-panel-primary-button.active,.adsk-viewing-viewer.light-theme .docking-panel-primary-button:focus,.adsk-viewing-viewer.light-theme .docking-panel-primary-button:hover{background-color:#00bfff;color:#fff}.adsk-viewing-viewer.light-theme .docking-panel-secondary-button{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.light-theme .docking-panel-secondary-button.active,.adsk-viewing-viewer.light-theme .docking-panel-secondary-button:focus,.adsk-viewing-viewer.light-theme .docking-panel-secondary-button:hover{background-color:#bec8d2;color:#fff}.adsk-viewing-viewer.light-theme .docking-panel-tertiary-button{border:1px solid #939ca5;color:#939ca5}.adsk-viewing-viewer.light-theme .docking-panel-tertiary-button.active,.adsk-viewing-viewer.light-theme .docking-panel-tertiary-button:focus,.adsk-viewing-viewer.light-theme .docking-panel-tertiary-button:hover{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.light-theme .docking-panel-footer{background-color:#fff;border-top:1px solid rgba(0,0,0,.2)}.adsk-viewing-viewer.light-theme .docking-panel-container-solid-color-a{background-color:hsla(0,0%,100%,.94)}.adsk-viewing-viewer.light-theme .docking-panel-container-solid-color-b{background-color:hsla(0,0%,100%,.98)}.adsk-viewing-viewer.light-theme .docking-panel-container-solid-color-c{background-color:#ecf0f3}.adsk-viewing-viewer.light-theme .docking-panel-container-gradient{background:repeating-linear-gradient(rgba(242,247,250,.7),rgba(242,247,250,.7) 36px,rgba(242,247,250,0) 0,rgba(242,247,250,0) 72px)}.adsk-viewing-viewer.light-theme .docking-panel-textbox{background-color:transparent;border:1px solid #d5dbe1}.adsk-viewing-viewer.light-theme .adsk-lmv-tftable tr td div{color:#4a555b}.adsk-viewing-viewer.light-theme .adsk-lmv-tftable tr.logical-group{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.light-theme .adsk-lmv-tftable tr.logical-group td div{color:#0a131c}.adsk-viewing-viewer.light-theme .docking-panel-scroll::-webkit-scrollbar-track{background:none}.adsk-viewing-viewer.light-theme .docking-panel-scroll::-webkit-scrollbar-thumb{background:#bec8d2}.adsk-viewing-viewer.light-theme .docking-panel-scroll::-webkit-scrollbar-thumb:hover{background:#939ca5}.adsk-viewing-viewer.light-theme .docking-panel-scroll::-webkit-resizer{background-color:rgba(30,30,30,.8)}.adsk-viewing-viewer.light-theme .docking-pane-scroll::-webkit-scrollbar-corner{background-color:rgba(0,0,0,.2)}.adsk-viewing-viewer.light-theme .adsk-filterbox input.filter-box,.adsk-viewing-viewer.light-theme .adsk-searchbox input.search-box{background:#fff;border:1px solid transparent;color:#0a131c}.adsk-viewing-viewer.light-theme .adsk-filterbox input.filter-box:focus,.adsk-viewing-viewer.light-theme .adsk-searchbox input.search-box:focus{border:1px solid #1dc6f2}.adsk-viewing-viewer.light-theme .adsk-searchbox .search-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.light-theme .adsk-searchbox .search-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzFEQzZGMiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.light-theme .adsk-filterbox .filter-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzk3OTc5NyIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-filterbox .filter-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwQkZGRiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-filterbox .filter-box-close,.adsk-viewing-viewer.light-theme .adsk-searchbox .search-box-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI0JFQzhEMiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-filterbox .filter-box-close:hover,.adsk-viewing-viewer.light-theme .adsk-searchbox .search-box-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iIzkzOUNBNSIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel .selected{background-color:#f2f7fa}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel>div[lmv-nodeid]:hover{background-color:rgba(0,191,255,.2)}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel .search-match{color:#1dc6f2}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel .search-path{color:#939ca5}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel .no-results-title{color:#000}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel .no-results-description{color:#939ca5}.adsk-viewing-viewer.light-theme .loading-spinner path{stroke:#00bfff;fill:transparent}.adsk-viewing-viewer.light-theme .loading-spinner path:first-child{stroke:#ecf0f3}.adsk-viewing-viewer.light-theme .loading-spinner .message{color:#0a131c}.adsk-viewing-viewer.light-theme .docking-panel.menu .menu-item:hover{background:rgba(0,191,255,.2)}.adsk-viewing-viewer.light-theme .docking-panel.menu .menu-divider{background-color:#666}.adsk-viewing-viewer.light-theme .viewer-settings-panel.docking-panel .settings-tabs span{color:#0a131c}.adsk-viewing-viewer.light-theme .viewer-settings-panel.docking-panel .settings-tabs span:hover{color:#1dc6f2}.adsk-viewing-viewer.light-theme .viewer-settings-panel.docking-panel .settings-tabs .tabselected span{border-color:#00bfff;color:#00bfff}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-environment-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-environment-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-environment-cell.border-select{border:1px solid #00bfff}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-cell.border-select{border:1px solid #00bfff}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-description,.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-environment-name,.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-name{color:#4a555b}.adsk-viewing-viewer.light-theme .viewer-settings-panel .docking-panel-tertiary-button:active{background-color:#4a555b;border:1px solid #4a555b}.adsk-viewing-viewer.light-theme .switch .slider,.adsk-viewing-viewer.light-theme .switch .slider:before{background-color:#d9e1e9}.adsk-viewing-viewer.light-theme .switch input:checked+.slider:before{background-color:#00bfff}.adsk-viewing-viewer.light-theme .layers-panel .visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);opacity:1}.adsk-viewing-viewer.light-theme .layers-panel .visibility.dim{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);opacity:1}.adsk-viewing-viewer.light-theme .property-panel .no-properties,.adsk-viewing-viewer.light-theme .property-panel .property-name{color:#4a555b}.adsk-viewing-viewer.light-theme .property-panel .property-value{color:#939ca5}.adsk-viewing-viewer.light-theme .property-panel .property-drop-down{background:hsla(0,0%,93%,.6);color:#4a555b}.adsk-viewing-viewer.light-theme .property-panel .property-drop-down>option{background:hsla(0,0%,93%,.75)}.adsk-viewing-viewer.light-theme .model-structure-panel .lmv-no-properties{color:#4a555b}.adsk-viewing-viewer.light-theme .bimwalk .c-bimwalk-tooltip{background-color:#fff}.adsk-viewing-viewer.light-theme .bimwalk .bimwalk-guide-dark-theme{display:none}.adsk-viewing-viewer.light-theme .bimwalk .bimwalk-guide-light-theme{display:block}.adsk-viewing-viewer.light-theme .bimwalk .bimwalk-tooltip-or{color:#939ca5}.adsk-viewing-viewer.light-theme .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-button.active .toolbar-animation-play-icon,.adsk-viewing-viewer.light-theme .adsk-button:focus .toolbar-animation-play-icon,.adsk-viewing-viewer.light-theme .adsk-button:hover .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.light-theme .adsk-button.active .toolbar-animation-pause-icon,.adsk-viewing-viewer.light-theme .adsk-button:focus .toolbar-animation-pause-icon,.adsk-viewing-viewer.light-theme .adsk-button:hover .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.light-theme .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-button.active .toolbar-animation-backward-icon,.adsk-viewing-viewer.light-theme .adsk-button:focus .toolbar-animation-backward-icon,.adsk-viewing-viewer.light-theme .adsk-button:hover .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.light-theme .adsk-button.active .toolbar-animation-forward-icon,.adsk-viewing-viewer.light-theme .adsk-button:focus .toolbar-animation-forward-icon,.adsk-viewing-viewer.light-theme .adsk-button:hover .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.light-theme .treeview .group,.adsk-viewing-viewer.light-theme .treeview .leaf,.adsk-viewing-viewer.light-theme .treeview group,.adsk-viewing-viewer.light-theme .treeview leaf{color:#0a131c}.adsk-viewing-viewer.light-theme .treeview .group.selected label,.adsk-viewing-viewer.light-theme .treeview .leaf.selected label,.adsk-viewing-viewer.light-theme .treeview group.selected label,.adsk-viewing-viewer.light-theme .treeview group.selected-ex>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview leaf.selected label,.adsk-viewing-viewer.light-theme .treeview leaf.selected-ex>lmvheader>label{color:#1dc7f3!important}.adsk-viewing-viewer.light-theme .treeview .group.category>lmvheader,.adsk-viewing-viewer.light-theme .treeview group.category>lmvheader{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.light-theme .treeview .group>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview .leaf>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview group>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview leaf>lmvheader>label{color:#0a131c}.adsk-viewing-viewer.light-theme .treeview .group>lmvheader:hover,.adsk-viewing-viewer.light-theme .treeview .leaf>lmvheader:hover,.adsk-viewing-viewer.light-theme .treeview group>lmvheader:hover,.adsk-viewing-viewer.light-theme .treeview leaf>lmvheader:hover{background:rgba(0,191,255,.2)!important}.adsk-viewing-viewer.light-theme .treeview .group.dim>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview .leaf.dim>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview group.dim>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview leaf.dim>lmvheader>label{color:#939ca5}.adsk-viewing-viewer.light-theme .treeview div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);background-position:6px 12px;background-repeat:no-repeat;border:none;height:100%;margin:0;opacity:1;outline:none;padding:0;position:absolute;right:0;top:0;width:35px}.adsk-viewing-viewer.light-theme .treeview div.visibility:hover{filter:drop-shadow(0 0 0 #fff)}.adsk-viewing-viewer.light-theme .treeview .dim div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);background-position:6px 9px;opacity:1}.adsk-viewing-viewer.light-theme .treeview .view lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-repeat:no-repeat;display:inline;padding:0 11px}.adsk-viewing-viewer.light-theme .treeview .collapsed>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjExIj48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4Ljc2LjgyIDEwLjQ3N2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.light-theme .treeview .expanded>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjcxOS40NjIgMCAuMzg2bDUuMDkyIDUuMDkyIi8+PC9zdmc+);cursor:zoom-out}.adsk-viewing-viewer.light-theme .treeview .expanded.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05Ljg0Ny44OTguMTMuODIgNS4yMiA1LjkxMyIvPjwvc3ZnPg==);cursor:zoom-out}.adsk-viewing-viewer.light-theme .treeview .collapsed.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-environment-image{border:1px solid #d4dbe1!important}.adsk-viewing-viewer.light-theme .propertysearch-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCA1OC4zNzEgNTguMzcxIj48cGF0aCBkPSJtNTUuODMzIDU2LjY3OS01Ljk2OS02LjI0M2ExMC43NCAxMC43NCAwIDAgMCAyLjgyLTcuMjVjMC01Ljk1My00Ljg0My0xMC43OTYtMTAuNzk2LTEwLjc5NnMtMTAuNzk2IDQuODQzLTEwLjc5NiAxMC43OTYgNC44NDMgMTAuNzk2IDEwLjc5NiAxMC43OTZjMi40NDIgMCA0LjY4OS0uODI0IDYuNS0yLjE5Nmw2IDYuMjc2YTEgMSAwIDAgMCAxLjQxNC4wMzIgMSAxIDAgMCAwIC4wMzEtMS40MTVNMzMuMDkyIDQzLjE4NmMwLTQuODUgMy45NDYtOC43OTYgOC43OTYtOC43OTZzOC43OTYgMy45NDYgOC43OTYgOC43OTYtMy45NDYgOC43OTYtOC43OTYgOC43OTYtOC43OTYtMy45NDYtOC43OTYtOC43OTZNMjguMDk2IDQzLjFjLjAyNS00LjAyOSAxLjc5My03LjY0NCA0LjU3OC0xMC4xNTMtLjkxMS4wNTQtMS44NDQuMDk3LTIuODA3LjEyM2E4NCA4NCAwIDAgMS01LjIyLS4wMDFjLTcuMzQxLS4yMDEtMTMuMTkxLTEuMjM4LTE3LjQwMy0yLjcxNy0xLjk4LS42NjctMy42NzUtMS40NTMtNC45ODMtMi4zNTJ2OS40YzIuODQ2IDIuOTcxIDEyLjM5NCA1LjcxMSAyNSA1LjcxMS4yODMgMCAuNTU1LS4wMDguODM1LS4wMTFNMjQuODk2IDI5Ljk2NXEuNDg3LjAxNC45ODIuMDIzYTc5IDc5IDAgMCAwIDIuNzY2LjAwMXEuNDk0LS4wMS45ODItLjAyM2wuMzQ5LS4wMDhjMTEuMjUzLS4zNTkgMTkuNjQ4LTIuOTE1IDIyLjI4Ni01LjY2OHYtOS40MDFDNDcuMzkzIDE4LjIzMiAzNy4xMDUgMjAgMjcuMjYxIDIwcy0yMC4xMzMtMS43NjgtMjUtNS4xMTF2OS40YzIuNjM4IDIuNzU0IDExLjAzMyA1LjMxIDIyLjI4NiA1LjY2OHoiLz48cGF0aCBkPSJNNTIuMjYxIDExLjMwNlY5YS45LjkgMCAwIDAtLjEzNS0uNDU4QzUxLjAwMyA0LjI0MSA0Mi4zNzYgMCAyNy4yNjEgMCAxMi4xODMgMCAzLjU2NCA0LjIyIDIuNDA3IDguNTFhLjk3Ljk3IDAgMCAwLS4xNDYuNDl2Mi4zMDZDNS4wOTcgMTQuMjY3IDE0LjU3NyAxNyAyNy4yNjEgMTdzMjIuMTYzLTIuNzMzIDI1LTUuNjk0TTI4LjQzIDQ2LjE4N2MtLjM5LjAwNS0uNzcyLjAxNC0xLjE3LjAxNC0xMi4zNDYgMC0yMC44NjYtMi4yOS0yNS01LjIwMXY4LjIwMWEuOTQuOTQgMCAwIDAgLjExNy40NTFjMS4xODEgNC44OTUgMTEuNzQ3IDguNTQ5IDI0Ljg4MyA4LjU0OSA0Ljc2NCAwIDkuMTgyLS40ODYgMTIuOTQ1LTEuMzMyLTUuODE2LS43MTItMTAuNTE5LTUuMDUtMTEuNzc1LTEwLjY4MiIvPjwvc3ZnPg==)}.adsk-viewing-viewer.light-theme .docking-panel.menu .menu-item-expand{background-image:url(data:image/png;base64,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)}.adsk-viewing-viewer.light-theme .hyperlink-container{filter:drop-shadow(0 3px 5px rgba(0,0,0,.3))}.adsk-viewing-viewer.light-theme .hyperlink-container .docking-panel{box-shadow:none}.adsk-viewing-viewer.light-theme .hyperlink-container-triangle{border-right:19px solid hsla(0,0%,100%,.94)}.adsk-viewing-viewer.light-theme .hyperlink-back-closer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.bim-theme{color:#0a131c;font-size:14px}.adsk-viewing-viewer.bim-theme.quality-text{text-rendering:geometricPrecision}.adsk-viewing-viewer.bim-theme .viewcube{color:#000}.adsk-viewing-viewer.bim-theme .adsk-lmv-tftable input,.adsk-viewing-viewer.bim-theme .option-drop-down,.adsk-viewing-viewer.dark-theme .property-drop-down{background-color:#edf0f2;border:1px solid #d5dbe1;color:#000}.adsk-viewing-viewer.bim-theme .adsk-control-group{background-color:#edf0f2;box-shadow:0 0 12px 0 rgba(0,0,0,.3);color:#0a131c}.adsk-viewing-viewer.bim-theme .adsk-button:hover{color:#38abdf}.adsk-viewing-viewer.bim-theme .adsk-button.active,.adsk-viewing-viewer.bim-theme .adsk-button:focus{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(34,34,34,.3);color:#38abdf;outline:none}.adsk-viewing-viewer.bim-theme .adsk-label-button.active,.adsk-viewing-viewer.bim-theme .adsk-label-button:focus,.adsk-viewing-viewer.bim-theme .adsk-label-button:hover{border:1px solid transparent}.adsk-viewing-viewer.bim-theme .adsk-label-button label{background-color:#0696d7;color:#fff}.adsk-viewing-viewer.bim-theme .adsk-label-button.active label,.adsk-viewing-viewer.bim-theme .adsk-label-button:focus label,.adsk-viewing-viewer.bim-theme .adsk-label-button:hover label{background-color:#38abdf;color:#fff}.adsk-viewing-viewer.bim-theme .adsk-control-tooltip{background-color:rgba(24,42,61,.9);border-radius:3px;box-shadow:0 3px 5px 0 rgba(0,0,0,.1);color:#fff;opacity:1}.adsk-viewing-viewer.bim-theme .docking-panel{box-shadow:0 0 12px 0 rgba(0,0,0,.3)}.adsk-viewing-viewer.bim-theme .docking-panel-delimiter-shadow{box-shadow:0 3px 5px 0 rgba(0,0,0,.1)}.adsk-viewing-viewer.bim-theme .docking-panel-title{background-color:#edf0f2;border-bottom:1px solid rgba(0,0,0,.2);color:#0a131c}.adsk-viewing-viewer.bim-theme .docking-panel-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.bim-theme .docking-panel-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.bim-theme .docking-panel-footer-resizer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjOTM5Q0E1IiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.bim-theme .docking-panel-footer-resizer:hover{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjNEE1NTVCIiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.bim-theme .docking-panel-button{border:1px solid #d5dbe1;color:#4a555b}.adsk-viewing-viewer.bim-theme .docking-panel-primary-button{background-color:#0696d7;color:#fff}.adsk-viewing-viewer.bim-theme .docking-panel-primary-button.active,.adsk-viewing-viewer.bim-theme .docking-panel-primary-button:focus,.adsk-viewing-viewer.bim-theme .docking-panel-primary-button:hover{background-color:#38abdf;color:#fff}.adsk-viewing-viewer.bim-theme .docking-panel-secondary-button{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.bim-theme .docking-panel-secondary-button.active,.adsk-viewing-viewer.bim-theme .docking-panel-secondary-button:focus,.adsk-viewing-viewer.bim-theme .docking-panel-secondary-button:hover{background-color:#bec8d2;color:#fff}.adsk-viewing-viewer.bim-theme .docking-panel-tertiary-button{border:1px solid #0696d7;color:#0696d7}.adsk-viewing-viewer.bim-theme .docking-panel-tertiary-button.active,.adsk-viewing-viewer.bim-theme .docking-panel-tertiary-button:focus,.adsk-viewing-viewer.bim-theme .docking-panel-tertiary-button:hover{border:1px solid #38abdf;color:#38abdf}.adsk-viewing-viewer.bim-theme .docking-panel-footer{background-color:#fff;border-top:1px solid rgba(0,0,0,.2)}.adsk-viewing-viewer.bim-theme .docking-panel-container-solid-color-a{background-color:hsla(0,0%,100%,.94)}.adsk-viewing-viewer.bim-theme .docking-panel-container-solid-color-b{background-color:#fff}.adsk-viewing-viewer.bim-theme .docking-panel-container-solid-color-c{background-color:#ecf0f3;color:#000}.adsk-viewing-viewer.bim-theme .docking-panel-container-gradient{background:repeating-linear-gradient(rgba(242,247,250,.7),rgba(242,247,250,.7) 36px,rgba(242,247,250,0) 0,rgba(242,247,250,0) 72px)}.adsk-viewing-viewer.bim-theme .docking-panel-textbox{background-color:transparent;border:1px solid #d5dbe1}.adsk-viewing-viewer.bim-theme .adsk-lmv-tftable tr td div{color:#4a555b}.adsk-viewing-viewer.bim-theme .adsk-lmv-tftable tr.logical-group{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.bim-theme .adsk-lmv-tftable tr.logical-group td div{color:#0a131c}.adsk-viewing-viewer.bim-theme .docking-panel-scroll::-webkit-scrollbar-track{background:none}.adsk-viewing-viewer.bim-theme .docking-panel-scroll::-webkit-scrollbar-thumb{background:#bec8d2}.adsk-viewing-viewer.bim-theme .docking-panel-scroll::-webkit-scrollbar-thumb:hover{background:#939ca5}.adsk-viewing-viewer.bim-theme .docking-panel-scroll::-webkit-resizer{background-color:rgba(30,30,30,.8)}.adsk-viewing-viewer.bim-theme .docking-pane-scroll::-webkit-scrollbar-corner{background-color:rgba(0,0,0,.2)}.adsk-viewing-viewer.bim-theme .adsk-filterbox input.filter-box,.adsk-viewing-viewer.bim-theme .adsk-searchbox input.search-box{background:#fff;border:1px solid transparent;color:#0a131c}.adsk-viewing-viewer.bim-theme .adsk-filterbox input.filter-box:focus,.adsk-viewing-viewer.bim-theme .adsk-searchbox input.search-box:focus{border:1px solid #1dc6f2}.adsk-viewing-viewer.bim-theme .adsk-searchbox .search-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.bim-theme .adsk-searchbox .search-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzFEQzZGMiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.bim-theme .adsk-filterbox .filter-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzk3OTc5NyIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-filterbox .filter-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwQkZGRiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-filterbox .filter-box-close,.adsk-viewing-viewer.bim-theme .adsk-searchbox .search-box-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI0JFQzhEMiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-filterbox .filter-box-close:hover,.adsk-viewing-viewer.bim-theme .adsk-searchbox .search-box-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iIzkzOUNBNSIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel .selected{background-color:#f2f7fa}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel>div[lmv-nodeid]:hover{background-color:rgba(0,191,255,.2)}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel .search-match{color:#1dc6f2}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel .search-path{color:#939ca5}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel .no-results-title{color:#000}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel .no-results-description{color:#939ca5}.adsk-viewing-viewer.bim-theme .loading-spinner path{stroke:#38abdf;fill:transparent}.adsk-viewing-viewer.bim-theme .loading-spinner path:first-child{stroke:#ecf0f3}.adsk-viewing-viewer.bim-theme .loading-spinner .message{color:#0a131c}.adsk-viewing-viewer.bim-theme .docking-panel.menu .menu-item:hover{background:rgba(0,191,255,.2)}.adsk-viewing-viewer.bim-theme .docking-panel.menu .menu-divider{background-color:#666}.adsk-viewing-viewer.bim-theme .viewer-settings-panel.docking-panel .settings-tabs span{color:#0a131c}.adsk-viewing-viewer.bim-theme .viewer-settings-panel.docking-panel .settings-tabs span:hover{color:#1dc6f2}.adsk-viewing-viewer.bim-theme .viewer-settings-panel.docking-panel .settings-tabs .tabselected span{border-color:#38abdf;color:#38abdf}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-environment-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-environment-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-environment-cell.border-select{border:1px solid #38abdf}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-environment-name{color:#4a555b}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-cell.border-select{border:1px solid #38abdf}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-description,.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-name{color:#4a555b}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .docking-panel-tertiary-button:active{border:1px solid #38abdf;color:#38abdf}.adsk-viewing-viewer.bim-theme .switch .slider,.adsk-viewing-viewer.bim-theme .switch .slider:before{background-color:#d9e1e9}.adsk-viewing-viewer.bim-theme .switch input:checked+.slider:before{background-color:#38abdf}.adsk-viewing-viewer.bim-theme .layers-panel .visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);opacity:1}.adsk-viewing-viewer.bim-theme .layers-panel .visibility.dim{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);opacity:1}.adsk-viewing-viewer.bim-theme .property-panel .no-properties,.adsk-viewing-viewer.bim-theme .property-panel .property-name{color:#4a555b}.adsk-viewing-viewer.bim-theme .property-panel .property-value{color:#939ca5}.adsk-viewing-viewer.bim-theme .property-panel .property-drop-down{background:hsla(0,0%,93%,.6);color:#4a555b}.adsk-viewing-viewer.bim-theme .property-panel .property-drop-down>option{background:hsla(0,0%,93%,.75)}.adsk-viewing-viewer.bim-theme .model-structure-panel .lmv-no-properties{color:#4a555b}.adsk-viewing-viewer.bim-theme .bimwalk .c-bimwalk-tooltip{background-color:#fff}.adsk-viewing-viewer.bim-theme .bimwalk .bimwalk-guide-dark-theme{display:none}.adsk-viewing-viewer.bim-theme .bimwalk .bimwalk-guide-bim-theme,.adsk-viewing-viewer.bim-theme .bimwalk .bimwalk-guide-light-theme{display:block}.adsk-viewing-viewer.bim-theme .bimwalk .bimwalk-tooltip-or{color:#939ca5}.adsk-viewing-viewer.bim-theme .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-button.active .toolbar-animation-play-icon,.adsk-viewing-viewer.bim-theme .adsk-button:focus .toolbar-animation-play-icon,.adsk-viewing-viewer.bim-theme .adsk-button:hover .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.bim-theme .adsk-button.active .toolbar-animation-pause-icon,.adsk-viewing-viewer.bim-theme .adsk-button:focus .toolbar-animation-pause-icon,.adsk-viewing-viewer.bim-theme .adsk-button:hover .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.bim-theme .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-button.active .toolbar-animation-backward-icon,.adsk-viewing-viewer.bim-theme .adsk-button:focus .toolbar-animation-backward-icon,.adsk-viewing-viewer.bim-theme .adsk-button:hover .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.bim-theme .adsk-button.active .toolbar-animation-forward-icon,.adsk-viewing-viewer.bim-theme .adsk-button:focus .toolbar-animation-forward-icon,.adsk-viewing-viewer.bim-theme .adsk-button:hover .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.bim-theme .treeview .group,.adsk-viewing-viewer.bim-theme .treeview .leaf,.adsk-viewing-viewer.bim-theme .treeview group,.adsk-viewing-viewer.bim-theme .treeview leaf{color:#0a131c}.adsk-viewing-viewer.bim-theme .treeview .group.selected label,.adsk-viewing-viewer.bim-theme .treeview .leaf.selected label,.adsk-viewing-viewer.bim-theme .treeview group.selected label,.adsk-viewing-viewer.bim-theme .treeview group.selected-ex>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview leaf.selected label,.adsk-viewing-viewer.bim-theme .treeview leaf.selected-ex>lmvheader>label{color:#1dc7f3!important}.adsk-viewing-viewer.bim-theme .treeview .group.category>lmvheader,.adsk-viewing-viewer.bim-theme .treeview group.category>lmvheader{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.bim-theme .treeview .group>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview .leaf>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview group>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview leaf>lmvheader>label{color:#0a131c}.adsk-viewing-viewer.bim-theme .treeview .group>lmvheader:hover,.adsk-viewing-viewer.bim-theme .treeview .leaf>lmvheader:hover,.adsk-viewing-viewer.bim-theme .treeview group>lmvheader:hover,.adsk-viewing-viewer.bim-theme .treeview leaf>lmvheader:hover{background:rgba(0,191,255,.2)!important}.adsk-viewing-viewer.bim-theme .treeview .group.dim>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview .leaf.dim>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview group.dim>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview leaf.dim>lmvheader>label{color:#939ca5}.adsk-viewing-viewer.bim-theme .treeview div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);background-position:6px 12px;background-repeat:no-repeat;border:none;height:100%;margin:0;opacity:1;outline:none;padding:0;position:absolute;right:0;top:0;width:35px}.adsk-viewing-viewer.bim-theme .treeview div.visibility:hover{filter:drop-shadow(0 0 0 #fff)}.adsk-viewing-viewer.bim-theme .treeview .dim div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);background-position:6px 9px;opacity:1}.adsk-viewing-viewer.bim-theme .treeview .view lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-repeat:no-repeat;display:inline;padding:0 11px}.adsk-viewing-viewer.bim-theme .treeview .collapsed>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjExIj48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4Ljc2LjgyIDEwLjQ3N2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.bim-theme .treeview .expanded>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjcxOS40NjIgMCAuMzg2bDUuMDkyIDUuMDkyIi8+PC9zdmc+);cursor:zoom-out}.adsk-viewing-viewer.bim-theme .treeview .expanded.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05Ljg0Ny44OTguMTMuODIgNS4yMiA1LjkxMyIvPjwvc3ZnPg==);cursor:zoom-out}.adsk-viewing-viewer.bim-theme .treeview .collapsed.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-environment-image{border:1px solid #d4dbe1!important}.adsk-viewing-viewer.bim-theme .propertysearch-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCA1OC4zNzEgNTguMzcxIj48cGF0aCBkPSJtNTUuODMzIDU2LjY3OS01Ljk2OS02LjI0M2ExMC43NCAxMC43NCAwIDAgMCAyLjgyLTcuMjVjMC01Ljk1My00Ljg0My0xMC43OTYtMTAuNzk2LTEwLjc5NnMtMTAuNzk2IDQuODQzLTEwLjc5NiAxMC43OTYgNC44NDMgMTAuNzk2IDEwLjc5NiAxMC43OTZjMi40NDIgMCA0LjY4OS0uODI0IDYuNS0yLjE5Nmw2IDYuMjc2YTEgMSAwIDAgMCAxLjQxNC4wMzIgMSAxIDAgMCAwIC4wMzEtMS40MTVNMzMuMDkyIDQzLjE4NmMwLTQuODUgMy45NDYtOC43OTYgOC43OTYtOC43OTZzOC43OTYgMy45NDYgOC43OTYgOC43OTYtMy45NDYgOC43OTYtOC43OTYgOC43OTYtOC43OTYtMy45NDYtOC43OTYtOC43OTZNMjguMDk2IDQzLjFjLjAyNS00LjAyOSAxLjc5My03LjY0NCA0LjU3OC0xMC4xNTMtLjkxMS4wNTQtMS44NDQuMDk3LTIuODA3LjEyM2E4NCA4NCAwIDAgMS01LjIyLS4wMDFjLTcuMzQxLS4yMDEtMTMuMTkxLTEuMjM4LTE3LjQwMy0yLjcxNy0xLjk4LS42NjctMy42NzUtMS40NTMtNC45ODMtMi4zNTJ2OS40YzIuODQ2IDIuOTcxIDEyLjM5NCA1LjcxMSAyNSA1LjcxMS4yODMgMCAuNTU1LS4wMDguODM1LS4wMTFNMjQuODk2IDI5Ljk2NXEuNDg3LjAxNC45ODIuMDIzYTc5IDc5IDAgMCAwIDIuNzY2LjAwMXEuNDk0LS4wMS45ODItLjAyM2wuMzQ5LS4wMDhjMTEuMjUzLS4zNTkgMTkuNjQ4LTIuOTE1IDIyLjI4Ni01LjY2OHYtOS40MDFDNDcuMzkzIDE4LjIzMiAzNy4xMDUgMjAgMjcuMjYxIDIwcy0yMC4xMzMtMS43NjgtMjUtNS4xMTF2OS40YzIuNjM4IDIuNzU0IDExLjAzMyA1LjMxIDIyLjI4NiA1LjY2OHoiLz48cGF0aCBkPSJNNTIuMjYxIDExLjMwNlY5YS45LjkgMCAwIDAtLjEzNS0uNDU4QzUxLjAwMyA0LjI0MSA0Mi4zNzYgMCAyNy4yNjEgMCAxMi4xODMgMCAzLjU2NCA0LjIyIDIuNDA3IDguNTFhLjk3Ljk3IDAgMCAwLS4xNDYuNDl2Mi4zMDZDNS4wOTcgMTQuMjY3IDE0LjU3NyAxNyAyNy4yNjEgMTdzMjIuMTYzLTIuNzMzIDI1LTUuNjk0TTI4LjQzIDQ2LjE4N2MtLjM5LjAwNS0uNzcyLjAxNC0xLjE3LjAxNC0xMi4zNDYgMC0yMC44NjYtMi4yOS0yNS01LjIwMXY4LjIwMWEuOTQuOTQgMCAwIDAgLjExNy40NTFjMS4xODEgNC44OTUgMTEuNzQ3IDguNTQ5IDI0Ljg4MyA4LjU0OSA0Ljc2NCAwIDkuMTgyLS40ODYgMTIuOTQ1LTEuMzMyLTUuODE2LS43MTItMTAuNTE5LTUuMDUtMTEuNzc1LTEwLjY4MiIvPjwvc3ZnPg==);filter:invert(1)}.adsk-viewing-viewer.bim-theme .docking-panel.menu .menu-item-expand{background-image:url(data:image/png;base64,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)}.adsk-viewing-viewer.acs-theme{color:#0a131c;font-size:14px}.adsk-viewing-viewer.acs-theme.quality-text{text-rendering:geometricPrecision}.adsk-viewing-viewer.acs-theme .viewcube{color:#000}.adsk-viewing-viewer.acs-theme .adsk-lmv-tftable input,.adsk-viewing-viewer.acs-theme .option-drop-down,.adsk-viewing-viewer.dark-theme .property-drop-down{background-color:#edf0f2;border:1px solid #d5dbe1;color:#000}.adsk-viewing-viewer.acs-theme .adsk-control-group{background-color:rgba(0,0,0,.85);box-shadow:1px 3px 10px 0 rgba(0,0,0,.5);color:#f4f4f4}.minimap3D .minimap-header.adsk-viewing-viewer.acs-theme{background-color:#fff;box-shadow:none;color:#0a131c}.adsk-viewing-viewer.acs-theme .adsk-button:hover{color:#00bfff}.adsk-viewing-viewer.acs-theme .adsk-button.active,.adsk-viewing-viewer.acs-theme .adsk-button:focus{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(34,34,34,.3);color:#38abdf;outline:none}.adsk-viewing-viewer.acs-theme .adsk-label-button.active,.adsk-viewing-viewer.acs-theme .adsk-label-button:focus,.adsk-viewing-viewer.acs-theme .adsk-label-button:hover{border:1px solid transparent}.adsk-viewing-viewer.acs-theme .adsk-label-button label{background-color:#06a7df;color:#fff}.adsk-viewing-viewer.acs-theme .adsk-label-button.active label,.adsk-viewing-viewer.acs-theme .adsk-label-button:focus label,.adsk-viewing-viewer.acs-theme .adsk-label-button:hover label{background-color:#38abdf;color:#fff}.adsk-viewing-viewer.acs-theme .adsk-control-tooltip{background-color:rgba(24,42,61,.9);border-radius:3px;box-shadow:0 3px 5px 0 rgba(0,0,0,.1);color:#fff;opacity:1}.adsk-viewing-viewer.acs-theme .docking-panel{box-shadow:0 0 12px 0 rgba(0,0,0,.3)}.adsk-viewing-viewer.acs-theme .docking-panel-delimiter-shadow{box-shadow:0 3px 5px 0 rgba(0,0,0,.1)}.adsk-viewing-viewer.acs-theme .docking-panel-title{background-color:#edf0f2;border-bottom:1px solid rgba(0,0,0,.2);color:#0a131c}.adsk-viewing-viewer.acs-theme .docking-panel-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.acs-theme .docking-panel-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.acs-theme .docking-panel-footer-resizer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjOTM5Q0E1IiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.acs-theme .docking-panel-footer-resizer:hover{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjNEE1NTVCIiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.acs-theme .docking-panel-button{border:1px solid #d5dbe1;color:#4a555b}.adsk-viewing-viewer.acs-theme .docking-panel-primary-button{background-color:#0696d7;color:#fff}.adsk-viewing-viewer.acs-theme .docking-panel-primary-button.active,.adsk-viewing-viewer.acs-theme .docking-panel-primary-button:focus,.adsk-viewing-viewer.acs-theme .docking-panel-primary-button:hover{background-color:#38abdf;color:#fff}.adsk-viewing-viewer.acs-theme .docking-panel-secondary-button{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.acs-theme .docking-panel-secondary-button.active,.adsk-viewing-viewer.acs-theme .docking-panel-secondary-button:focus,.adsk-viewing-viewer.acs-theme .docking-panel-secondary-button:hover{background-color:#bec8d2;color:#fff}.adsk-viewing-viewer.acs-theme .docking-panel-tertiary-button{border:1px solid #0696d7;color:#0696d7}.adsk-viewing-viewer.acs-theme .docking-panel-tertiary-button.active,.adsk-viewing-viewer.acs-theme .docking-panel-tertiary-button:focus,.adsk-viewing-viewer.acs-theme .docking-panel-tertiary-button:hover{border:1px solid #38abdf;color:#38abdf}.adsk-viewing-viewer.acs-theme .docking-panel-footer{background-color:#fff;border-top:1px solid rgba(0,0,0,.2)}.adsk-viewing-viewer.acs-theme .docking-panel-container-solid-color-a{background-color:hsla(0,0%,100%,.94)}.adsk-viewing-viewer.acs-theme .docking-panel-container-solid-color-b{background-color:#fff}.adsk-viewing-viewer.acs-theme .docking-panel-container-solid-color-c{background-color:#ecf0f3;color:#000}.adsk-viewing-viewer.acs-theme .docking-panel-container-gradient{background:repeating-linear-gradient(rgba(242,247,250,.7),rgba(242,247,250,.7) 36px,rgba(242,247,250,0) 0,rgba(242,247,250,0) 72px)}.adsk-viewing-viewer.acs-theme .docking-panel-textbox{background-color:transparent;border:1px solid #d5dbe1}.adsk-viewing-viewer.acs-theme .adsk-lmv-tftable tr td div{color:#4a555b}.adsk-viewing-viewer.acs-theme .adsk-lmv-tftable tr.logical-group{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.acs-theme .adsk-lmv-tftable tr.logical-group td div{color:#0a131c}.adsk-viewing-viewer.acs-theme .docking-panel-scroll::-webkit-scrollbar-track{background:none}.adsk-viewing-viewer.acs-theme .docking-panel-scroll::-webkit-scrollbar-thumb{background:#bec8d2}.adsk-viewing-viewer.acs-theme .docking-panel-scroll::-webkit-scrollbar-thumb:hover{background:#939ca5}.adsk-viewing-viewer.acs-theme .docking-panel-scroll::-webkit-resizer{background-color:rgba(30,30,30,.8)}.adsk-viewing-viewer.acs-theme .docking-pane-scroll::-webkit-scrollbar-corner{background-color:rgba(0,0,0,.2)}.adsk-viewing-viewer.acs-theme .adsk-filterbox input.filter-box,.adsk-viewing-viewer.acs-theme .adsk-searchbox input.search-box{background:#fff;border:1px solid transparent;color:#0a131c}.adsk-viewing-viewer.acs-theme .adsk-filterbox input.filter-box:focus,.adsk-viewing-viewer.acs-theme .adsk-searchbox input.search-box:focus{border:1px solid #1dc6f2}.adsk-viewing-viewer.acs-theme .adsk-searchbox .search-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.acs-theme .adsk-searchbox .search-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzFEQzZGMiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.acs-theme .adsk-filterbox .filter-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzk3OTc5NyIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-filterbox .filter-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwQkZGRiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-filterbox .filter-box-close,.adsk-viewing-viewer.acs-theme .adsk-searchbox .search-box-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI0JFQzhEMiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-filterbox .filter-box-close:hover,.adsk-viewing-viewer.acs-theme .adsk-searchbox .search-box-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iIzkzOUNBNSIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel .selected{background-color:#f2f7fa}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel>div[lmv-nodeid]:hover{background-color:rgba(0,191,255,.2)}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel .search-match{color:#1dc6f2}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel .search-path{color:#939ca5}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel .no-results-title{color:#000}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel .no-results-description{color:#939ca5}.adsk-viewing-viewer.acs-theme .loading-spinner path{stroke:#38abdf;fill:transparent}.adsk-viewing-viewer.acs-theme .loading-spinner path:first-child{stroke:#ecf0f3}.adsk-viewing-viewer.acs-theme .loading-spinner .message{color:#0a131c}.adsk-viewing-viewer.acs-theme .docking-panel.menu .menu-item:hover{background:rgba(0,191,255,.2)}.adsk-viewing-viewer.acs-theme .docking-panel.menu .menu-divider{background-color:#666}.adsk-viewing-viewer.acs-theme .viewer-settings-panel.docking-panel .settings-tabs span{color:#0a131c}.adsk-viewing-viewer.acs-theme .viewer-settings-panel.docking-panel .settings-tabs span:hover{color:#1dc6f2}.adsk-viewing-viewer.acs-theme .viewer-settings-panel.docking-panel .settings-tabs .tabselected span{border-color:#38abdf;color:#38abdf}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-environment-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-environment-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-environment-cell.border-select{border:1px solid #38abdf}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-environment-name{color:#4a555b}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-cell.border-select{border:1px solid #38abdf}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-description,.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-name{color:#4a555b}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .docking-panel-tertiary-button:active{border:1px solid #38abdf;color:#38abdf}.adsk-viewing-viewer.acs-theme .switch .slider,.adsk-viewing-viewer.acs-theme .switch .slider:before{background-color:#d9e1e9}.adsk-viewing-viewer.acs-theme .switch input:checked+.slider:before{background-color:#38abdf}.adsk-viewing-viewer.acs-theme .layers-panel .visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);opacity:1}.adsk-viewing-viewer.acs-theme .layers-panel .visibility.dim{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);opacity:1}.adsk-viewing-viewer.acs-theme .property-panel .no-properties,.adsk-viewing-viewer.acs-theme .property-panel .property-name{color:#4a555b}.adsk-viewing-viewer.acs-theme .property-panel .property-value{color:#939ca5}.adsk-viewing-viewer.acs-theme .property-panel .property-drop-down{background:hsla(0,0%,93%,.6);color:#4a555b}.adsk-viewing-viewer.acs-theme .property-panel .property-drop-down>option{background:hsla(0,0%,93%,.75)}.adsk-viewing-viewer.acs-theme .model-structure-panel .lmv-no-properties{color:#4a555b}.adsk-viewing-viewer.acs-theme .bimwalk .c-bimwalk-tooltip{background-color:#fff}.adsk-viewing-viewer.acs-theme .bimwalk .bimwalk-guide-dark-theme{display:none}.adsk-viewing-viewer.acs-theme .bimwalk .bimwalk-guide-bim-theme,.adsk-viewing-viewer.acs-theme .bimwalk .bimwalk-guide-light-theme{display:block}.adsk-viewing-viewer.acs-theme .bimwalk .bimwalk-tooltip-or{color:#939ca5}.adsk-viewing-viewer.acs-theme .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-button.active .toolbar-animation-play-icon,.adsk-viewing-viewer.acs-theme .adsk-button:focus .toolbar-animation-play-icon,.adsk-viewing-viewer.acs-theme .adsk-button:hover .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.acs-theme .adsk-button.active .toolbar-animation-pause-icon,.adsk-viewing-viewer.acs-theme .adsk-button:focus .toolbar-animation-pause-icon,.adsk-viewing-viewer.acs-theme .adsk-button:hover .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.acs-theme .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-button.active .toolbar-animation-backward-icon,.adsk-viewing-viewer.acs-theme .adsk-button:focus .toolbar-animation-backward-icon,.adsk-viewing-viewer.acs-theme .adsk-button:hover .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.acs-theme .adsk-button.active .toolbar-animation-forward-icon,.adsk-viewing-viewer.acs-theme .adsk-button:focus .toolbar-animation-forward-icon,.adsk-viewing-viewer.acs-theme .adsk-button:hover .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.acs-theme .treeview .group,.adsk-viewing-viewer.acs-theme .treeview .leaf,.adsk-viewing-viewer.acs-theme .treeview group,.adsk-viewing-viewer.acs-theme .treeview leaf{color:#0a131c}.adsk-viewing-viewer.acs-theme .treeview .group.selected label,.adsk-viewing-viewer.acs-theme .treeview .leaf.selected label,.adsk-viewing-viewer.acs-theme .treeview group.selected label,.adsk-viewing-viewer.acs-theme .treeview group.selected-ex>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview leaf.selected label,.adsk-viewing-viewer.acs-theme .treeview leaf.selected-ex>lmvheader>label{color:#1dc7f3!important}.adsk-viewing-viewer.acs-theme .treeview .group.category>lmvheader,.adsk-viewing-viewer.acs-theme .treeview group.category>lmvheader{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.acs-theme .treeview .group>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview .leaf>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview group>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview leaf>lmvheader>label{color:#0a131c}.adsk-viewing-viewer.acs-theme .treeview .group>lmvheader:hover,.adsk-viewing-viewer.acs-theme .treeview .leaf>lmvheader:hover,.adsk-viewing-viewer.acs-theme .treeview group>lmvheader:hover,.adsk-viewing-viewer.acs-theme .treeview leaf>lmvheader:hover{background:rgba(0,191,255,.2)!important}.adsk-viewing-viewer.acs-theme .treeview .group.dim>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview .leaf.dim>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview group.dim>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview leaf.dim>lmvheader>label{color:#939ca5}.adsk-viewing-viewer.acs-theme .treeview div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);background-position:6px 12px;background-repeat:no-repeat;border:none;height:100%;margin:0;opacity:1;outline:none;padding:0;position:absolute;right:0;top:0;width:35px}.adsk-viewing-viewer.acs-theme .treeview div.visibility:hover{filter:drop-shadow(0 0 0 #fff)}.adsk-viewing-viewer.acs-theme .treeview .dim div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);background-position:6px 9px;opacity:1}.adsk-viewing-viewer.acs-theme .treeview .view lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-repeat:no-repeat;display:inline;padding:0 11px}.adsk-viewing-viewer.acs-theme .treeview .collapsed>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjExIj48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4Ljc2LjgyIDEwLjQ3N2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.acs-theme .treeview .expanded>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjcxOS40NjIgMCAuMzg2bDUuMDkyIDUuMDkyIi8+PC9zdmc+);cursor:zoom-out}.adsk-viewing-viewer.acs-theme .treeview .expanded.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05Ljg0Ny44OTguMTMuODIgNS4yMiA1LjkxMyIvPjwvc3ZnPg==);cursor:zoom-out}.adsk-viewing-viewer.acs-theme .treeview .collapsed.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-environment-image{border:1px solid #d4dbe1!important}.adsk-viewing-viewer.acs-theme .propertysearch-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCA1OC4zNzEgNTguMzcxIj48cGF0aCBkPSJtNTUuODMzIDU2LjY3OS01Ljk2OS02LjI0M2ExMC43NCAxMC43NCAwIDAgMCAyLjgyLTcuMjVjMC01Ljk1My00Ljg0My0xMC43OTYtMTAuNzk2LTEwLjc5NnMtMTAuNzk2IDQuODQzLTEwLjc5NiAxMC43OTYgNC44NDMgMTAuNzk2IDEwLjc5NiAxMC43OTZjMi40NDIgMCA0LjY4OS0uODI0IDYuNS0yLjE5Nmw2IDYuMjc2YTEgMSAwIDAgMCAxLjQxNC4wMzIgMSAxIDAgMCAwIC4wMzEtMS40MTVNMzMuMDkyIDQzLjE4NmMwLTQuODUgMy45NDYtOC43OTYgOC43OTYtOC43OTZzOC43OTYgMy45NDYgOC43OTYgOC43OTYtMy45NDYgOC43OTYtOC43OTYgOC43OTYtOC43OTYtMy45NDYtOC43OTYtOC43OTZNMjguMDk2IDQzLjFjLjAyNS00LjAyOSAxLjc5My03LjY0NCA0LjU3OC0xMC4xNTMtLjkxMS4wNTQtMS44NDQuMDk3LTIuODA3LjEyM2E4NCA4NCAwIDAgMS01LjIyLS4wMDFjLTcuMzQxLS4yMDEtMTMuMTkxLTEuMjM4LTE3LjQwMy0yLjcxNy0xLjk4LS42NjctMy42NzUtMS40NTMtNC45ODMtMi4zNTJ2OS40YzIuODQ2IDIuOTcxIDEyLjM5NCA1LjcxMSAyNSA1LjcxMS4yODMgMCAuNTU1LS4wMDguODM1LS4wMTFNMjQuODk2IDI5Ljk2NXEuNDg3LjAxNC45ODIuMDIzYTc5IDc5IDAgMCAwIDIuNzY2LjAwMXEuNDk0LS4wMS45ODItLjAyM2wuMzQ5LS4wMDhjMTEuMjUzLS4zNTkgMTkuNjQ4LTIuOTE1IDIyLjI4Ni01LjY2OHYtOS40MDFDNDcuMzkzIDE4LjIzMiAzNy4xMDUgMjAgMjcuMjYxIDIwcy0yMC4xMzMtMS43NjgtMjUtNS4xMTF2OS40YzIuNjM4IDIuNzU0IDExLjAzMyA1LjMxIDIyLjI4NiA1LjY2OHoiLz48cGF0aCBkPSJNNTIuMjYxIDExLjMwNlY5YS45LjkgMCAwIDAtLjEzNS0uNDU4QzUxLjAwMyA0LjI0MSA0Mi4zNzYgMCAyNy4yNjEgMCAxMi4xODMgMCAzLjU2NCA0LjIyIDIuNDA3IDguNTFhLjk3Ljk3IDAgMCAwLS4xNDYuNDl2Mi4zMDZDNS4wOTcgMTQuMjY3IDE0LjU3NyAxNyAyNy4yNjEgMTdzMjIuMTYzLTIuNzMzIDI1LTUuNjk0TTI4LjQzIDQ2LjE4N2MtLjM5LjAwNS0uNzcyLjAxNC0xLjE3LjAxNC0xMi4zNDYgMC0yMC44NjYtMi4yOS0yNS01LjIwMXY4LjIwMWEuOTQuOTQgMCAwIDAgLjExNy40NTFjMS4xODEgNC44OTUgMTEuNzQ3IDguNTQ5IDI0Ljg4MyA4LjU0OSA0Ljc2NCAwIDkuMTgyLS40ODYgMTIuOTQ1LTEuMzMyLTUuODE2LS43MTItMTAuNTE5LTUuMDUtMTEuNzc1LTEwLjY4MiIvPjwvc3ZnPg==);filter:invert(1)}.adsk-viewing-viewer.acs-theme .docking-panel.menu .menu-item-expand{background-image:url(data:image/png;base64,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)}@font-face{font-family:adsk-viewing;font-style:normal;font-weight:400;src:url(data:application/font-woff;base64,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)}[data-icon]:before{content:attr(data-icon)}[class*=" adsk-icon-"]:before,[class^=adsk-icon-]:before,[data-icon]:before{font-family:adsk-viewing!important;font-style:normal!important;font-variant:normal!important;font-weight:400!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.adsk-icon-arrow:before{content:"a"}.adsk-icon-box:before{content:"b"}.adsk-icon-selection:before{content:"0"}.adsk-icon-bug:before{content:"c"}.adsk-icon-camera:before{content:"d"}.adsk-icon-explode:before{content:"e"}.adsk-icon-first-person:before{content:"f"}.adsk-icon-fit-to-view:before{content:"g"}.adsk-icon-fov:before{content:"h"}.adsk-icon-fullscreen:before{content:"i"}.adsk-icon-fullscreen-exit:before{content:"j"}.adsk-icon-game-controller:before{content:"k"}.adsk-icon-home:before{content:"l"}.adsk-icon-layers:before{content:"m"}.adsk-icon-section-analysis:before{content:"o"}.adsk-icon-roll:before{content:"p"}.adsk-icon-refresh:before{content:"q"}.adsk-icon-properties:before{content:"r"}.adsk-icon-plane-z:before{content:"s"}.adsk-icon-plane-y:before{content:"t"}.adsk-icon-plane-x:before{content:"u"}.adsk-icon-pan:before{content:"v"}.adsk-icon-orbit-constrained:before{content:"w"}.adsk-icon-measure-menu:before{content:"x"}.adsk-icon-measure:before{content:"S"}.adsk-icon-measure-distance-new:before{content:"T"}.adsk-icon-measure-angle-new:before{content:"U"}.adsk-icon-measure-area-new:before{content:"V";text-transform:uppercase!important}.adsk-icon-measure-arc-new:before{content:"Z"}.adsk-icon-measure-calibration:before{content:"X"}.adsk-icon-measure-settings:before{content:"Y"}.adsk-icon-measure-trash:before{content:"W";text-transform:uppercase!important}.adsk-icon-live-review:before{content:"y"}.adsk-icon-orbit-free:before{content:"z"}.adsk-icon-zoom:before{content:"A"}.adsk-icon-walk:before{content:"B"}.adsk-icon-structure:before{content:"C"}.adsk-icon-settings-render:before{content:"D"}.adsk-icon-second:before{content:"E"}.adsk-icon-first:before{content:"F"}.adsk-icon-measure-distance:before{content:"G"}.adsk-icon-settings:before{content:"n"}.adsk-icon-measure-angle:before{content:"H"}.adsk-icon-axis-x:before{content:"I"}.adsk-icon-axis-y:before{content:"J"}.adsk-icon-axis-z:before{content:"K"}.adsk-icon-plus:before{content:"L"}.adsk-icon-delete:before{content:"W"}.adsk-icon-mem-mgr:before{content:"O"}.adsk-icon-visible:before{content:"2"}.adsk-icon-invisible:before{content:"3"}.adsk-viewing-viewer .loading-spinner{height:150px;width:100%}.adsk-viewing-viewer .loading-spinner .message{cursor:default;font-size:12px;font-weight:700;letter-spacing:1.2px;position:absolute;text-align:center!important;text-align:left;text-transform:uppercase;top:60px;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;width:100%}.adsk-viewing-viewer .loading-spinner .path{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading-spinner-perpetual-motion;animation-timing-function:linear;border:none;height:140px;left:calc(50% - 70px);position:absolute;transform-origin:50% 50%;width:140px}.adsk-viewing-viewer .loading-spinner path{stroke-width:5px;stroke-linejoin:round;stroke-linecap:round}@keyframes loading-spinner-perpetual-motion{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.adsk-viewing-viewer .alert-box{background:hsla(0,0%,98%,.9);border:1px solid #b8b8b8;border-radius:5px;display:block;font-family:Helvetica Neue Light,Segoe UI Semilight,sans-serif;height:auto;left:50%;max-width:40%;padding:10px;position:absolute;top:50%;visibility:hidden;white-space:-moz-pre-wrap;white-space:pre-line;z-index:1;word-wrap:break-word;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);word-break:break-all}.adsk-viewing-viewer .alert-box-image{display:block;float:left;height:60px;left:10px;padding-right:10px;top:10px;width:60px}.adsk-viewing-viewer .alert-box-msg{color:#333;display:block;margin-left:70px;margin-top:2px}.adsk-viewing-viewer .alert-box-title{display:block;word-wrap:break-word;font-size:18px;margin-bottom:10px;min-height:18px;word-break:break-all}.adsk-viewing-viewer .alert-box-text{display:block;word-wrap:break-word;font-size:12px;min-height:12px;word-break:break-word}.adsk-viewing-viewer .alert-box-content{display:block;font-size:12px;list-style:disc;margin-top:10px;min-height:12px}.adsk-viewing-viewer .alert-box-ok{background:transparent;border:1px solid #999;border-radius:2px;bottom:5%;color:#000;cursor:pointer;display:block;font-size:14px;height:auto;left:50%;line-height:20px;margin-left:-25px;margin-top:10px;padding:3px;position:relative;text-align:center;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:50px;z-index:2}.adsk-viewing-viewer .alert-box-ok:hover{background:#fff;color:#111}.adsk-viewing-viewer .alert-box.errors{max-height:200px}.adsk-viewing-viewer .alert-box-msg.errors{max-height:150px;overflow-y:auto;padding-right:15px}.adsk-viewing-viewer .alert-box-title.errors{margin-top:15px}.adsk-viewing-viewer .alert-box-text.errors{margin-top:5px}.adsk-viewing-viewer .alert-box-image.img-reload{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAATlBMVEUAAAC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwXZW//AAAAGXRSTlMADdNH4Xntk8apUvNrMPqdZSAGuz2FFF2i4n3MhQAAAXVJREFUSMfdl9tuwyAMQDGQ0FByI+nF//+jm7Ywt4VA8KRJ63mNjrDBGEf8GwC/EEU8fOLrZVjduEjdtlouo1vhuOyVkfiENMofkmE6YYLTBGXZStxB2oI8d5ihm3Oy0phFq33ZnbHAudmTm5dlusbapnsOZghyztVGwbb7yjz6afk20Dc5XcUD10nm5b6lVR1Eh+90RgaqjPssElzHSI4TbqfXRb/x4AaS00EPNn0Hczn/xHQR1XJ/DuUP9fIlBL2KahnCMY6iXlahcnuGbMKVE/XMoUAUQ1bbIUuoVqm6TL1KKVuO3G17PXPkZUvZ/0JexF+uzM+Zv9v8c+ZXGBjFr22FuKhk0t3BzT3dfOk+E3G/kqrQSYi4Ueq11MNi1oGabLl7Jp4Vyq/ct1NNFsfSixFjQ9BtX3irYqYWNxpR+UrOd0TaGMb7TEFzJ4PhJoiKmYQSZkxD5PLmMCcCjAlQBDizJ8GYegnGvE0wJn2i4h/jnfgAT9VrCTWL7i0AAAAASUVORK5CYII=);background-repeat:no-repeat}.adsk-viewing-viewer .alert-box-image.img-unsupported{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAUVBMVEUAAAC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzYhxYwAAAAGnRSTlMA8Q73gDv9BiUazrVL6VrDbC+oeuDYkoqfYnTM6tcAAAFySURBVEjH7ZTbkoIwEAVNQgiBoNyR8/8fuoi6szEUZlL7pv1MKzVMz+nLP6I7neyaEqVMlXsAfaJb1ABEmyZ3uFEluQ53zgmuLB/yaPlyhicT220FnijNlSsQF6Z7xl8almtHT64LjjzD58oJQgHIV5RSQmDFMadVaq2LojBnAIxAFmzPG5pdfCB2wI3h8WcNwAhkwoaQFGZ0IDrHhipo8rGBmAvu5I+tvDICafDEUdYbU9T58N+zAr3KG67BRl8oEBN3PujTmjE2EFMCL0dADrGB9GENUoDooqZFa2EVQLh3x9afT0vyYSAOHqP5XTgiOzy2RC39XzwMJIOPsFQkUR0dW0K1/roeBVLhhdwZKYP3wWAPji2hxIrCK9PesY0lDGRGLGEgWu0802crs0JAE0wrIAt2ez+QBbFyGIgdouUwkAlcmQLROVtGRsd2l/kkVyzJ4e7S9oYLtpFjl4rORwLL6soOXCgQVyuRRL6cvnwGPzKpczNf1iTWAAAAAElFTkSuQmCC);background-repeat:no-repeat}.adsk-viewing-viewer .alert-box-image.img-unloack,.adsk-viewing-viewer .alert-box-image.img-unlock{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAVFBMVEUAAAC8vLy8vLy8vLy9vb28vLy/v7+8vLy9vb28vLy9vb27u7u8vLy9vb28vLy8vLy8vLy9vb28vLy9vb28vLy8vLy8vLy7u7vFxcW/v7+8vLy+vr4GHu50AAAAGnRSTlMADpDTFeJM/vBFMAf2YciIe+nbu7GgbmtVNgXq938AAAEkSURBVEjH7ZTbdoMgEEVxuCgqEK9JJ///n21WYGFjRMA+tF3uR4ft4GGEbMAEDLSrOjqAYCSJGjh6ONTxKoMKv1NBbHfR45peRLlzi+9o5wj3gltcdl1Vbsql2ou5WyymoIAuXtaFQ28GH/Akm8cTOfnohya4aXSMvks9okOFGmsX7ZUsuboD0IHWN/eB5qVg0CIC40GfSyh7nTlq5Sm0bzG2d0S1GUZfhA/LVG9WFLZ1+UHCMEkc66++kQykzXLOkQvuBjyDhv5CudiFWdnYtQsZkznlU37AQTImgefIWtiLTafLXLqi4Mky+CrEy+ubTiZ3LnyVpcr3I3JZH9h2aQ4Ehrw+cFSorS111ng+azzvx7C1U/7nclt90f61q/eUf1z+BAQm0DzJD1vhAAAAAElFTkSuQmCC);background-repeat:no-repeat}.adsk-viewing-viewer .alert-box-image.img-item-not-found{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAV1BMVEUAAAC8vLy/v7/c3Nzk5OT///+8vLy8vLy8vLy8vLy8vLy8vLy8vLz///+8vLz///+7u7u4uLjJycnW1tb+/v7n5+e/v7/z8/PQ0NDt7e3ExMT5+fnc3NyZffqfAAAADnRSTlMA8A8R/fHbyh69Ku4xHnuV7q4AAAEzSURBVEjH7dTZboMwEIVhCqRJt+EMi1fe/zk7TnFQZTWBSW8i5b+yBJ9GNjKVRDerq+pUlW3Gx/oOTG/1HVi0Hotu1DhrLaZjo8eiT0qctR6LVuFV6zG9nm5ggEFGIlkseNXv1zAQ3Dx5K/nWGV5xqQvrfOzW4vCScalLPHW/a5v80qo348MFr/rzKo6+nSdb4NzHFWyHQGCYIS646C88+8Ewzkt2O3D2uCys4K+mLipxGbdp9KEvHmzCc5dyCpyPflRNRogJx6DBsuXUBAVmN56x490Y7GIevBcD889cG/ZicO+XO9mD9mEYGbvMZdqJeciX2YCU2DqAlNgaJtLiCaTHnh4MIwyS02ECS9DilBaHPmVUGG03jt3YQ4XTv+sBsXLP+tPWf+eyJ37if8YvG0v4G00xpazwgfUzAAAAAElFTkSuQmCC);background-repeat:no-repeat}.adsk-viewing-viewer .docking-panel.hud{display:block;height:auto;left:50%;max-width:350px;min-width:250px;position:absolute;top:calc(50% - 50px);transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);width:auto}.adsk-viewing-viewer .docking-panel.hud.top{top:50px}.adsk-viewing-viewer .hud-client{position:relative;width:100%}.adsk-viewing-viewer .hud-message{display:block;font-size:12px;min-height:12px;padding:10px 15px}.adsk-viewing-viewer .hud-button{position:relative}.adsk-viewing-viewer .hud-checkbox{margin-bottom:10px!important;margin-left:20px!important}.adsk-viewing-viewer .docking-panel.menu{height:auto;min-height:0;min-width:120px;padding:8px 0;position:absolute;width:auto;z-index:20}.adsk-viewing-viewer .docking-panel.menu .menu-item{cursor:pointer;height:36px;margin-bottom:1px}.adsk-viewing-viewer .docking-panel.menu .menu-divider-container,.adsk-viewing-viewer .docking-panel.menu .menu-item{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:table-row;position:relative}.adsk-viewing-viewer .docking-panel.menu .menu-divider-container{cursor:default;height:17px}.adsk-viewing-viewer .docking-panel.menu .menu-divider{cursor:default;height:1px;margin-bottom:8px;margin-top:8px;position:absolute;width:100%}.adsk-viewing-viewer.touch .docking-panel.menu .menu-item{padding:20px}.adsk-viewing-viewer .docking-panel.menu .menu-ttem:last-child{margin-bottom:0}.adsk-viewing-viewer .docking-panel.menu .menu-item-text{display:table-cell;padding:5px 10px;vertical-align:middle;white-space:nowrap}.adsk-viewing-viewer .docking-panel.menu .menu-item-icon{cursor:pointer;display:table-cell;float:left;font-size:18px;height:100%;padding:5px 0 5px 10px;vertical-align:middle;width:100%}.adsk-viewing-viewer .docking-panel.menu .menu-item-shortcut{cursor:pointer;display:table-cell;float:right;height:100%;margin-bottom:1px;padding:5px 5px 5px 0;vertical-align:middle;width:100%}.adsk-viewing-viewer .docking-panel.menu .menu-item-expand{background-position:50%;background-repeat:no-repeat;display:table-cell;padding:0 10px;position:relative;top:0}.adsk-viewing-viewer .adsk-lmv-tftable{border-spacing:1px;border-style:none;width:100%}.adsk-viewing-viewer .adsk-lmv-tftable tr.logical-group td{border:none;font-size:14px;font-weight:700;height:40px}.adsk-viewing-viewer .adsk-lmv-tftable tr.logical-group:first-child{height:65px}.adsk-viewing-viewer .adsk-lmv-tftable tr.logical-group:first-child td{padding-bottom:0;padding-top:15px}.adsk-viewing-viewer .adsk-lmv-tftable tr.logical-group td div{padding-left:10px;text-transform:capitalize}.adsk-viewing-viewer .adsk-lmv-tftable tr td{border:none;font-size:12px;height:36px;padding:0 10px 0 16px}.adsk-viewing-viewer .adsk-lmv-tftable tr td div{padding-left:10px}.adsk-viewing-viewer .adsk-lmv-tftable.adsk-lmv-settings td:last-child{height:30px;padding:0;width:30px}.adsk-viewing-viewer .adsk-lmv-tftable input{margin:0 8px}.adsk-viewing-viewer .adsk-lmv-tftable input:disabled{background-color:#ddd;color:#777}.adsk-viewing-viewer .adsk-lmv-tftable input[type=range]:disabled{background-color:#aaa}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td{padding-bottom:13px;padding-top:13px;vertical-align:top}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td:first-child{width:150px}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td:first-child div{font-weight:600}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td:nth-child(2){padding-left:0;padding-right:0;width:350px}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td:nth-child(2) div{font-weight:300;padding-left:0}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td:nth-child(3){padding:13px 16px 13px 59px;width:20px}.progressbg{background:#000;border:1px solid #2c2c2c;bottom:2px;display:block;height:4px;left:4px;pointer-events:none;position:absolute;width:240px;will-change:opacity;z-index:2}.progressfg{background:linear-gradient(90deg,#189e1c,#22e328);border-radius:2px;height:4px;transform-origin:left;width:100%;will-change:transform}.progresslb{bottom:12px;display:block;left:4px;pointer-events:none;position:absolute;z-index:2}.adsk-viewing-viewer .treeview{margin-left:0;width:100%}.adsk-viewing-viewer .treeview group{color:#333;cursor:pointer;display:block;display:inline;font-size:14px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.adsk-viewing-viewer .treeview .group.category,.adsk-viewing-viewer .treeview group.category{height:40px}.adsk-viewing-viewer .treeview .group.category,.adsk-viewing-viewer .treeview .leaf.category,.adsk-viewing-viewer .treeview group.category,.adsk-viewing-viewer .treeview leaf.category{font-weight:700}.adsk-viewing-viewer .treeview .group.property,.adsk-viewing-viewer .treeview .leaf.property,.adsk-viewing-viewer .treeview group.property,.adsk-viewing-viewer .treeview leaf.property{font-size:12px;font-weight:500}.adsk-viewing-viewer .treeview group:hover{cursor:pointer}.adsk-viewing-viewer .treeview leaf{display:block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;width:100%}.adsk-viewing-viewer .treeview group.selected>leaf,.adsk-viewing-viewer .treeview group.selected>lmvheader,.adsk-viewing-viewer leaf.selected>lmvheader{background-color:#e7e7e7}.adsk-viewing-viewer .treeview group.selected,.adsk-viewing-viewer .treeview leaf.selected{background-color:transparent;border-left:3px solid #999;transition:all .2s ease}.adsk-viewing-viewer .treeview group.collapsed>group,.adsk-viewing-viewer .treeview group.collapsed>leaf{display:none}.adsk-viewing-viewer .treeview label{font-weight:400}.adsk-viewing-viewer .treeview.on-demand{width:100%}.adsk-viewing-viewer .scroller{left:0;position:absolute;width:100%}.adsk-viewing-viewer .treeview .group{color:#333;display:block;font-size:14px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.adsk-viewing-viewer .treeview .model-div{border:0;margin:0;padding:0}.adsk-viewing-viewer .treeview .group lmvheader:hover,.adsk-viewing-viewer .treeview .leaf lmvheader:hover{cursor:pointer}.adsk-viewing-viewer .treeview .group label:hover,.adsk-viewing-viewer .treeview .leaf label:hover{cursor:pointer;text-decoration:underline}.adsk-viewing-viewer .treeview lmvheader{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:1px;padding:6px;position:relative}.adsk-viewing-viewer .treeview .leaf{display:inline;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.adsk-viewing-viewer .treeview .group>lmvheader>label,.adsk-viewing-viewer .treeview .leaf>lmvheader>label,.adsk-viewing-viewer .treeview group>lmvheader>label,.adsk-viewing-viewer .treeview leaf>lmvheader>label{pointer-events:none}.adsk-viewing-viewer .treeview .group.selected .leaf,.adsk-viewing-viewer .treeview .group.selected>lmvheader,div.leaf.selected>lmvheader{background-color:#e7e7e7}.adsk-viewing-viewer .treeview .group.selected,.leaf.selected{background-color:transparent;border-left:3px solid #999;transition:all .2s ease}.adsk-viewing-viewer .treeview label{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 50px)}.adsk-viewing-viewer .treeview .leaf label{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 30px)}.adsk-viewing-viewer .treeview lmvheader{line-height:normal}.adsk-viewing-viewer .model-structure-panel .lmv-no-properties{display:inline-block;padding:6px 6px 6px 12px;position:absolute;top:0;width:calc(100% - 18px)}.adsk-viewing-viewer .model-structure-panel .tree-loading-spinner{margin-top:40px;position:absolute;top:0}.adsk-viewing-viewer .docking-panel{background:transparent;border:none;border-radius:5px;overflow-x:hidden;overflow-y:hidden;position:absolute;z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.adsk-viewing-viewer .docking-panel-title{border:none;border-radius:5px 5px 0 0;cursor:move;font-size:20px;font-weight:300;line-height:27px;overflow:hidden;padding:11px 0 11px 14px;position:relative;resize:none;text-overflow:ellipsis;text-transform:capitalize;white-space:nowrap;z-index:1}.adsk-viewing-viewer .docking-panel-close{background-position:0 19px;background-repeat:no-repeat;cursor:pointer;height:50px;position:absolute;right:0;top:0;width:25px;z-index:1}.adsk-viewing-viewer .docking-panel-scroll{height:100%;overflow-x:auto;overflow-y:auto;position:relative;resize:none;width:100%}.adsk-viewing-viewer .docking-panel-footer{bottom:0;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;height:20px;left:0;position:absolute;width:100%}.adsk-viewing-viewer.docking-panel-resize-overlay{background-color:transparent;cursor:pointer;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:999}.adsk-viewing-viewer .docking-panel-footer-resizer{background-position-x:9px;background-position-y:8px;background-repeat:no-repeat;bottom:0;cursor:pointer;height:20px;position:absolute;right:0;width:20px}.adsk-viewing-viewer .docking-panel-gradient-container,.adsk-viewing-viewer .docking-panel-solid-container{background:none}.adsk-viewing-viewer .docking-panel-textbox{border-radius:2px;left:0;outline:none;position:relative;text-align:right;width:calc(100% - 20px)}.adsk-viewing-viewer .docking-panel-primary-button,.adsk-viewing-viewer .docking-panel-secondary-button,.adsk-viewing-viewer .docking-panel-tertiary-button{border-radius:3px;cursor:pointer;font-size:12px;font-weight:700;height:34px;letter-spacing:-.1px;line-height:34px;margin:10px;text-align:center;vertical-align:middle}.adsk-viewing-viewer .docking-panel-tertiary-button{margin:7px 10px}.adsk-viewing-viewer .docking-panel-scroll.left{direction:rtl;overflow-x:hidden}.adsk-viewing-viewer .docking-panel-scroll.right{direction:ltr;overflow-x:hidden}.adsk-viewing-viewer .docking-panel-scroll::-webkit-scrollbar{height:6px;padding:12px;width:6px}.adsk-viewing-viewer .docking-panel-scroll::-webkit-scrollbar-track{border-radius:0}.adsk-viewing-viewer .docking-panel-scroll::-webkit-scrollbar-thumb{border-radius:1px;padding:12px}.adsk-viewing-viewer .docking-panel-version-label{float:right;font-size:10px;margin-right:20px;margin-top:2px}.adsk-viewing-viewer .model-structure-panel{height:250px;min-height:100px;min-width:250px;width:300px}.adsk-viewing-viewer .treeview{left:4px}.adsk-viewing-viewer .treeview .group,.adsk-viewing-viewer .treeview .leaf{direction:ltr;height:29px;position:relative;width:100%}.adsk-viewing-viewer .leaf.selected,.adsk-viewing-viewer .treeview .group.selected{border:none}.adsk-viewing-viewer .treeview lmvheader{white-space:nowrap;word-wrap:break-word;border-radius:4px;display:inline-block;width:calc(100% - 7px)}.adsk-viewing-viewer .treeview .leaf.selected{border:none}.adsk-viewing-viewer .exclude>lmvheader{display:none}.adsk-viewing-viewer .exclude{left:0;padding-left:0}.adsk-viewing-viewer .model-structure-panel .message-unexpected{color:#fff}.adsk-viewing-viewer .property-panel{border-color:transparent;height:250px;left:220px;min-height:100px;min-width:250px;top:180px;width:300px}.adsk-viewing-viewer .property-panel .treeview{margin-left:0;overflow:hidden;padding:0}.adsk-viewing-viewer .property-panel .treeview .indented{left:21px}.adsk-viewing-viewer .property-panel .treeview .indented>lmvheader>.category-value{padding-left:10px}.adsk-viewing-viewer .property-panel .treeview .indented .expanded>lmvheader>.property-value{padding-left:20px}.adsk-viewing-viewer .property-panel .treeview group{left:0;width:100%}.adsk-viewing-viewer .property-panel .no-properties{display:inline-block;padding:6px 6px 6px 12px;width:calc(100% - 18px)}.adsk-viewing-viewer .property-panel .treeview leaf{margin-left:0}.adsk-viewing-viewer .property-panel .category-name,.adsk-viewing-viewer .property-panel .category-value,.adsk-viewing-viewer .property-panel .property-drop-down,.adsk-viewing-viewer .property-panel .property-name,.adsk-viewing-viewer .property-panel .property-value{vertical-align:middle;white-space:normal}.adsk-viewing-viewer .property-panel .category-name{display:inline-block;max-width:100px;min-width:40%;position:relative;top:-4px;vertical-align:middle}.adsk-viewing-viewer .property-panel .category-value{display:inline-block;font-style:oblique;font-weight:200;padding-left:20px;position:relative;top:-4px;vertical-align:middle}.adsk-viewing-viewer .property-panel .property-name{display:table-cell;max-width:10px;overflow-x:hidden;padding-left:28px;text-overflow:ellipsis;top:-4px;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;white-space:nowrap;width:40%}.adsk-viewing-viewer .property-panel .aggregate-name{font-size:14px;font-weight:600;padding-left:20px}.adsk-viewing-viewer .property-panel .property-value{display:table-cell;font-weight:400;height:100%;padding-left:40px;position:relative;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;vertical-align:middle;width:60%}.adsk-viewing-viewer .property-panel .property-drop-down{border:none;border-radius:5px;height:85%;margin-left:20px;margin-top:3px;max-width:150px;min-width:60%;padding-left:5px}.adsk-viewing-viewer .property-panel .separator{display:table-cell;vertical-align:middle;width:1px}.adsk-viewing-viewer .property-panel .treeview lmvheader{display:table;padding-left:13px}.adsk-viewing-viewer .property-panel .treeview group>lmvheader{padding-bottom:10px;padding-top:15px}.adsk-viewing-viewer .property-panel .treeview leaf>lmvheader{padding-bottom:0;padding-top:0}.adsk-viewing-viewer.dark-theme .treeview .leaf>lmvheader:hover,.adsk-viewing-viewer.dark-theme .treeview leaf>lmvheader:hover{background:none!important}.adsk-viewing-viewer .settings-tabs{height:40px;position:absolute;width:100%;z-index:1}.adsk-viewing-viewer .settings-tabs ul{height:100%;position:absolute;width:100%}.adsk-viewing-viewer .settings-tabs ul,.adsk-viewing-viewer .settings-tabs ul li{list-style:none;margin:0;padding:0}.adsk-viewing-viewer .settings-tabs ul li{height:100%;width:25%;-webkit-box-flex:1;-moz-box-flex:1;background-color:transparent;cursor:pointer;display:inline-block;-ms-flex:1;min-width:50px;text-overflow:clip;white-space:nowrap}.adsk-viewing-viewer .for-2d-model ul li,.adsk-viewing-viewer .for-2d-model ul li a{width:33.33%!important}.adsk-viewing-viewer .for-2d-model ul li:first-child a{text-align:right!important}.adsk-viewing-viewer .for-2d-model ul li:last-child a{text-align:left!important}.adsk-viewing-viewer .settings-tabs ul li a{height:100%;position:absolute;text-align:center;text-decoration:none;width:25%}.adsk-viewing-viewer .settings-tabs ul li:last-child a{text-align:center}.adsk-viewing-viewer .settings-tabs span{border:solid;border-color:transparent;border-width:0 0 3px;font-size:12px;font-weight:700;padding-bottom:2px;position:relative;top:16px}.adsk-viewing-viewer .settings-tabs .dockingPanel .settings-table td,.dockingPanel .settings-table td>input{cursor:pointer;display:none}.adsk-viewing-viewer .settings-tabs table.settings-table td:last-child{height:30px;padding:0;width:30px}.adsk-viewing-viewer .settings-tabs-tables-container{min-height:calc(100% - 76px)}.adsk-viewing-viewer .settings-tabs-tables-container .adsk-lmv-tftable{display:none}.adsk-viewing-viewer .settings-tabs-tables-container .settings-selected-table{display:block}.adsk-viewing-viewer .model-structure-panel{overflow:visible}.adsk-viewing-viewer .model-structure-panel .adsk-searchbox{position:absolute;top:50px;width:100%}.adsk-viewing-viewer .model-structure-panel .docking-panel-scroll{top:34px}.adsk-viewing-viewer .model-structure-panel .docking-panel-scroll.no-search{top:0}.adsk-viewing-viewer .model-structure-panel .scroller{left:0;overflow:hidden;position:absolute}.adsk-viewing-viewer .treeview div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTIuNDc0LjgyM2MuOTM2LjM5MyAxLjgxLjkyIDIuNTkyIDEuNTY2YTguOCA4LjggMCAwIDEgMS43ODIgMi4yMTQgNy4xIDcuMSAwIDAgMS0xLjU2NiAyLjQzIDkuMSA5LjEgMCAwIDEtMi41MzggMS42NzRjLTEuMzgzLjU4Ny0yLjg3Mi44OC00LjM3NC44NjRhMTAuMyAxMC4zIDAgMCAxLTQuMzItLjcwMiA4LjQgOC40IDAgMCAxLTIuNTM4LTEuNjJBNy4xIDcuMSAwIDAgMSAwIDQuNzY1YTkuMSA5LjEgMCAwIDEgMS43ODItMi40M0E5LjUgOS41IDAgMCAxIDQuMzc0LjcxNWE5LjIgOS4yIDAgMCAxIDQuMDUtLjcwMmMxLjM5LjAwNiAyLjc2NS4yODEgNC4wNS44MU04LjUzMiA4LjA2Yy40MjgtLjAwNC44NS0uMDk2IDEuMjQyLS4yNy4zODMtLjE2Ny43My0uNDA2IDEuMDI2LS43MDIuNjEtLjYxNi45NC0xLjQ1NS45MTgtMi4zMjJhMy4xOSAzLjE5IDAgMCAwLS45MTgtMi4yNjggMy40IDMuNCAwIDAgMC0xLjAyNi0uNzAyIDMuMjQgMy4yNCAwIDAgMC0yLjUzOCAwYy0uMzgzLjE2OC0uNzMuNDA2LTEuMDI2LjcwMmEzLjE5IDMuMTkgMCAwIDAtLjkxOCAyLjMyMmMuMDA2LjQyOC4wOTcuODUuMjcgMS4yNDIuMTY2LjM4NS40MDQuNzMzLjcwMiAxLjAyNmEzLjMgMy4zIDAgMCAwIDIuMjY4Ljk3Mm0xLjg5LTMuMjk0YTEuOCAxLjggMCAwIDAtLjE2Mi0uNzAyIDEuOSAxLjkgMCAwIDAtLjM3OC0uNTk0IDEuOCAxLjggMCAwIDAtLjU5NC0uMzc4bC0uNzAyLS4xNjItLjcwMi4xNjJhMS44NCAxLjg0IDAgMCAwLS45NzIuOTcyIDEuODQgMS44NCAwIDAgMCAwIDEuNDU4Yy4xNzMuNDI4LjUuNzc1LjkxOC45NzJsLjcwMi4xNjIuNzAyLS4xNjJjLjIyLS4wODYuNDIyLS4yMTQuNTk0LS4zNzguMTYxLS4xNzMuMjktLjM3NC4zNzgtLjU5NC4xMDktLjIzNy4xNjQtLjQ5NS4xNjItLjc1NnoiLz48L3N2Zz4=);background-position:6px 12px;background-repeat:no-repeat;border:none;height:100%;margin:0;opacity:.7;outline:none;padding:0;position:absolute;right:0;top:0;width:35px}.adsk-viewing-viewer .treeview div.visibility:hover{filter:drop-shadow(0 0 0 #fff)}.adsk-viewing-viewer .treeview .dim div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNSI+PHBhdGggZmlsbD0iI0Y0RjRGNCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuMzIyLjU5NGEuNjQuNjQgMCAwIDAtLjkyNCAwTDEwLjM2MiAzLjYzYy0uNzkyLS4xOTgtMS41ODQtLjM5Ni0yLjQ0Mi0uMzk2LTMuNTY0IDAtNi42IDIuMTc4LTcuOTIgNC44MTguNTk0IDEuMTg4IDEuNTg0IDIuMzEgMi43NzIgMy4xNjhsLTIuMzEgMi4zMWEuNjQuNjQgMCAwIDAgMCAuOTI0Yy4yNjQuMjY0LjY2LjI2NC45MjQgMEwxNC4zMjIgMS41MThhLjY0LjY0IDAgMCAwIDAtLjkyNG0tOS41NyA3LjQ1OEEzLjE3IDMuMTcgMCAwIDEgNy45MiA0Ljg4NGMuMzMgMCAuNzI2LjA2Ni45OS4xOThsLS44NTguODU4aC0uMTk4Yy0xLjE4OCAwLTIuMTc4Ljk5LTIuMTc4IDIuMTc4di4xOThsLS44NTguODU4YzAtLjM5Ni0uMDY2LS43OTItLjA2Ni0xLjEyMk03LjkyIDEwLjIzYzEuMTg4IDAgMi4xNzgtLjk5IDIuMTc4LTIuMTc4IDAtLjE5OC0uMDY2LS4zOTYtLjEzMi0uNjZMNy4yNiAxMC4wOThjLjI2NC4wNjYuNDYyLjEzMi42Ni4xMzJtNy45Mi0yLjE3OGMtLjY2LTEuMzItMS43ODItMi41MDgtMy4xMDItMy4zNjZsLTEuOTggMS45OGMuMTk4LjM5Ni4zMy45MjQuMzMgMS4zODZBMy4xNyAzLjE3IDAgMCAxIDcuOTIgMTEuMjJjLS41MjggMC0uOTktLjEzMi0xLjM4Ni0uMzNsLTEuNDUyIDEuNDUyYy44NTguMzMgMS44NDguNTI4IDIuODM4LjUyOCAzLjU2NCAwIDYuNi0yLjE3OCA3LjkyLTQuODE4Ii8+PC9zdmc+);background-position:6px 9px;opacity:.3}.adsk-viewing-viewer .treeview{left:0;position:relative}.adsk-viewing-viewer .treeview .group,.adsk-viewing-viewer .treeview .leaf,.adsk-viewing-viewer .treeview group,.adsk-viewing-viewer .treeview leaf{min-height:36px}.adsk-viewing-viewer .treeview .group.selected,.adsk-viewing-viewer .treeview .leaf.selected,.adsk-viewing-viewer .treeview group.selected,.adsk-viewing-viewer .treeview leaf.selected{border:none}.adsk-viewing-viewer .treeview .group.selected lmvheader,.adsk-viewing-viewer .treeview .leaf.selected lmvheader,.adsk-viewing-viewer .treeview group.selected lmvheader,.adsk-viewing-viewer .treeview leaf.selected lmvheader{background:none;border:none}.adsk-viewing-viewer .treeview .group>lmvheader,.adsk-viewing-viewer .treeview .leaf>lmvheader,.adsk-viewing-viewer .treeview group>lmvheader,.adsk-viewing-viewer .treeview leaf>lmvheader{background:none;height:35px}.adsk-viewing-viewer .treeview .group label:hover,.adsk-viewing-viewer .treeview .leaf label:hover,.adsk-viewing-viewer .treeview group label:hover,.adsk-viewing-viewer .treeview leaf label:hover{text-decoration:none}.adsk-viewing-viewer .treeview lmvheader{border-radius:0;height:100%;padding-top:9px;width:100%}.adsk-viewing-viewer .treeview lmvheader icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-repeat:no-repeat;display:inline}.adsk-viewing-viewer .treeview .collapsed lmvheader>icon{background-image:url(data:image/png;base64,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);background-repeat:no-repeat;padding:1px 10px;position:relative;top:2px}.adsk-viewing-viewer .treeview .expanded lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAA7BAAAOwQG4kWvtAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAEhJREFUeNrM0rENACAIAEHW+AHZlp2wMzEqCo0WX1734u5SSd5CIEorUAHLQgUsCzvKwAHdwgndwCU6wS0K4d/LNQAAAP//AwCPnLa8l9W0kAAAAABJRU5ErkJggg==);background-repeat:no-repeat;padding:1px 10px;position:relative;top:1px}.adsk-viewing-viewer .treeview .dim .dim>:not(.visible)>lmvheader>icon,.adsk-viewing-viewer .treeview .dim lmvheader>icon{opacity:.3}.adsk-viewing-viewer .treeview .visible .dim>:not(.dim) lmvheader>icon,.adsk-viewing-viewer .treeview .visible lmvheader>icon{opacity:1}.adsk-viewing-viewer .treeview .leaf>lmvheader>icon,.adsk-viewing-viewer .treeview leaf>lmvheader>icon{display:none;padding:1px 10px}.adsk-viewing-viewer .search-box-icon{height:13px;left:12px;position:absolute;top:58px;width:13px}.adsk-viewing-viewer .spinner.search-in-progress{bottom:0;left:calc(100% - 65px);margin:0;position:absolute;text-align:center;top:56px;visibility:visible;width:60px;z-index:1}.adsk-viewing-viewer .viewer-settings-panel{border-radius:0;border-radius:6px;left:50%;top:5px}.adsk-viewing-viewer .viewer-settings-panel .docking-panel-title{border-radius:6px 6px 0 0}.adsk-viewing-viewer .viewer-settings-panel.docking-panel .docking-panel-scroll.right{height:calc(100% - 60px);position:absolute;top:90px}.adsk-viewing-viewer .viewer-settings-panel.docking-panel .restore-defaults-container{background-color:transparent;display:table;left:50%;position:absolute;transform:translateX(-50%);width:fit-content;width:-moz-max-content}.adsk-viewing-viewer .viewer-settings-panel.docking-panel .docking-panel-tertiary-button{margin:20px 0;padding:0 10px}.adsk-viewing-viewer .viewer-settings-panel .adsk-lmv-tftable tr td{padding-left:10px}.adsk-viewing-viewer .viewer-settings-panel .environments-container{padding-top:15px;position:relative}.adsk-viewing-viewer .viewer-settings-panel .environments-lighting-table{left:20px;position:relative;width:calc(100% - 44px)}.adsk-viewing-viewer .viewer-settings-panel .settings-row-title{font-weight:600}.adsk-viewing-viewer .viewer-settings-panel .settings-environment-cell{cursor:pointer;display:block;height:36px;text-align:left;width:100%}.adsk-viewing-viewer .viewer-settings-panel .settings-environment-image{display:inline-block;height:24px;left:4px;position:relative;top:4px;width:40px}.adsk-viewing-viewer .viewer-settings-panel .settings-environment-name{font-size:10px;font-weight:700;left:11px;position:relative;top:-4px}.adsk-viewing-viewer .viewer-settings-panel .settings-container{padding-top:15px;position:relative}.adsk-viewing-viewer .viewer-settings-panel .settings-table{left:10px;position:relative;width:calc(100% - 20px)}.adsk-viewing-viewer .viewer-settings-panel .settings-cell{cursor:pointer;display:block;text-align:left;width:100%}.adsk-viewing-viewer .viewer-settings-panel .settings-name{display:block;font-size:18px;font-weight:700;margin-left:5px}.adsk-viewing-viewer .viewer-settings-panel .settings-description{display:block;font-size:11px;font-weight:700;margin-bottom:7px;margin-left:13px}.adsk-viewing-viewer .adsk-toolbar{bottom:10px;left:10px;pointer-events:none;position:absolute;text-align:center;width:calc(100% - 20px);z-index:5}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical{display:flex;flex-direction:column;height:calc(100% - 20px);justify-content:center;left:unset;right:15px;width:50px}.adsk-viewing-viewer .adsk-control.adsk-hidden{display:none}.adsk-viewing-viewer .adsk-control:hover>.adsk-control-tooltip{visibility:visible}.adsk-viewing-viewer .adsk-control-tooltip{border-radius:3px;bottom:120%;font-size:11px;left:0;line-height:1.2;opacity:1;padding:4px;position:absolute;text-align:center;text-transform:capitalize;visibility:hidden;white-space:nowrap;z-index:5}.adsk-viewing-viewer .adsk-toolbar-vertical .adsk-control-tooltip{bottom:25%;left:unset;right:120%}.adsk-toolbar .adsk-control-group{border-radius:5px;display:inline-block;margin:0 5px;pointer-events:all}.adsk-toolbar.adsk-toolbar-vertical .adsk-control-group{margin:5px 0}.adsk-viewing-viewer .adsk-button{border:1px solid rgba(34,34,34,0);border-radius:4px;cursor:pointer;float:left;height:28px;margin:4px;padding:6px;position:relative;width:28px}.adsk-viewing-viewer .adsk-button-icon{background-position:50%;background-repeat:no-repeat;display:inline-block;font-size:24px;height:100%;line-height:1;padding-top:3px;position:relative;width:100%}.adsk-viewing-viewer .adsk-button.disabled{-ms-filter:"alpha(opacity=40)";filter:alpha(opacity=40);opacity:.4}.adsk-viewing-viewer .adsk-button.collapsed{display:none}.adsk-viewing-viewer .adsk-toolbar .adsk-label-button{margin:3px 3px 3px 1px;opacity:1;vertical-align:middle;width:auto}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button{height:auto;margin:1px 3px 3px;width:28px}.adsk-viewing-viewer .adsk-toolbar .adsk-label-button label{border-radius:3px;cursor:pointer;display:block;font-size:12px;padding:8px 10px}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button label{padding:10px 8px;writing-mode:sideways-lr}.adsk-button-arrow{position:absolute;right:-5px;top:-5px}.adsk-button-arrow>.adsk-button-icon{font-size:18px}.adsk-button-arrow>.adsk-button-icon:before{content:"\25b4";padding:0 5px}.adsk-toolbar.adsk-toolbar-vertical .adsk-button-arrow{left:-5px;right:unset}.adsk-toolbar.adsk-toolbar-vertical .adsk-button-arrow>.adsk-button-icon:before{content:"\25c2"}.adsk-viewing-viewer .adsk-searchbox input.search-box{box-sizing:border-box;direction:ltr;font-size:12px;height:34px;line-height:normal;margin:0;outline:none;padding:7px 12px 8px 40px;position:relative;width:100%;z-index:1}.adsk-viewing-viewer .adsk-searchbox .search-box-icon{height:13px;left:12px;position:absolute;top:10px;width:13px;z-index:1}.adsk-viewing-viewer .adsk-searchbox .search-box-close{cursor:pointer;height:14px;position:absolute;right:13px;top:10px;width:14px;z-index:1}.adsk-viewing-viewer .adsk-searchbox.empty>.search-box-close{display:none}.adsk-viewing-viewer .adsk-filterbox{position:relative}.adsk-viewing-viewer .adsk-filterbox input.filter-box{box-sizing:border-box;direction:ltr;font-size:12px;height:34px;line-height:normal;margin:0;outline:none;padding:7px 12px 8px 40px;position:relative;width:100%;z-index:1}.adsk-viewing-viewer .adsk-filterbox .filter-box-icon{height:7px;left:22px;position:absolute;top:12px;width:10px;z-index:1}.adsk-viewing-viewer .adsk-filterbox .filter-box-close{cursor:pointer;height:14px;position:absolute;right:13px;top:10px;width:14px;z-index:1}.adsk-viewing-viewer .adsk-filterbox.empty>.filter-box-close{display:none}.adsk-viewing-viewer .adsk-search-results{border-radius:0;height:450px;left:0;margin:0;max-height:400px;min-height:70px;min-width:250px;overflow:hidden;position:absolute;top:34px;width:550px}.adsk-viewing-viewer .adsk-search-results.no-content{min-height:105px}.adsk-viewing-viewer .adsk-search-results .docking-panel-scroll{height:calc(100% - 20px);left:0;position:absolute;top:0}.adsk-viewing-viewer .adsk-search-results.no-content .docking-panel-scroll{overflow:hidden}.adsk-viewing-viewer .adsk-search-results-scrolling-panel .search-result-container{overflow-x:hidden;padding-left:20px;padding-top:6px;white-space:nowrap}.adsk-viewing-viewer .adsk-search-results-scrolling-panel .search-result{height:50px}.adsk-viewing-viewer .adsk-search-results-scrolling-panel .no-results-container{padding-bottom:20px;padding-top:20px;text-align:center}.adsk-viewing-viewer .adsk-search-results-scrolling-panel .no-results-title{font-size:18px}.adsk-viewing-viewer .adsk-search-results-scrolling-panel>div[lmv-nodeid]:hover{cursor:pointer}.adsk-viewing-viewer .adsk-search-results-scrolling-panel .search-path{display:block;font-size:11px;overflow:hidden;padding-top:2px;text-overflow:ellipsis;width:calc(100% - 5px)}.geometry{color:#333;cursor:pointer;display:inline-block;font-family:Helvetica Neue Light,Segoe UI Semilight,sans-serif;font-size:13px;margin-left:1em;margin-top:10px;max-width:200px;opacity:.8;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.browserview item:hover{opacity:1;transition:all .5s ease}.browserview:hover item.selected{opacity:1;transition:all .38s ease}.geometry label{backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;background:rgba(34,34,34,.6);color:#f4f4f4;cursor:pointer;display:block;height:72px;line-height:1.5;max-width:200px;overflow:hidden;padding:10px;position:relative;text-overflow:ellipsis;top:162px;white-space:nowrap;z-index:203}.geometry label,.geometry label:hover{opacity:0;transition:all .2s ease-in-out}.geometry label:hover{height:200px;margin-top:-72px;overflow:visible;white-space:normal}.geometry label:hover~img{display:block;margin-top:-148px;transition:all .2s ease-in-out;width:200px}.flipped>.browserElement label{opacity:0!important}.browserview>item:hover label{filter:alpha(opacity=50);opacity:1}.geometry img{display:block;margin-top:-92px;transition:all .2s ease-in-out;width:200px}.geometry img:hover{cursor:pointer}.browserview>item.selected,.browserview>item.selected label{opacity:1;transition:all .2s ease-in-out}.geometry .selected:hover{background-color:rgba(0,0,0,.15);opacity:1}.browserVisible{opacity:1;transition:opacity 1s linear;visibility:visible}.browserHidden{height:0;opacity:0;visibility:hidden;overlfow:hidden}.cameraview{background-color:hsla(0,0%,88%,.8);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-position:5px 5px;background-repeat:no-repeat;margin:1px 2px 0;padding:6px 6px 6px 28px;transition:all .2s ease-in-out}.cameraview-selected{border-left:3px solid #999;transition:all .2s ease}.cameraview:hover{background-color:hsla(0,0%,80%,.8)}.geometry{background-color:#f4f4f4;border:1px solid hsla(0,0%,80%,.8);height:200px;overflow:hidden;perspective:800px;-webkit-perspective:800;-moz-perspective:800;-ms-perspective:800;-o-perspective:800;position:relative;width:200px}.adsk-viewing-viewer .card{height:100%;position:absolute;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;-o-transform-style:preserve-3d;transition:transform .38s ease-in;width:100%}.browserElement{transform:perspective(800px) rotateY(0deg);-webkit-transform:rotateY(0deg);-moz-transform:rotateY(0deg);-ms-transform:rotateY(0deg);-o-transform:rotateY(0deg)}.browserElement,.wrappercam{backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;display:block;height:100%;overflow:hidden;transition:all .38s;width:100%}.wrappercam{background-color:hsla(0,0%,100%,.7);position:relative;top:-200px;transform:perspective(800px) rotateY(180deg);-webkit-transform:rotateY(180deg);-moz-transform:rotateY(180deg);-ms-transform:rotateY(180deg);-o-transform:rotateY(180deg)}.cameraviews{height:calc(100% - 44px)!important;transition:all .38s}.card .cameraviews{overflow-Y:scroll}.flipped .browserElement{transform:perspective(800px) rotateX(-180deg);transform:rotateY(-180deg);-webkit-transform:rotateY(-180deg);-moz-transform:rotateY(-180deg);-ms-transform:rotateY(-180deg);-o-transform:rotateY(-180deg)}.flipped .wrappercam{transform:perspective(800px) rotateX(0deg);transform:rotateY(0deg);-webkit-transform:rotateY(0deg);-moz-transform:rotateY(0deg);-ms-transform:rotateY(0deg);-o-transform:rotateY(0deg)}.wrappercam p{backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;font-weight:700;margin:15px 6px 15px 10px}.viewsbtn{background-color:rgba(34,34,34,.8);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY3OUM5RjIyQjlCNTExRTM4MzIyREIzMEE0OTQxMjA3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY3OUM5RjIzQjlCNTExRTM4MzIyREIzMEE0OTQxMjA3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Rjc5QzlGMjBCOUI1MTFFMzgzMjJEQjMwQTQ5NDEyMDciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Rjc5QzlGMjFCOUI1MTFFMzgzMjJEQjMwQTQ5NDEyMDciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6o3qeAAAAAsElEQVR42mL8//8/A7UAEwMVweA1jOXr16/hQHoqEAsTof4tEGcD8UqYADc3N1yS8cuXLx+AND8JDvgIxALIhgEdJA1kzmJCMkgPZDga1sNiGIrFQIMSgNRVIPYCuQyWNhhxuARb2mGEijMiyyNHgC4WTbokRQAS+9JoomXAEQkgkAhNLmDDPpJoCIp6YDpbAKS0gXgbyLB0aMpmIDIHpKMLAg18CsTejKNFEMkAIMAAglkqhjcW+DoAAAAASUVORK5CYII=);background-position:25px 4px;background-repeat:no-repeat;border-radius:16px;color:#f4f4f4;cursor:pointer;height:14px;padding:6px;position:absolute;right:10px;top:10px;width:40px}.viewsbtn,.viewsbtn:hover{transition:all .38s ease-in-out}.viewsbtn:hover{background-color:rgba(96,96,96,.8)}.flipped~.viewsbtn{background-image:none;background-position:35px 4px;width:14px}.flipped~.viewsbtn,.viewsbtn p{transition:all .38s ease-in-out}.viewsbtn p{font-weight:700;margin:0 0 0 3px;text-align:left}.adsk-viewing-viewer #count{opacity:1}.adsk-viewing-viewer #close{opacity:0;position:relative;text-shadow:0 1px 1px #333;top:-16px}.flipped~.viewsbtn>#count{opacity:0}.flipped~.viewsbtn>#close{opacity:1}.adsk-viewing-viewer{background:#ededed;font-family:ArtifaktElement,Helvetica Neue,Segoe UI Semilight,sans-serif;-webkit-touch-callout:none;position:absolute;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.adsk-viewing-viewer *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.adsk-viewing-viewer.viewer-fill-browser{height:100%;left:0;position:fixed;top:0;width:100%;z-index:10}.adsk-viewing-viewer highlight{background-color:#ff9;color:#555}.adsk-viewing-viewer .hide-while-context-lost{display:none}.adsk-viewing-viewer .viewer-container .alert-box-content,.adsk-viewing-viewer .viewer-container .alert-box-text,.adsk-viewing-viewer .viewer-container .alert-box-title{word-wrap:normal;word-break:normal}.adsk-viewing-viewer .forge-logo-canvas{animation:fadeIn 1.5s ease;-webkit-animation:fadeIn 1.5s ease;border-top:2px solid hsla(0,0%,50%,.4);bottom:0;height:35px;position:absolute;right:0;text-align:right;width:100%}.adsk-viewing-viewer .forge-logo-canvas img{max-height:100%;max-width:100%;position:relative}.adsk-viewing-viewer .spinner{bottom:0;height:12.5%;left:0;margin:auto;position:absolute;right:0;text-align:center;top:0;visibility:visible;width:25%}.adsk-viewing-viewer .spinner>div{-webkit-animation:bouncedelay 1.4s ease-in-out infinite;animation:bouncedelay 1.4s ease-in-out infinite;-webkit-animation-fill-mode:both;animation-fill-mode:both;background-color:#fff;border-radius:100%;display:inline-block;height:0;margin:0 1.5%;padding-bottom:12%;width:12%}.adsk-viewing-viewer .spinner .bounce1{-webkit-animation-delay:-.75s;animation-delay:-.75s}.adsk-viewing-viewer .spinner .bounce2{-webkit-animation-delay:-.5s;animation-delay:-.5s}.adsk-viewing-viewer .spinner .bounce3{-webkit-animation-delay:-.25s;animation-delay:-.25s}@-webkit-keyframes bouncedelay{0%,95%,to{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes bouncedelay{0%,95%,to{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.adsk-viewing-viewer .forge-spinner{animation:fadeIn .9s ease;-webkit-animation:fadeIn .9s ease;left:50%;position:absolute;text-align:center;top:50%;visibility:visible;width:min-content}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.adsk-viewing-viewer .forge-spinner svg{transform:rotate(90deg)}.adsk-viewing-viewer .forge-spinner img{padding-top:50px;transform:scale(.7)}.adsk-viewing-viewer .forge-spinner .light-blue{fill:#65bee7;fill-rule:nonzero;opacity:0}.adsk-viewing-viewer .forge-spinner .dark-blue{fill:#0895d7;fill-rule:nonzero;opacity:0}.adsk-viewing-viewer .message-panel table{display:block;position:relative;-webkit-border-horizontal-spacing:0;-webkit-border-vertical-spacing:0}.adsk-viewing-viewer .message-panel tbody,.adsk-viewing-viewer .message-panel tr{position:absolute;width:100%}.adsk-viewing-viewer .message-panel .name{display:inline-block;padding-left:10px;position:relative;text-align:left;width:calc(60% - 10px)}.adsk-viewing-viewer .message-panel .value{display:inline-block;padding-right:10px;position:absolute;text-align:right;width:calc(40% - 10px)}.adsk-viewing-viewer .message-panel td{line-height:34px;vertical-align:middle}.adsk-viewing-viewer .focal-length{height:34px;left:50%;min-height:0;min-width:0;position:absolute;top:40px;transform:translateX(-50%);width:160px}[tooltipText*=Inspect]{left:100%}.adsk-viewing-viewer .toolbar-layers-tool{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAJ1BMVEUAAADS1dbS1dbS1dbS1dbS1dbS1dbS1dbS1dbS1dbS1dbS1dbS1dbKDmVBAAAADHRSTlMA8NCgYDAgEJBQsHC3H/WiAAAAT0lEQVQY02MgAdicAYFDYDbHGTBQB3N8wOyDCSA2J0RCFCwRCOFMALHZZMDsI2tABhRBJJrBBuiA2Yf3AA2AARZaGgBkwg1oADLhBpAQFgDkeF4dRV5pxwAAAABJRU5ErkJggg==)}.adsk-viewing-viewer .toolbar-menu-collapsed .toolbar-subtoolbar:first-child,.adsk-viewing-viewer .toolbar-menu-collapsed .toolbar-subtoolbar:nth-child(2),.adsk-viewing-viewer .toolbar-menu-collapsed .toolbar-subtoolbar:nth-child(n+3){display:none}.adsk-viewing-viewer .toolbar-settings-sub-menu{background:#222;bottom:40px;color:#fff;display:block;font-size:14px;left:0;line-height:14px;list-style:none;margin-bottom:10px;min-width:300px;position:absolute;text-align:left;-webkit-padding-start:0;-moz-padding-start:0;-ms-padding-start:0;border:1px solid hsla(0,0%,59%,.15);border-radius:5px;box-shadow:0 3px 5px rgba(0,0,0,.5);transition:all .2s ease}.adsk-viewing-viewer .toolbar-settings-sub-menu.adsk-hidden{display:block;opacity:0;visibility:hidden}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-checkbox{cursor:pointer;height:14px;margin:0 5px 0 0;padding:0;width:14px}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-horizontal-divider{border-top:1px solid #000;height:1px}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-listitem{padding:20px;position:relative;width:calc(100% - 40px)}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-listitem:hover{background-color:rgba(166,194,255,.8);border-radius:4px}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-listitem input[type=checkbox]{vertical-align:middle}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-listitem input[type=checkbox]+label{cursor:pointer;vertical-align:middle}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-select{display:block;padding:20px 20px 0;position:relative;width:calc(100% - 40px)}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-selectlabel{cursor:default;display:block;padding-bottom:4px;position:relative}.adsk-viewing-viewer .toolbar-menu div>li{float:left;padding:4px}.adsk-viewing-viewer .docking-panel .adsk-lmv-tftable{padding:0}.adsk-viewing-viewer .statspanel{background:rgba(0,0,0,.5);bottom:12px;box-sizing:border-box;color:#eee;display:block;left:4px;min-height:10px;padding:8px;user-select:text;white-space:nowrap;width:240px}.adsk-viewing-viewer .fps,.adsk-viewing-viewer .statspanel{font-family:consolas,courier,"monospace";font-size:14px;position:absolute;visibility:hidden;z-index:1}.adsk-viewing-viewer .fps{bottom:0;color:#000;right:0}.adsk-viewing-viewer .option-drop-down{font-size:11px;width:160px}.adsk-viewing-viewer .option-drop-down.tabcell{left:20px;position:relative;width:calc(100% - 45px)}.adsk-viewing-viewer .adsk-toolbar .adsk-button>.toolbar-vertical-group{bottom:125%;left:-5px;margin:0;position:absolute;transition:all .2s ease;z-index:1}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-button>.toolbar-vertical-group{bottom:-5px;left:unset;right:50px}.adsk-viewing-viewer .adsk-toolbar .adsk-button>.toolbar-vertical-group:last-child{margin-top:0}.adsk-viewing-viewer .adsk-toolbar .adsk-button>.toolbar-vertical-group.adsk-hidden{display:block;opacity:0;visibility:hidden}.adsk-viewing-viewer .adsk-control-tooltip{pointer-events:none}.adsk-viewing-viewer .notouch .adsk-toolbar .adsk-button>.toolbar-vertical-group:hover~.adsk-control-tooltip{visibility:hidden}.adsk-viewing-viewer .adsk-toolbar .adsk-button>.toolbar-vertical-group~.adsk-control-tooltip{left:120%}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-button>.toolbar-vertical-group:not(.adsk-hidden)~.adsk-control-tooltip{visibility:hidden}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-button>.toolbar-vertical-group.adsk-hidden~.adsk-control-tooltip{bottom:25%;left:unset;right:120%;top:unset}.adsk-viewing-viewer .adsk-toolbar .adsk-button>.toolbar-vertical-group>.adsk-button>.adsk-control-tooltip{bottom:25%;left:120%;top:unset}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-button>.toolbar-vertical-group>.adsk-button>.adsk-control-tooltip{left:unset}.adsk-viewing-viewer .explode-submenu{bottom:calc(100% + 10px);cursor:default;display:none;height:34px;left:50%;min-height:0;min-width:0;position:absolute;transform:translateX(-50%);width:160px}.adsk-viewing-viewer .explode-submenu.visible{display:block}.adsk-viewing-viewer .explode-submenu.android,.adsk-viewing-viewer .explode-submenu.ios{width:80%}.adsk-viewing-viewer input[type=range].explode-slider{cursor:col-resize;display:block;height:14px;margin:10px;padding:0;width:calc(100% - 20px)}.adsk-viewing-viewer input[type=range].explode-slider::-ms-tooltip{display:none}.adsk-viewing-viewer #toolbar-inspectTools .explode-submenu{bottom:0;left:55px;margin:0}.adsk-viewing-viewer .switch-slider-row{cursor:pointer}.adsk-viewing-viewer .switch-slider-row-beta-label{background-color:#f8dba4;border-radius:10px;color:#3c3c3c;margin-top:5px;padding-left:10px;padding-right:10px;width:fit-content}.adsk-viewing-viewer .switch{display:inline-block;height:8px;margin:0;padding-bottom:2px;padding-top:10px;pointer-events:none;position:relative;width:31px}.adsk-viewing-viewer .switch input{display:none}.adsk-viewing-viewer .switch .slider{height:2px;left:15px;top:5px;-webkit-transition:.4s;transition:.4s;width:16px}.adsk-viewing-viewer .switch .slider:before{border-radius:50%;content:"";height:16px;left:0;position:absolute;top:3px;-webkit-transition:.4s;transition:.4s;width:16px}.adsk-viewing-viewer .switch input:checked+.slider:before{-webkit-transform:translateX(12px);-ms-transform:translateX(12px);transform:translateX(12px)}.adsk-viewing-viewer .table-button{border:1px solid #fefffe;color:#fefffe;height:auto;text-align:center;width:80%}.adsk-viewing-viewer .datatable .clusterize-scroll{max-height:200px;overflow:auto}.adsk-viewing-viewer .datatable table{border:1px solid #000;border-collapse:collapse;border-spacing:0;margin-bottom:0;width:100%}.adsk-viewing-viewer .datatable .subrow{font-size:0;-webkit-transition:all 1s ease-in-out;transition:all 1s ease-in-out}.adsk-viewing-viewer .datatable .parentrow{background-color:#4a4747}.adsk-viewing-viewer .datatable table td,.adsk-viewing-viewer .datatable table th{border:1px solid #000;white-space:nowrap}.adsk-viewing-viewer .datatable .table-striped>tbody>tr:nth-child(odd)>td,.adsk-viewing-viewer .datatable .table-striped>tbody>tr:nth-child(odd)>th{background-color:#4a4747}.adsk-viewing-viewer .datatable td>span{float:right;height:1em;margin-left:5px;margin-right:3px;margin-top:4px;position:relative;white-space:nowrap;width:1em}.adsk-viewing-viewer .datatable td>span:before{border-top:2px solid #000;border-color:inherit;content:"";height:0;left:10%;margin-top:-1px;position:absolute;top:50%;width:80%}.adsk-viewing-viewer .datatable td>span.collapsed:after{border-left:2px solid #000;border-color:inherit;content:"";height:80%;left:50%;margin-left:-1px;position:absolute;top:10%;width:0}.adsk-viewing-viewer .datatable td>span:hover{border-color:orange}.adsk-viewing-viewer .datatable .aggregate-headers{overflow-x:scroll}.adsk-viewing-viewer .datatable .aggregateArea td{font-family:initial!important;font-size:16px!important;text-align:center}.split-view-container{height:100%;left:0;position:relative;width:100%}.split-view-container .split-view-viewer-container{background-color:#e5e5e5;height:100%;position:absolute;width:100%}.split-view-container .resize-handler{background:transparent;position:absolute;z-index:4}.split-view-container .resize-handler.vertical{cursor:col-resize;height:100%;left:100%;top:0}.split-view-container .resize-handler.horizontal{cursor:row-resize;left:0;top:100%;width:100%}.split-view-container .resize-handler-center-mark{background:#73a9e8;position:absolute}.split-view-container .resize-handler-center-mark.vertical{height:100%;left:7.5px;width:1px}.split-view-container .resize-handler-center-mark.horizontal{height:1px;top:7.5px;width:100%}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.orbit-gizmo{height:500px;left:calc(50% - 250px);pointer-events:none;position:absolute;top:calc(50% - 250px);width:500px}div.orbit-gizmo div{border:0;border-color:#989898;border-style:solid}.orbit-gizmo .layout-ver{float:left;height:100%;width:10%}.orbit-gizmo .layout-hor{height:10%;margin:0 auto;width:80%}.orbit-gizmo .layout-mid{height:80%;text-align:center;width:100%}.orbit-gizmo .outside{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGd27GMAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS44NzuAXQAAAHJJREFUOE/Vk0ESwCAIA+n/H02FItBK8Go5ObqDMUTiTdERAPUyiOlqCQFaQoGOeIBEfCUZ4MSiaAJGiKBXsQNK6HW5xnFspqUzAWhf2CGsqDVks6pXDHXJzcIHiQz22wa1BXCLOWrYwrOAcnNGqn/w9W4hXTJqyBXrqAAAAABJRU5ErkJggg==),auto;height:1000%;margin-bottom:-550%;margin-left:-450%;margin-top:-450%;pointer-events:auto;width:1000%}.orbit-gizmo .ring{border:50px solid hsla(0,0%,100%,0);border-radius:2500px;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ3bsYwAAAQB0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AFP3ByUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41Ljg3O4BdAAAAlklEQVQ4T81TwRbAIAiy///ozaQUN31d61IRKYbJcxhyHUHmyKp4KzJ0tAQc9wTcRgpOswPOc8cllg8RIjmzF6oQiYMaAC1BBspdNA9ge9WQAUV2QJt7gqlDjK3pk0LvInNH+Isuq6AAdZkFgSFW4A81CdsAs9XfNRbuZvacHFr9wLaGFyh+mZR6KjfYoSfLP3TfzypkvjV8LGaZGHW7AAAAAElFTkSuQmCC) 16 16,nesw-resize;height:80%;margin-bottom:-100%;pointer-events:auto;width:80%}.orbit-gizmo .ring:hover{border-color:hsla(0,0%,100%,.1)}.orbit-gizmo .circle{border-radius:2500px;border-width:1px;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAt1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAzMzP6+vri4uISEhKKioqtra2dnZ2EhIR9fX10dHRkZGQdHR3t7e3Hx8e5ubm1tbWoqKhWVlZKSko4ODgICAjv7+/o6OjMzMyxsbFOTk4pKSkXFxcEBAT29vbW1tZ6enpISEgLCwvhzeX+AAAAGXRSTlMANRO0nHRJHfnskIxQRKh89syDVwTWZjEJxPFEswAAAOFJREFUKM+1j+lygkAQhIflEAJe0Rw9u4CCeKKoSTTX+z9XoMJWWeX+ssrvZ3f19DQ5zOw/0DUMQPlmQ72bE2adBp8/Rp3CQUi3ILx+bxj4fjDs9T1Bmo6bbPPN8aDU4bjJt4nb+de789kSFyxn826jW3ICLNZZKU8nWWbrBTCRVm04U8TpjquRFf1Go0d7l8aYOrUR7FGEFr1S9LGymwthgX2gE/Kl0cHPOtF2xOWZ5QpIC93RflW4InkDoPRXesd5LJIMQPzV7tCMa7f6BvhJL79AVDmYTNQ1NhnxbI/uwB8H5Bjd4zQPBAAAAABJRU5ErkJggg==),auto;float:left;height:calc(100% - 3px);pointer-events:auto;width:calc(80% - 3px)}.orbit-gizmo .circle .crosshair-area{height:10%;margin:45% auto 0;width:10%}.orbit-gizmo .circle .crosshair-area .crosshair-v{border-left-width:1px;height:100%;margin:0 auto;width:0}.orbit-gizmo .circle .crosshair-area .crosshair-h{border-bottom-width:1px;height:0;margin-top:-50%;width:100%}.orbit-gizmo .edgemark-area{pointer-events:auto}.orbit-gizmo .edgemark-area .edgemark{pointer-events:none}.orbit-gizmo .edgemark-area:hover{background-color:hsla(0,0%,100%,.1)}.orbit-gizmo .layout-hor .edgemark-area{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGd27GMAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS44NzuAXQAAAHJJREFUOE/dk8EOwCAIQ/H/P1ot6gZd7A5LPIyb6UsxUKy+lJ0GDJWbhmfXCioTEYAIKBEEFJgooGtkkR3wUoDTAphumbhbXCPYAuv7/wbWCD/twhe9dxgSByKGA4BKlLurTI7+lNnKIefUM/A8xAO32QA2rkRBShFyJgAAAABJRU5ErkJggg==) 16 16,ns-resize;height:100%;margin:0 auto;width:12.5%}.orbit-gizmo .layout-ver .edgemark-area{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ3bsYwAAAQB0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AFP3ByUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41Ljg3O4BdAAAAeUlEQVQ4T+VTwRbAIAhy///RTUWMtt7bbZc8LaEEVjY+ys4jWNXivHNw8EKRZ4kVodEkFDFPAgGtHpFLbiXu6JwtjOj6UlFsiSZH8FvVh5CF8PqrSkiNqgGWS//GBSSqC/qspMRkBzVmkM9xYr4zXuycdye3jn94mzejtD9JdIFZgAAAAABJRU5ErkJggg==) 16 16,ew-resize;height:12.5%;margin-top:350%;width:100%}.orbit-gizmo .layout-hor .edgemark-area .edgemark{border-left-width:1px;height:100%;margin:0 auto;width:0}.orbit-gizmo .layout-ver .edgemark-area .edgemark{border-bottom-width:1px;height:0;padding-top:50%;width:100%} \ No newline at end of file diff --git a/public/autodesk/viewer3D.min.js b/public/autodesk/viewer3D.min.js new file mode 100644 index 0000000..00cfee2 --- /dev/null +++ b/public/autodesk/viewer3D.min.js @@ -0,0 +1,109 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */ +var LMV;(()=>{var e,t,i={90002:e=>{e.exports="#if NUM_CUTPLANES > 0\n#ifdef LINE_CUTPLANE\nuniform vec4 cutplanes[NUM_CUTPLANES];\nuniform bool cutplanesHideInterior;\nbool checkHideInterior(vec3 worldPosition) {\n int insideCount = 0;\n for (int i=0; i 0.0) {\n return false;\n }\n }\n return true;\n}\nbool checkCutPlanes(vec3 worldPosition) {\n if (!checkInsideCutplanes(vWorldPosition)) {\n #if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n \n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n gl_FragDepth = 1.0;\n \n return true;\n #else\n discard;\n #endif\n }\n return false;\n}\n#else\nuniform vec4 cutplanes[NUM_CUTPLANES];\nuniform bool cutplanesHideInterior;\nvoid checkHideInterior(vec3 worldPosition) {\n int insideCount = 0;\n for (int i=0; i 0.0) {\n discard;\n }\n }\n}\n#endif\n#endif\n"},92070:e=>{e.exports="uniform float point_size;"},96900:e=>{e.exports="\nuniform sampler2D tDepth;\nuniform vec4 projInfo;\nuniform float isOrtho;\nuniform mat4 worldMatrix_mainPass;\nvec3 reconstructCSPosition(vec2 fragCoords, float z) {\n return vec3((fragCoords * projInfo.xy + projInfo.zw) * mix(z, -1.0, isOrtho), z);\n}\nvec3 reconstructWorldPosition(vec2 fragCoords, vec2 screenUv) {\n float zCam = texture(tDepth, screenUv).z;\n vec3 csPos = reconstructCSPosition(fragCoords, zCam);\n return (worldMatrix_mainPass * vec4(csPos, 1.0)).xyz;\n}\n"},1081:e=>{e.exports="\nuniform float envRotationSin;\nuniform float envRotationCos;\nvec3 adjustLookupVector(in vec3 lookup) {\n return vec3(\n envRotationCos * lookup.x - envRotationSin * lookup.z,\n lookup.y,\n envRotationSin * lookup.x + envRotationCos * lookup.z);\n}\nvec3 RGBMDecode(in vec4 vRGBM, in float exposure) {\n vec3 ret = vRGBM.rgb * (vRGBM.a * 16.0);\n ret *= ret;\n ret *= exposure;\n return ret;\n}\nvec3 GammaDecode(in vec4 vRGBA, in float exposure) {\n return vRGBA.xyz * vRGBA.xyz * exposure;\n}\nvec3 sampleIrradianceMap(vec3 dirWorld, samplerCube irrMap, float exposure) {\n vec4 cubeColor4 = texture(irrMap, adjustLookupVector(dirWorld));\n#ifdef IRR_GAMMA\n vec3 indirectDiffuse = GammaDecode(cubeColor4, exposure);\n#elif defined(IRR_RGBM)\n vec3 indirectDiffuse = RGBMDecode(cubeColor4, exposure);\n#else\n vec3 indirectDiffuse = cubeColor4.xyz;\n#ifdef GAMMA_INPUT\n indirectDiffuse.xyz *= indirectDiffuse.xyz;\n#endif\n#endif\n return indirectDiffuse;\n}\n"},26750:e=>{e.exports="#ifdef HATCH_PATTERN\noutFragColor = calculateHatchPattern(hatchParams, gl_FragCoord.xy, outFragColor, hatchTintColor, hatchTintIntensity);\n#endif\n#ifdef MRT_NORMALS\noutNormal = vec4(geomNormal.x, geomNormal.y, depth, outFragColor.a < 1.0 ? 0.0 : 1.0);\n#endif\n#include \n"},40304:e=>{e.exports="float averageOfFloat3(in vec3 value) { \n const float oneThird = 1.0 / 3.0; \n return dot(value, vec3(oneThird, oneThird, oneThird)); \n} \n"},22826:e=>{e.exports="#ifdef HATCH_PATTERN\nuniform vec2 hatchParams;\nuniform vec3 hatchTintColor;\nuniform float hatchTintIntensity;\nfloat curveGaussian(float r, float invWidth) {\n float amt = clamp(r * invWidth, 0.0, 1.0);\n float exponent = amt * 3.5;\n return exp(-exponent*exponent);\n}\nvec4 calculateHatchPattern(vec2 hatchParams, vec2 coord, vec4 fragColor, vec3 hatchTintColor, float hatchTintIntensity ) {\n float hatchSlope = hatchParams.x;\n float hatchPeriod = hatchParams.y;\n if (abs(hatchSlope) <= 1.0) {\n float hatchPhase = coord.y - hatchSlope * coord.x;\n float dist = abs(mod((hatchPhase), (hatchPeriod)));\n if (dist < 1.0) {\n fragColor = vec4(0.0,0.0,0.0,1.0);\n } else {\n fragColor.xyz = mix(fragColor.xyz, hatchTintColor, hatchTintIntensity);\n }\n } else {\n float hatchPhase = - coord.y / hatchSlope + coord.x;\n float dist = abs(mod((hatchPhase), (hatchPeriod)));\n if (dist < 1.0) {\n fragColor = vec4(0.0,0.0,0.0,1.0);\n } else {\n fragColor.xyz = mix(fragColor.xyz, hatchTintColor, hatchTintIntensity);\n }\n }\n return fragColor;\n}\n#endif\n"},17028:e=>{e.exports="vec3 rgb2hsv(vec3 color)\n{\n float delta;\n float colorMax, colorMin;\n float h,s,v;\n vec3 hsv;\n colorMax = max(color.r,color.g);\n colorMax = max(colorMax,color.b);\n colorMin = min(color.r,color.g);\n colorMin = min(colorMin,color.b);\n v = colorMax;\n if(colorMax != 0.0)\n {\n s = (colorMax - colorMin)/colorMax;\n }\n else\n {\n s = 0.0;\n }\n if(s != 0.0)\n {\n delta = colorMax-colorMin;\n if (color.r == colorMax)\n {\n h = (color.g-color.b)/delta;\n }\n else if (color.g == colorMax)\n {\n h = 2.0 + (color.b-color.r) / delta;\n }\n else\n {\n h = 4.0 + (color.r-color.g)/delta;\n }\n h /= 6.0;\n if( h < 0.0)\n {\n h +=1.0;\n }\n }\n else\n {\n h = 0.0;\n }\n hsv = vec3(h,s,v);\n return hsv;\n}\nvec3 hsv2rgb(vec3 hsv)\n{\n vec3 color;\n float f,p,q,t;\n float h,s,v;\n float i,hi;\n {\n h = hsv.x*6.0;\n s = hsv.y;\n v = hsv.z;\n i = floor(h);\n f = h-i;\n p = v * (1.0 - s);\n q = v * (1.0 - (s * f));\n t = v * (1.0 - (s * (1.0 - f)));\n float r,g,b;\n if (i == 0.0)\n {\n r = v;\n g = t;\n b = p;\n }\n else if (i == 1.0)\n {\n r = q;\n g = v;\n b = p;\n }\n else if (i == 2.0)\n {\n r = p;\n g = v;\n b = t;\n }\n else if (i == 3.0)\n {\n r = p;\n g = q;\n b = v;\n }\n else if (i == 4.0)\n {\n r = t;\n g = p;\n b = v;\n }\n else\n {\n r = v;\n g = p;\n b = q;\n }\n color = vec3(r,g,b);\n }\n return color;\n}"},14804:e=>{e.exports="#if defined(MRT_NORMALS) || defined(MRT_ID_BUFFER)\n varying highp float depth;\n#endif\n#if defined(MRT_ID_BUFFER) || defined(ID_COLOR)\n #ifdef USE_VERTEX_ID\n varying vec3 vId;\n #elif defined(LINE_2D_SHADER)\n varying vec4 dbId;\n #else\n uniform vec3 dbId;\n #endif\n#endif\n#if defined(MRT_ID_BUFFER) || defined(MODEL_COLOR)\n uniform vec3 modelId;\n#endif\n#if defined(MRT_NORMALS)\n layout(location = 1) out vec4 outNormal;\n #if defined(MRT_ID_BUFFER)\n layout(location = 2) out vec4 outId;\n #if defined(MODEL_COLOR)\n layout(location = 3) out vec4 outModelId;\n #endif\n #endif\n#elif defined(MRT_ID_BUFFER)\n layout(location = 1) out vec4 outId;\n #if defined(MODEL_COLOR)\n layout(location = 2) out vec4 outModelId;\n #endif\n#endif"},31371:e=>{e.exports="#ifdef USE_VERTEX_ID\nin vec3 id;\nout vec3 vId;\n#endif\n"},11255:e=>{e.exports="\n#if defined(USE_VERTEX_ID) && (defined(MRT_ID_BUFFER) || defined(ID_COLOR))\n vec3 dbId = vId;\n#endif\n#ifdef MRT_ID_BUFFER\n #ifndef ENABLE_ID_DISCARD\n const float writeId = 1.0;\n #endif\n outId = vec4(dbId.rgb, writeId);\n #ifdef MODEL_COLOR\n outModelId = vec4(modelId.rgb, writeId);\n #endif\n#elif defined(ID_COLOR)\n #ifdef ENABLE_ID_DISCARD\n if (writeId==0.0) {\n discard;\n }\n #endif\n outFragColor = vec4(dbId.rgb, 1.0);\n#elif defined(MODEL_COLOR)\n #ifdef ENABLE_ID_DISCARD\n if (writeId==0.0) {\n discard;\n }\n #endif\n outFragColor = vec4(modelId.rgb, 1.0);\n#endif\n"},91952:e=>{e.exports="\n#ifdef USE_VERTEX_ID\nvId = id;\n#endif\n"},45631:e=>{e.exports="#if defined( IMPORTANTSAMPLING )\n#define SAMPLECOUNT 32\nvec2 Hammersley(int index)\n{\n float u = (float(index) + 0.5) / 32.0;\n float v = 0.5;\n float noise = texture(importantSamplingRandomMap, vec2(u, v), 0.0).r;\n return vec2(2.0 * PI * float(index/SAMPLECOUNT), noise);\n}\nvec3 ImportanceSampleAnisotropicGGX(int index, vec2 alpha, vec3 N, vec3 Tu, vec3 Tv)\n{\n vec2 uniformSample2D = Hammersley(index);\n float coef = sqrt(uniformSample2D.y / (1.0 - uniformSample2D.y));\n float sinSigma, cosSigma;\n sinSigma = sin(uniformSample2D.x);\n cosSigma = cos(uniformSample2D.x);\n vec3 H = coef * ((alpha.x * cosSigma) * Tu + (alpha.y * sinSigma) * Tv) + N;\n H = normalize(H);\n return H;\n}\nfloat ComputePDF(vec2 alpha, float NdotH, float HdotTu, float HdotTv, float VdotH)\n{\n float factor1 = HdotTu / alpha.x;\n float factor2 = HdotTv / alpha.y;\n float factor3 = factor1 * factor1 + factor2 * factor2 + NdotH * NdotH;\n float factor = factor3 * factor3 * alpha.x * alpha.y * VdotH * 4.0 * PI;\n if (factor > 0.0)\n {\n return (NdotH / factor);\n }\n else\n {\n return 0.0;\n }\n}\n#define INVFACESIZE 0.0078125\nfloat DirectionToSolidAngle(vec3 dir)\n{\n dir = abs(dir);\n float first = min(dir.x, dir.y);\n float temp = max(dir.x, dir.y);\n float second = min(temp, dir.z);\n float third = max(temp, dir.z);\n first /= third;\n second /= third;\n float u = (first+1.0)/2.0;\n float v = (second + 1.0) / 2.0;\n float solidAngle = texture(importantSamplingSolidAngleMap, vec2(u, v), 0.0).r * 0.000255;\n return solidAngle;\n}\nfloat Smith_GGX(float value)\n{\n return 2.0 / (1.0 + sqrt(1.0 + value));\n}\nvec2 RoughnessAnisotropyToAlpha(float roughness, float anisotropy)\n{\n float aspect = sqrt(1.0 - 0.9 * anisotropy);\n vec2 alpha = vec2(roughness * roughness / aspect, roughness * roughness * aspect);\n return alpha;\n}\nvec3 ImportanceSamplingSpecular(float angle, vec3 reflectance, float roughness, float anisotropy, vec3 V, vec3 N, vec3 Tu, vec3 Tv)\n{\n vec3 specular = vec3(0.0);\n float radAngle;\n if (anisotropy < 1e-10)\n {\n radAngle = 0.0;\n }\n else\n {\n radAngle = -PI * angle;\n }\n vec2 alpha = RoughnessAnisotropyToAlpha(roughness, anisotropy);\n float alpha2 = max(alpha.x * alpha.x, alpha.y * alpha.y);\n float NdotV = dot(N, V);\n float alpha2NV = aSqrd(alpha2, NdotV);\n vec2 sincosTheta;\n sincosTheta.x = sin(radAngle);\n sincosTheta.y = cos(radAngle);\n vec3 Tu1, Tv1;\n Tu1 = sincosTheta.y * Tu - sincosTheta.x * Tv;\n Tv1 = sincosTheta.x * Tu + sincosTheta.y * Tv;\n vec3 H;\n vec3 sampleLightIntensity;\n vec3 L;\n float effectiveSample = 0.0;\n for (int i = 0; i < SAMPLECOUNT; i++)\n {\n H = ImportanceSampleAnisotropicGGX(i, alpha, N, Tu1, Tv1);\n float VdotH = dot(V, H);\n L = 2.0 * VdotH * H - V;\n float NdotH = dot(N, H);\n float NdotL = dot(N, L);\n if (NdotL >= 0.0 && NdotV > 0.0 && NdotH > 0.0)\n {\n float alpha2NL = aSqrd(alpha2, NdotL);\n float HdotTu = dot(H, Tu1);\n float HdotTv = dot(H, Tv1);\n float pdf = ComputePDF(alpha, NdotH, HdotTu, HdotTv, VdotH);\n float mipmapLevel = 0.0;\n if (pdf > 0.0)\n {\n mipmapLevel = 0.3 * log2(1.0 / (float(SAMPLECOUNT) * pdf * DirectionToSolidAngle(L)));\n }\n mipmapLevel = clamp(mipmapLevel, 0.0, 4.0);\n L = normalize(L);\n sampleLightIntensity = sampleReflection(L, L, mipmapLevel).rgb;\n float G = Smith_GGX(alpha2NL) * Smith_GGX(alpha2NV);\n vec3 F = Fresnel_Schlick(reflectance, VdotH);\n float factor = G * VdotH / (NdotH * NdotV);\n if (factor >= 0.0)\n {\n specular += abs(sampleLightIntensity * F * factor);\n effectiveSample += 1.0;\n }\n }\n }\n if (effectiveSample > 0.0)\n {\n specular /= effectiveSample;\n }\n return specular;\n}\n#endif"},74490:e=>{e.exports="\n#ifdef USE_INSTANCING\nin vec3 instOffset;\nin vec4 instRotation;\nin vec3 instScaling;\nvec3 applyQuaternion(vec3 p, vec4 q) {\n return p + 2.0 * cross(q.xyz, cross(q.xyz, p) + q.w * p);\n}\nvec3 getInstancePos(vec3 pos) {\n return instOffset + applyQuaternion(instScaling * pos, instRotation);\n}\nvec3 getInstanceNormal(vec3 normal) {\n return applyQuaternion(normal/instScaling, instRotation);\n}\n#else\nvec3 getInstancePos(vec3 pos) { return pos; }\nvec3 getInstanceNormal(vec3 normal) { return normal; }\n#endif\n"},53634:e=>{e.exports="\n#define LINE_2D_SHADER 1\n#define TAU 6.28318530718\n#define PI 3.14159265358979\n#define HALF_PI 1.57079632679\n#define PI_0_5 HALF_PI\n#define PI_1_5 4.71238898038\n#define ENABLE_ID_DISCARD\n#define VBB_GT_TRIANGLE_INDEXED 0.0\n#define VBB_GT_LINE_SEGMENT 1.0\n#define VBB_GT_ARC_CIRCULAR 2.0\n#define VBB_GT_ARC_ELLIPTICAL 3.0\n#define VBB_GT_TEX_QUAD 4.0\n#define VBB_GT_ONE_TRIANGLE 5.0\n#define VBB_GT_MSDF_TRIANGLE_INDEXED 6.0\n#define VBB_GT_LINE_SEGMENT_CAPPED 8.0\n#define VBB_GT_LINE_SEGMENT_CAPPED_START 9.0\n#define VBB_GT_LINE_SEGMENT_CAPPED_END 10.0\n#define VBB_GT_LINE_SEGMENT_MITER 11.0\n#define VBB_INSTANCED_FLAG 0.0\n#define VBB_SEG_START_RIGHT 0.0\n#define VBB_SEG_START_LEFT 1.0\n#define VBB_SEG_END_RIGHT 2.0\n#define VBB_SEG_END_LEFT 3.0\n#define LTSCALE 0.25\nvarying vec4 fsColor;\nvarying vec2 fsOffsetDirection;\nvarying vec4 fsMultipurpose;\nvarying float fsHalfWidth;\nvarying vec2 fsVpTC;\nvarying float fsGhosting;\n#ifdef LOADING_ANIMATION\nvarying float loadingProgress;\n#endif\n"},1179:e=>{e.exports="\n#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n#ifdef POLYGON_OFFSET\n uniform vec2 polygonOffset;\n const float epsilon7 = 0.0000001;\n#endif\n uniform float logDepthBufFC;\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif"},40444:e=>{e.exports="\n#ifdef USE_LOGDEPTHBUF\n #ifdef USE_LOGDEPTHBUF_EXT\n varying float vFragDepth;\n varying float vIsPerspective;\n #else\n uniform float logDepthBufFC;\n #endif\n bool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n }\n#endif"},20990:e=>{e.exports="#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n float logz_depth = vFragDepth;\n#ifdef POLYGON_OFFSET\n float factor = polygonOffset[0];\n float units = polygonOffset[1];\n#if __VERSION__ == 300 \n if (factor != 0.0) {\n float x = dFdx(logz_depth);\n float y = dFdy(logz_depth);\n float dz = sqrt(x * x + y * y);\n logz_depth += dz * factor;\n }\n#endif\n#endif\n gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( logz_depth ) * logDepthBufFC * 0.5;\n#endif"},13353:e=>{e.exports="#ifdef USE_LOGDEPTHBUF\n #ifdef USE_LOGDEPTHBUF_EXT\n vFragDepth = 1.0 + gl_Position.w;\n vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n #else\n if ( isPerspectiveMatrix( projectionMatrix ) ) {\n gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n gl_Position.z *= gl_Position.w;\n }\n #endif\n#endif"},72373:e=>{e.exports="#if defined(USE_SURFACE_NORMAL_MAP) || defined( USE_LAYERED_NORMAL_MAP ) || defined( USE_TILING_NORMAL )\nvoid heightMapTransform(\n sampler2D bumpTexture,\n vec2 uv,\n mat3 transform,\n vec2 bumpScale,\n inout vec3 T,\n inout vec3 B,\n inout vec3 N\n) {\n vec2 st = (transform * vec3(uv, 1.0)).xy;\n mat3 mtxTangent = mat3(T, B, N);\n T = normalize(mtxTangent * (transform * vec3(1.0, 0.0, 0.0)));\n B = normalize(mtxTangent * (transform * vec3(0.0, 1.0, 0.0)));\n const float oneThird = 1.0 / 3.0;\n vec3 avg = vec3(oneThird, oneThird, oneThird);\n vec2 offset = fwidth(st);\n float h0 = dot(texture(bumpTexture, st).xyz, avg);\n float hx = dot(texture(bumpTexture, st + vec2(offset.x, 0.0)).xyz, avg);\n float hy = dot(texture(bumpTexture, st + vec2(0.0, offset.y)).xyz, avg);\n vec2 diff = vec2(h0 - hx, h0 - hy) / offset;\n N = normalize(\n N + (\n diff.x * T * bumpScale.x +\n diff.y * B * bumpScale.y\n )\n );\n}\nvoid normalMapTransform(\n sampler2D bumpTexture,\n vec2 uv,\n mat3 transform,\n vec2 bumpScale,\n inout vec3 T,\n inout vec3 B,\n inout vec3 N\n) {\n vec2 st = (transform * vec3(uv, 1.0)).xy;\n vec3 mapN = 2.0 * texture(bumpTexture, st).xyz - 1.0;\n mapN.xy *= bumpScale.x;\n mapN.z *= bumpScale.y;\n vec3 v = vec3(mapN.y, -mapN.x, 0.0);\n float c = -mapN.z;\n mat3 skewV = mat3(\n 0.0, v.z, -v.y,\n -v.z, 0.0, v.x,\n v.y, -v.x, 0.0\n );\n mat3 rot = mat3(1.0) + skewV + skewV*skewV * 1.0/(1.0-c);\n N *= rot;\n T *= rot;\n B *= rot;\n}\n#endif\n"},1221:e=>{e.exports="vec3 orderedDithering(vec3 col) {\n const vec4 m0 = vec4( 1.0, 13.0, 4.0, 16.0);\n const vec4 m1 = vec4( 9.0, 5.0, 12.0, 8.0);\n const vec4 m2 = vec4( 3.0, 15.0, 2.0, 14.0);\n const vec4 m3 = vec4(11.0, 7.0, 10.0, 6.0);\n int i = int(gl_FragCoord.x) & 3;\n int j = int(gl_FragCoord.y) & 3;\n vec4 biasRow;\n if (i==0) biasRow = m0;\n else if (i==1) biasRow = m1;\n else if (i==2) biasRow = m2;\n else biasRow = m3;\n float bias;\n if (j==0) bias = biasRow.x;\n else if (j==1) bias = biasRow.y;\n else if (j==2) bias = biasRow.z;\n else bias = biasRow.w;\n return col + bias * (1.0 / (17.0 * 256.0));\n}\n"},35496:e=>{e.exports="\nvec4 packDepth( const in float depth ) {\n vec4 enc = vec4(1.0, 255.0, 65025.0, 160581375.0) * depth;\n enc = fract(enc);\n enc -= enc.yzww * vec4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);\n return enc;\n}\nfloat unpackDepth( const in vec4 rgba_depth ) {\n return dot( rgba_depth, vec4(1.0, 1.0/255.0, 1.0/65025.0, 1.0/160581375.0) );\n}\n"},9641:e=>{e.exports="\n#define kPI 3.14159265358979\nvec2 encodeNormal (vec3 n) {\n return (vec2(atan(n.y,n.x)/kPI, n.z)+1.0)*0.5;\n}\nvec3 decodeNormal (vec2 enc) {\n vec2 ang = enc * 2.0 - 1.0;\n vec2 scth = vec2(sin(ang.x * kPI), cos(ang.x * kPI));\n vec2 scphi = vec2(sqrt(1.0 - ang.y * ang.y), ang.y);\n return vec3(scth.y * scphi.x, scth.x * scphi.x, scphi.y);\n}\n"},50433:e=>{e.exports="gl_PointSize = point_size;"},6147:e=>{e.exports="\nvec3 TransmitAdjust(vec3 transmission, vec3 f0) \n{ \n vec3 limit = max(1.0 - f0, 0.00001); \n return clamp(transmission, vec3(0.0, 0.0, 0.0), limit) / limit; \n} \nfloat ColorToIlluminance(in vec3 color) \n{ \n const vec3 rgb2grey = vec3(0.299, 0.587, 0.114); \n float illuminance = dot(rgb2grey, color); \n return illuminance; \n} \nvoid applyPrismGlazingOpacity(\n inout vec4 color,\n vec3 transmissionF,\n float transmissionAlpha,\n float NdotV,\n float glazingIlluminace) \n{\n const float third = 1.0/3.0; \n float transSurface = exp(-(transmissionAlpha + (transmissionAlpha < 0.0025 ? 0.0 : 0.25)) * NdotV * PI); \n float opacity = 1.0- dot((1.0 - transmissionF), vec3(third,third,third)) * transSurface * glazingIlluminace; \n opacity = clamp(opacity, 0.01, 0.99);\n color.a *= opacity;\n} \n"},77019:e=>{e.exports="void applyPrismTransparency(\n inout vec4 color,\n vec3 transparentColor,\n float transparentIor\n) {\n float fsLevel = max(max(color.r, color.g), color.b);\n color = vec4(color.rgb/fsLevel, fsLevel);\n float transLevel = min(min(transparentColor.r, transparentColor.g), transparentColor.b);\n transLevel = min( (1.0 - surface_roughness), transLevel );\n float transAlpha = (1.0 - transLevel) * 0.4 + surface_roughness * 0.55;\n vec3 tr_g_color = sqrt(transparentColor);\n vec4 transColor = vec4(0.5 * vec3(tr_g_color), transAlpha);\n float strength = 1.0 - (1.0 - fsLevel) * (1.0 - fsLevel);\n color = mix(transColor, color, strength);\n color.a = max(color.a, 0.05);\n if (transparentIor == 1.0 && tr_g_color == vec3(1.0)) {\n color.a = 0.0;\n }\n}"},76332:e=>{e.exports="#if defined( PRISMWOOD )\n#define ONE 0.00390625\nfloat GetIndexedValue(vec4 array, int index)\n{\n if (index == 0)\n return array[0];\n else if (index == 1)\n return array[1];\n else if (index == 2)\n return array[2];\n else if (index == 3)\n return array[3];\n else\n return 0.0;\n}\nint GetIndexedValue(ivec2 array, int index)\n{\n if (index == 0)\n return array[0];\n else if (index == 1)\n return array[1];\n else\n return 0;\n}\n#if defined( USE_WOOD_CURLY_DISTORTION_MAP )\nfloat SampleCurlyPattern(vec2 uv)\n{\n vec2 uv_wood_curly_distortion_map = (wood_curly_distortion_map_texMatrix * vec3(uv, 1.0)).xy;\n WOOD_CURLY_DISTORTION_CLAMP_TEST;\n vec3 curlyDistortion = texture(wood_curly_distortion_map, uv_wood_curly_distortion_map).xyz;\n if(wood_curly_distortion_map_invert) curlyDistortion = vec3(1.0) - curlyDistortion;\n return curlyDistortion.r;\n}\nvec3 DistortCurly(vec3 p)\n{\n if (!wood_curly_distortion_enable) return p;\n float r = length(p.xy);\n if (r < 0.00001) return p;\n const float INV_ANGLE_INTERVAL = 1.27323954;\n const float NUM_INTERVAL = 8.0;\n float theta = atan(p.y, p.x);\n if (theta < 0.0)\n theta += PI2;\n float intIdx = theta * INV_ANGLE_INTERVAL;\n int idx0 = int(mod(floor(intIdx), NUM_INTERVAL));\n int idx1 = int(mod(ceil(intIdx), NUM_INTERVAL));\n const vec4 HASH_TABLE1 = vec4(0.450572,0.114598, 0.886043, 0.315119);\n const vec4 HASH_TABLE2 = vec4(0.216133,0.306264, 0.685616, 0.317907);\n float offset0 = idx0 < 4 ? GetIndexedValue(HASH_TABLE1, idx0) : GetIndexedValue(HASH_TABLE2, idx0-4);\n float offset1 = idx1 < 4 ? GetIndexedValue(HASH_TABLE1, idx1) : GetIndexedValue(HASH_TABLE2, idx1-4);\n const float maxOffset = 100.0;\n offset0 = (offset0 - 0.5) * maxOffset;\n offset1 = (offset1 - 0.5) * maxOffset;\n vec2 uv0 = vec2(p.z + offset0, r);\n float shiftWeight0 = SampleCurlyPattern(uv0);\n vec2 uv1 = vec2(p.z + offset1, r);\n float shiftWeight1 = SampleCurlyPattern(uv1);\n float interpWeight = fract(intIdx);\n float shiftWeight = mix(shiftWeight0, shiftWeight1, interpWeight);\n const float INV_MIN_RADIUS = 2.0;\n float shiftWeightAdjust = smoothstep(0.0, 1.0, r * INV_MIN_RADIUS);\n r -= wood_curly_distortion_scale * (shiftWeight * shiftWeightAdjust);\n float thetaNew = atan(p.y, p.x);\n vec3 pNew = p;\n pNew.x = r * cos(thetaNew);\n pNew.y = r * sin(thetaNew);\n return pNew;\n}\n#endif\nvec3 un2sn(vec3 range)\n{\n return range * 2.0 - 1.0;\n}\nfloat inoise(vec3 p)\n{\n vec3 modp = mod(floor(p), 256.0);\n modp.xy = modp.xy * ONE;\n vec4 AA = texture(perm2DMap, vec2(modp.x, modp.y), 0.0) * 255.0;\n AA = AA + modp.z;\n AA = mod(floor(AA), 256.0);\n AA *= ONE;\n vec3 gradx1 = un2sn(texture(permGradMap,vec2(AA.x,0.0),0.0).xyz);\n vec3 grady1 = un2sn(texture(permGradMap,vec2(AA.y,0.0),0.0).xyz);\n vec3 gradz1 = un2sn(texture(permGradMap,vec2(AA.z,0.0),0.0).xyz);\n vec3 gradw1 = un2sn(texture(permGradMap,vec2(AA.w,0.0),0.0).xyz);\n vec3 gradx2 = un2sn(texture(permGradMap,vec2(AA.x + ONE,0.0),0.0).xyz);\n vec3 grady2 = un2sn(texture(permGradMap,vec2(AA.y + ONE,0.0),0.0).xyz);\n vec3 gradz2 = un2sn(texture(permGradMap,vec2(AA.z + ONE,0.0),0.0).xyz);\n vec3 gradw2 = un2sn(texture(permGradMap,vec2(AA.w + ONE,0.0),0.0).xyz);\n p -= floor(p);\n vec3 fadep = p * p * p * (p * (p * 6.0 - 15.0) + 10.0);\n return mix( mix( mix( dot(gradx1, p ),\n dot(gradz1, p + vec3(-1.0, 0.0, 0.0)), fadep.x),\n mix( dot(grady1, p + vec3(0.0, -1.0, 0.0)),\n dot(gradw1, p + vec3(-1.0, -1.0, 0.0)), fadep.x), fadep.y),\n mix( mix( dot(gradx2, p + vec3(0.0, 0.0, -1.0)),\n dot(gradz2, p + vec3(-1.0, 0.0, -1.0)), fadep.x),\n mix( dot(grady2, p + vec3(0.0, -1.0, -1.0)),\n dot(gradw2, p + vec3(-1.0, -1.0, -1.0)), fadep.x), fadep.y), fadep.z);\n}\nfloat inoise(float p)\n{\n float modp = mod(floor(p), 256.0);\n modp = (modp + 256.0) * ONE;\n float permx = texture(permutationMap, vec2(modp, 0.0), 0.0).r;\n float gradx = texture(gradientMap, vec2(permx, 0.0), 0.0).r*2.0-1.0;\n float permy = texture(permutationMap, vec2(modp + ONE, 0.0), 0.0).r;\n float grady = texture(gradientMap, vec2(permy, 0.0), 0.0).r*2.0-1.0;\n p -= floor(p);\n float fadep = p * p * p * (p * (p * 6.0 - 15.0) + 10.0);\n return mix(gradx * p, grady * (p - 1.0), fadep);\n}\nfloat multiband_inoise(vec3 p, int bands, vec4 w, vec4 f)\n{\n float noise = 0.0;\n for(int i = 0; i < 4; ++i)\n {\n if (i >= bands) break;\n noise += GetIndexedValue(w, i) * inoise(p * GetIndexedValue(f, i));\n }\n return noise;\n}\nfloat multiband_inoise(float p, int bands, vec4 w, vec4 f)\n{\n float noise = 0.0;\n for(int i = 0; i < 4; ++i)\n {\n if (i >= bands) break;\n noise += GetIndexedValue(w, i) * inoise(p * GetIndexedValue(f, i));\n }\n return noise;\n}\nvec3 Distort3DCosineRadialDir(vec3 p)\n{\n float radius = length(p.xy);\n if (radius < 0.00001) return p;\n vec2 theta = p.xy / radius;\n float radiusShift = 0.0;\n for (int i = 0; i < 4; ++i)\n {\n if (i >= wood_fiber_cosine_bands) break;\n radiusShift += GetIndexedValue(wood_fiber_cosine_weights, i) * cos(p.z * RECIPROCAL_PI2 * GetIndexedValue(wood_fiber_cosine_frequencies, i));\n }\n const float MIN_RADIUS = 1.5;\n float weight = clamp(radius / MIN_RADIUS, 0.0, 1.0);\n if(weight >= 0.5)\n weight = weight * weight * (3.0 - (weight + weight));\n p.xy += theta * radiusShift * weight;\n return p;\n}\nvec3 Distort3DPerlin(vec3 p)\n{\n vec3 pAniso = vec3(p.xy, p.z * wood_fiber_perlin_scale_z);\n p.xy += multiband_inoise(pAniso, wood_fiber_perlin_bands, wood_fiber_perlin_weights, wood_fiber_perlin_frequencies);\n return p;\n}\nvec3 Distort(vec3 p)\n{\n if(wood_fiber_cosine_enable)\n p = Distort3DCosineRadialDir(p);\n if(wood_fiber_perlin_enable)\n p = Distort3DPerlin(p);\n return p;\n}\nfloat DistortRadiusLength(float radiusLength)\n{\n radiusLength += multiband_inoise(radiusLength, wood_growth_perlin_bands, wood_growth_perlin_weights, wood_growth_perlin_frequencies);\n if (radiusLength < 0.0) radiusLength = 0.0;\n return radiusLength;\n}\nfloat ComputeEarlyWoodRatio(float radiusLength)\n{\n float fraction = mod(radiusLength, wood_ring_thickness) / wood_ring_thickness;\n if (fraction <= wood_ring_fraction.y)\n return 1.0;\n else if(fraction <= wood_ring_fraction.x)\n return (1.0 - (fraction - wood_ring_fraction.y) / wood_fall_rise.x);\n else if(fraction <= wood_ring_fraction.w)\n return 0.0;\n else\n return ((fraction - wood_ring_fraction.w) / wood_fall_rise.y);\n}\nvec3 DistortEarlyColor(vec3 earlyColor, float radiusLength)\n{\n float expValue = 1.0 + multiband_inoise(radiusLength,wood_earlycolor_perlin_bands,wood_earlycolor_perlin_weights,wood_earlycolor_perlin_frequencies);\n earlyColor = pow(abs(earlyColor), vec3(expValue));\n return earlyColor;\n}\nvec3 DistortLateColor(vec3 lateColor, float radiusLength)\n{\n float expValue = 1.0 + multiband_inoise(radiusLength,wood_latecolor_perlin_bands,wood_latecolor_perlin_weights,wood_latecolor_perlin_frequencies);\n lateColor = pow(abs(lateColor), vec3(expValue));\n return lateColor;\n}\nvec3 DistortDiffuseColor(vec3 diffAlbedo, vec3 p)\n{\n p.z *= wood_diffuse_perlin_scale_z;\n float expValue = 1.0 + multiband_inoise(p, wood_diffuse_perlin_bands, wood_diffuse_perlin_weights, wood_diffuse_perlin_frequencies);\n diffAlbedo = pow(abs(diffAlbedo), vec3(expValue));\n return diffAlbedo;\n}\nfloat LayerRoughnessVar(float roughness, float earlyWoodRatio)\n{\n return earlyWoodRatio * wood_groove_roughness + (1.0 - earlyWoodRatio) * roughness;\n}\nfloat hashword(vec2 k)\n{\n k = mod(k, vec2(256.0)) * ONE;\n float a = texture(permutationMap, vec2(k.x, 0.0)).x + k.y ;\n a = texture(permutationMap, vec2(a, 0.0)).x ;\n return a*255.0;\n}\nfloat wyvillsq(float rsq)\n{\n if (rsq >= 1.0) return 0.0;\n float tmp = 1.0 - rsq;\n return tmp*tmp*tmp;\n}\nfloat Weight2DNeighborImpulses(vec3 p, float woodWeight)\n{\n if(woodWeight <= 0.0) return 0.0;\n float poreRadius = wood_pore_radius * woodWeight;\n vec2 left = floor((p.xy - poreRadius) / wood_pore_cell_dim);\n vec2 right = floor((p.xy + poreRadius) / wood_pore_cell_dim);\n float weight = 0.0;\n float invRsq = 1.0 / (poreRadius * poreRadius);\n const float norm = 1.0 / 15.0;\n for (int j = 0; j <= 4; j++)\n {\n if (j > int(right.y - left.y)) continue;\n for (int i = 0; i <= 4; i++)\n {\n if (i > int(right.x - left.x)) continue;\n vec2 pij = vec2(float(i) + left.x,float(j) + left.y);\n float hRNum = hashword(pij);\n float impPosX = mod(hRNum, 16.0) * norm;\n float impPosY = floor(hRNum / 16.0) * norm;\n impPosX = (pij.x + impPosX)* wood_pore_cell_dim;\n impPosY = (pij.y + impPosY)* wood_pore_cell_dim;\n float dsq = (p.x - impPosX) * (p.x - impPosX) + (p.y - impPosY) * (p.y - impPosY);\n weight += wyvillsq(dsq * invRsq);\n }\n }\n return weight;\n}\nfloat Weight3DRayImpulses(vec3 p)\n{\n int segIdx = int(floor(p.z / wood_ray_seg_length_z));\n float factor = p.z / wood_ray_seg_length_z - float(segIdx);\n int segIdx1 = segIdx - 1;\n if ( factor > 0.5 )\n segIdx1 = segIdx + 1;\n float theta = atan(p.y, p.x);\n float sliceIdx = floor(((theta + PI) * RECIPROCAL_PI2) * wood_ray_num_slices);\n if ( sliceIdx == wood_ray_num_slices)\n sliceIdx-=1.0;\n ivec2 arrSegs = ivec2(segIdx, segIdx1);\n float weight = 0.0;\n const float norm = 1.0 / 15.0;\n float radialOffset = 5.0;\n float radialLength = length(p.xy);\n for (int seg = 0; seg < 2; seg++)\n {\n float hRNum = hashword(vec2(sliceIdx, GetIndexedValue(arrSegs, seg)));\n float rn1 = mod(hRNum,16.0) * norm;\n if (radialLength < radialOffset * rn1)\n continue;\n float rayTheta = rn1;\n rayTheta = ( ( sliceIdx + rayTheta ) / wood_ray_num_slices ) * ( 2.0 * PI ) - PI;\n float rayPosZ = (hRNum/16.0)* norm;\n rayPosZ = ( float(GetIndexedValue(arrSegs, seg)) + rayPosZ ) * wood_ray_seg_length_z;\n vec3 pt1 = vec3(0.0);\n vec3 pt2 = vec3(cos(rayTheta), sin(rayTheta), 0.0);\n vec3 p1 = p;\n p1.z -= rayPosZ;\n p1.z /= wood_ray_ellipse_z2x;\n vec3 v1 = pt2 - pt1;\n vec3 v2 = pt1 - p1;\n v2 = cross(v1, v2);\n float dist = length(v2) / length(v1);\n float invRsq = 1.0 / ( wood_ray_ellipse_radius_x * wood_ray_ellipse_radius_x);\n weight += wyvillsq( (dist * dist) * invRsq );\n }\n return weight;\n}\nvec3 DarkenColorWithPores(vec3 p, vec3 diffColor, float woodWeight)\n{\n float poresWeight = Weight2DNeighborImpulses(p, woodWeight);\n float a = wood_pore_color_power - 1.0;\n float b = 1.0;\n float y = a * poresWeight + b;\n return pow(abs(diffColor), vec3(y));\n}\nvec3 DarkenColorWithRays(vec3 p, vec3 diffColor)\n{\n float raysWeight = Weight3DRayImpulses(p);\n float a = wood_ray_color_power - 1.0;\n float b = 1.0;\n float y = a * raysWeight + b;\n return pow(abs(diffColor), vec3(y));\n}\nfloat ComputeWoodWeight(float earlyWoodRatio)\n{\n float woodWeight = 0.0;\n if (wood_pore_type == 0)\n woodWeight = 1.0;\n else if (wood_pore_type == 1)\n woodWeight = earlyWoodRatio;\n else if (wood_pore_type == 2)\n woodWeight = 1.0 - earlyWoodRatio;\n else\n woodWeight = -1.0;\n return woodWeight;\n}\n#if defined( PRISMWOODBUMP )\nfloat ComputeEarlyWoodRatioAA(float radiusLength, float invUnitExt)\n{\n float transPixels = min(wood_fall_rise.x, wood_fall_rise.y) * wood_ring_thickness * invUnitExt;\n float samplesf = clamp(4.0 / transPixels, 1.0, 4.0);\n int samples = int(samplesf);\n float inverseSamples = 1.0 / float(samples);\n vec2 rdelta = vec2(dFdx(radiusLength), dFdy(radiusLength)) * inverseSamples;\n float earlywoodRatio = 0.0;\n for (int i = 0; i < 4; ++i)\n {\n if (i >= samples) break;\n for (int j = 0; j < 4; ++j)\n {\n if (j >= samples) break;\n float r = radiusLength + dot(vec2(i, j), rdelta);\n earlywoodRatio += ComputeEarlyWoodRatio(r);\n }\n }\n return earlywoodRatio * (inverseSamples * inverseSamples);\n}\nfloat LatewoodDepthVariation(float invUnitExt)\n{\n float transPixels = min(wood_fall_rise.x, wood_fall_rise.y) * wood_ring_thickness * invUnitExt;\n return clamp(transPixels * 0.5, 0.0, 1.0);\n}\nfloat LatewoodHeightVariation(float earlyWoodRatio, float latewoodBumpDepth,\n float depthVar)\n{\n return ( 1.0 - earlyWoodRatio ) * latewoodBumpDepth * depthVar;\n}\nfloat PoreDepthVariation(float woodWeight, float invUnitExt)\n{\n float porePixels = woodWeight * wood_pore_radius * invUnitExt;\n return clamp(porePixels, 0.0, 1.0);\n}\nfloat PoreHeightVariation(float earlyWoodRatio, float poresWeight, float poreDepth,\n float depthVar)\n{\n return poresWeight * (-1.0 * poreDepth) * depthVar;\n}\nvoid ComputeTangents(vec3 normal, out vec3 u, out vec3 v)\n{\n float scale = normal.z < 0.0 ? -1.0 : 1.0;\n vec3 temp = scale * normal;\n float e = temp.z;\n float h = 1.0/(1.0 + e);\n float hvx = h * temp.y;\n float hvxy = hvx * -temp.x;\n u = vec3(e + hvx * temp.y, hvxy, -temp.x);\n v = vec3(hvxy, e + h * temp.x * temp.x, -temp.y);\n u *= scale;\n v *= scale;\n}\nvec3 WoodBumpHeight(float heightLeft, float heightRight, float heightBack, float heightFront)\n{\n const float epsilon = 0.001;\n float heightDeltaX = heightRight - heightLeft;\n vec3 Tu = vec3(2.0 * epsilon, 0.0, heightDeltaX);\n float heightDeltaY = heightFront - heightBack;\n vec3 Tv = vec3(0.0, 2.0 * epsilon, heightDeltaY);\n return cross(Tu, Tv);\n}\nvec3 SelectNormal(vec3 N, vec3 bumpN, vec3 V)\n{\n float bumpNdotV = dot(bumpN, V);\n if(bumpNdotV > 0.0)\n return bumpN;\n else return N;\n}\nfloat MinInverseUnitExtent(vec3 p)\n{\n return 1.0 / max(max(length(dFdx(p.xy)), length(dFdy(p.xy))), 0.000001);\n}\nfloat HeightVariation(vec3 pos)\n{\n vec3 p = Distort(pos);\n float radiusLength = length(p.xy);\n if (wood_growth_perlin_enable)\n radiusLength = DistortRadiusLength(radiusLength);\n float invUnitExt = MinInverseUnitExtent(p);\n float earlyWoodRatio = ComputeEarlyWoodRatioAA(radiusLength, invUnitExt);\n float woodWeight = ComputeWoodWeight(earlyWoodRatio);\n float poresWeight = Weight2DNeighborImpulses(p, woodWeight);\n float depthVar = PoreDepthVariation(woodWeight, invUnitExt);\n float poreHeightVariation = -1.0 * poresWeight * wood_pore_depth * depthVar;\n float latewoodHeightVariation = 0.0;\n if (wood_use_latewood_bump)\n {\n float latewoodDepthVar = LatewoodDepthVariation(invUnitExt);\n latewoodHeightVariation = (1.0 - earlyWoodRatio) * wood_latewood_bump_depth * latewoodDepthVar;\n }\n float sumHeightVariation = poreHeightVariation + latewoodHeightVariation;\n return sumHeightVariation;\n}\n#endif\nvec3 NoiseWood(vec3 p, inout float roughness)\n{\n p = Distort(p);\n float radiusLength = length(p.xy);\n if(wood_growth_perlin_enable)\n radiusLength = DistortRadiusLength(radiusLength);\n#if defined( PRISMWOODBUMP )\n float invUnitExt = MinInverseUnitExtent( p );\n float earlyWoodRatio = ComputeEarlyWoodRatioAA(radiusLength, invUnitExt);\n#else\n float earlyWoodRatio = ComputeEarlyWoodRatio(radiusLength);\n#endif\n vec3 earlyColor = wood_early_color;\n if (wood_earlycolor_perlin_enable)\n earlyColor = DistortEarlyColor(earlyColor, radiusLength);\n vec3 lateColor;\n if (wood_use_manual_late_color)\n lateColor = wood_manual_late_color;\n else\n lateColor = pow(abs(earlyColor), vec3(wood_late_color_power));\n if(wood_latecolor_perlin_enable)\n lateColor = DistortLateColor(lateColor, radiusLength);\n vec3 diffAlbedo = earlyWoodRatio * earlyColor + (1.0 - earlyWoodRatio) * lateColor;\n if(wood_diffuse_perlin_enable)\n diffAlbedo = DistortDiffuseColor(diffAlbedo, p);\n if (wood_use_pores)\n {\n float woodWeight = ComputeWoodWeight(earlyWoodRatio);\n diffAlbedo = DarkenColorWithPores(p, diffAlbedo, woodWeight);\n }\n if (wood_use_rays)\n diffAlbedo = DarkenColorWithRays(p, diffAlbedo);\n if(wood_use_groove_roughness)\n roughness = LayerRoughnessVar(roughness, earlyWoodRatio);\n return clamp(diffAlbedo, vec3(0.0), vec3(1.0));\n}\n#if defined(PRISMWOODBUMP)\nvoid getFinalWoodContext(\n inout vec3 N, vec3 V, inout vec3 Tu, inout vec3 Tv, vec3 p,\n vec3 geoNormal, vec3 tNormal, mat3 normalMatrix\n) {\n vec3 offsetTuLeft = p - 0.001 * Tu;\n vec3 offsetTuRight = p + 0.001 * Tu;\n vec3 offsetTvLeft = p - 0.001 * Tv;\n vec3 offsetTvRight = p + 0.001 * Tv;\n float heightVariationTuLeft = HeightVariation(offsetTuLeft);\n float heightVariationTuRight = HeightVariation(offsetTuRight);\n float heightVariationTvLeft = HeightVariation(offsetTvLeft);\n float heightVariationTvRight = HeightVariation(offsetTvRight);\n vec3 bumpHeight = WoodBumpHeight(heightVariationTuLeft, heightVariationTuRight, heightVariationTvLeft, heightVariationTvRight);\n vec3 newNormal = normalize(bumpHeight.x * Tu + bumpHeight.y * Tv + bumpHeight.z * vtNormal);\n vec3 newNormalView = normalize(vNormalMatrix * newNormal);\n vec3 selectedNormal = SelectNormal(geoNormal, newNormalView, V);\n ComputeTangents(selectedNormal, Tu, Tv);\n Tu = normalize(Tu);\n Tv = normalize(Tv);\n N = faceforward(selectedNormal, -V, selectedNormal);\n}\n#endif\n#endif\n"},25424:e=>{e.exports="\nuniform float shadowESMConstant;\nuniform float shadowMapRangeMin;\nuniform float shadowMapRangeSize;\n"},79317:e=>{e.exports="\n#ifdef USE_SHADOWMAP\nuniform sampler2D shadowMap;\nuniform vec2 shadowMapSize;\nuniform float shadowDarkness;\nuniform float shadowBias;\nuniform vec3 shadowLightDir;\nin vec4 vShadowCoord;\n#include \nfloat getShadowValue() {\n float fDepth;\n vec3 shadowColor = vec3( 1.0 );\n vec3 shadowCoord = vShadowCoord.xyz / vShadowCoord.w;\n shadowCoord.xyz = 0.5 * (shadowCoord.xyz + vec3(1.0, 1.0, 1.0));\n bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n bool inFrustum = all( inFrustumVec );\n float shadowValue = 1.0;\n if (inFrustum) {\n shadowCoord.z = min(0.999, shadowCoord.z);\n shadowCoord.z -= shadowBias;\n#ifdef USE_HARD_SHADOWS\n vec4 rgbaDepth = texture( shadowMap, shadowCoord.xy );\n float fDepth = rgbaDepth.r;\n if ( fDepth < shadowCoord.z ) {\n shadowValue = 1.0 - shadowDarkness;\n }\n#else\n vec4 rgbaDepth = texture( shadowMap, shadowCoord.xy );\n float shadowMapValue = rgbaDepth.r;\n shadowValue = exp(-shadowESMConstant * shadowCoord.z) * shadowMapValue;\n shadowValue = min(shadowValue, 1.0);\n shadowValue = mix(1.0 - shadowDarkness, 1.0, shadowValue);\n#endif\n }\n return shadowValue;\n}\n#else\nfloat getShadowValue() { return 1.0; }\n#endif\nvec3 applyEnvShadow(vec3 colorWithoutShadow, vec3 worldNormal) {\n#if defined(USE_SHADOWMAP)\n float dp = dot(shadowLightDir, worldNormal);\n float dpValue = (dp + 1.0) / 2.0;\n dpValue = min(1.0, dpValue * 1.5);\n float sv = getShadowValue();\n vec3 result = colorWithoutShadow * min(sv, dpValue);\n return result;\n#else\n return colorWithoutShadow;\n#endif\n}\n"},30133:e=>{e.exports="\n#ifdef USE_SHADOWMAP\nout vec4 vShadowCoord;\nuniform mat4 shadowMatrix;\n#endif\n"},40947:e=>{e.exports="\n#ifdef USE_SHADOWMAP\n{\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vShadowCoord = shadowMatrix * worldPosition;\n}\n#endif\n"},15373:e=>{e.exports="#ifdef USE_THEMING\nuniform vec4 themingColor;\n#endif\n"},78148:e=>{e.exports="#ifdef USE_THEMING\noutFragColor.rgb = mix(outFragColor.rgb, themingColor.rgb, themingColor.a);\n#endif\n"},99607:e=>{e.exports="\nfloat luminance_post(vec3 rgb) {\n return dot(rgb, vec3(0.299, 0.587, 0.114));\n}\nfloat luminance_pre(vec3 rgb) {\n return dot(rgb, vec3(0.212671, 0.715160, 0.072169));\n}\nvec3 xyz2rgb(vec3 xyz) {\n vec3 R = vec3( 3.240479, -1.537150, -0.498535);\n vec3 G = vec3(-0.969256, 1.875992, 0.041556);\n vec3 B = vec3( 0.055648, -0.204043, 1.057311);\n vec3 rgb;\n rgb.b = dot(xyz, B);\n rgb.g = dot(xyz, G);\n rgb.r = dot(xyz, R);\n return rgb;\n}\nvec3 rgb2xyz(vec3 rgb) {\n vec3 X = vec3(0.412453, 0.35758, 0.180423);\n vec3 Y = vec3(0.212671, 0.71516, 0.0721688);\n vec3 Z = vec3(0.0193338, 0.119194, 0.950227);\n vec3 xyz;\n xyz.x = dot(rgb, X);\n xyz.y = dot(rgb, Y);\n xyz.z = dot(rgb, Z);\n return xyz;\n}\nvec3 xyz2xyY(vec3 xyz) {\n float sum = xyz.x + xyz.y + xyz.z;\n sum = 1.0 / sum;\n vec3 xyY;\n xyY.z = xyz.y;\n xyY.x = xyz.x * sum;\n xyY.y = xyz.y * sum;\n return xyY;\n}\nvec3 xyY2xyz(vec3 xyY) {\n float x = xyY.x;\n float y = xyY.y;\n float Y = xyY.z;\n vec3 xyz;\n xyz.y = Y;\n xyz.x = x * (Y / y);\n xyz.z = (1.0 - x - y) * (Y / y);\n return xyz;\n}\nfloat toneMapCanon_T(float x)\n{\n float xpow = pow(x, 1.60525727);\n float tmp = ((1.05542877*4.68037409)*xpow) / (4.68037409*xpow + 1.0);\n return clamp(tmp, 0.0, 1.0);\n}\nconst float Shift = 1.0 / 0.18;\nfloat toneMapCanonFilmic_NoGamma(float x) {\n x *= Shift;\n const float A = 0.2;\n const float B = 0.34;\n const float C = 0.002;\n const float D = 1.68;\n const float E = 0.0005;\n const float F = 0.252;\n const float scale = 1.0/0.833837;\n return (((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F) * scale;\n}\nvec3 toneMapCanonFilmic_WithGamma(vec3 x) {\n x *= Shift;\n const float A = 0.27;\n const float B = 0.29;\n const float C = 0.052;\n const float D = 0.2;\n const float F = 0.18;\n const float scale = 1.0/0.897105;\n return (((x*(A*x+C*B))/(x*(A*x+B)+D*F))) * scale;\n}\nvec3 toneMapCanonOGS_WithGamma_WithColorPerserving(vec3 x) {\n vec3 outColor = x.rgb;\n outColor = min(outColor, vec3(3.0));\n float inLum = luminance_pre(outColor);\n if (inLum > 0.0) {\n float outLum = toneMapCanon_T(inLum);\n outColor = outColor * (outLum / inLum);\n outColor = clamp(outColor, vec3(0.0), vec3(1.0));\n }\n float gamma = 1.0/2.2;\n outColor = pow(outColor, vec3(gamma));\n return outColor;\n}\n"},97713:e=>{e.exports="\n#ifdef WIDE_LINES\nin vec3 prev;\nin vec3 next;\nin float side;\nuniform vec2 view_size;\nvec2 to2d(vec4 i) {\n return i.xy / i.w;\n}\n#endif\n"},80862:e=>{e.exports="\n#ifdef WIDE_LINES\nvec4 mvpPosition = projectionMatrix * mvPosition; \nmat3 vectorMatrix = mat3(modelViewMatrix);\nvec2 _pos = to2d(mvpPosition) * view_size;\nvec2 _prev = to2d(projectionMatrix * vec4(mvPosition.xyz + vectorMatrix * (prev * 0.01), 1.0)) * view_size;\nvec2 _next = to2d(projectionMatrix * vec4(mvPosition.xyz - vectorMatrix * (next * 0.01), 1.0)) * view_size;\nvec2 dir1 = _pos - _next;\nvec2 dir2 = _prev - _pos;\ndir2 = (length(dir2) > 0.0000001) ? normalize(dir2) : vec2(0.0, 0.0);\ndir1 = (length(dir1) > 0.0000001) ? normalize(dir1) : dir2;\nvec2 dir_sharp = normalize(dir1 + dir2);\nvec2 dir = normalize(dir1 + dir_sharp);\nvec2 offset = vec2(-dir.y, dir.x);\nfloat len = 1.0 / cross(vec3(offset, 0), vec3(dir1, 0)).z;\noffset *= len;\noffset /= view_size;\noffset *= side;\noffset *= mvpPosition.w;\nmvpPosition.xy += offset;\ngl_Position = mvpPosition;\n#endif\n"},70984:e=>{e.exports="in vec3 vColor;\nin vec2 vUv;\nuniform samplerCube envMap;\nuniform vec3 uCamDir;\nuniform vec3 uCamUp;\nuniform vec2 uResolution;\nuniform float uHalfFovTan;\nuniform float opacity;\nuniform bool envMapBackground;\n#ifdef USE_BACKGROUND_TEXTURE\nuniform sampler2D backgroundTexture;\n#endif\n#include \nconst int bloomRange = 4;\n#include \nuniform float envMapExposure;\n#if TONEMAP_OUTPUT > 0\nuniform float exposureBias;\n#include \n#endif\nvec3 rayDir(in vec2 vUv) {\n vec3 A = (uResolution.x/uResolution.y)*normalize(cross(uCamDir,uCamUp)) * (uHalfFovTan * 2.0);\n vec3 B = normalize(uCamUp) * (uHalfFovTan * 2.0);\n vec3 C = normalize(uCamDir);\n vec3 ray = normalize( C + (2.0*vUv.x-1.0)*A + (2.0*vUv.y-1.0)*B );\n return ray;\n}\nvec3 getColor(in vec3 rd) {\n return RGBMDecode(texture(envMap, adjustLookupVector(rd)), envMapExposure);\n}\nvoid main() {\n vec3 rd = rayDir(vUv);\n vec3 outColor;\n float alpha = opacity;\n#ifdef USE_BACKGROUND_TEXTURE\n vec4 texel = texture(backgroundTexture, vUv);\n outColor = texel.rgb;\n alpha *= texel.a;\n#else\n if (envMapBackground) {\n outColor = getColor(rd);\n#if TONEMAP_OUTPUT == 1\n outColor = toneMapCanonOGS_WithGamma_WithColorPerserving(exposureBias * outColor);\n#elif TONEMAP_OUTPUT == 2\n outColor = toneMapCanonFilmic_WithGamma(exposureBias * outColor);\n#endif\n }\n else {\n outColor = vColor;\n }\n#endif\n outFragColor = vec4(orderedDithering(outColor), alpha);\n}\n"},8071:e=>{e.exports="uniform vec3 color1;\nuniform vec3 color2;\nout vec2 vUv;\nout vec3 vColor;\nvoid main() {\n if (uv.y == 0.0)\n vColor = color2;\n else\n vColor = color1;\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n"},27608:e=>{e.exports="uniform vec3 diffuse;\nuniform float opacity;\n#if defined(DEPTH_OCCLUSION) && DEPTH_OCCLUSION == 1\nuniform sampler2D tDepthTest;\nuniform vec2 tDepthResolution;\nin float vDepthPositionZ;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#if NUM_CUTPLANES > 0\nin highp vec3 vWorldPosition;\n#endif\n#if defined( PARTICLE_UV )\nin highp vec4 vUVp;\n#endif\n#include \n#include \n#include \n#include \nvoid main() {\n#if NUM_CUTPLANES > 0\n checkCutPlanes(vWorldPosition);\n#endif\n vec3 outgoingLight = vec3( 0.0 );\n vec4 diffuseColor = vec4( diffuse, opacity );\n#if defined( USE_MAP ) && defined ( PARTICLE_FRAGMENT )\n #if defined( PARTICLE_UV )\n vec2 uv3 = mix( vUVp.xy, vUVp.zw, gl_PointCoord );\n diffuseColor = texture( map, uv3);\n #else\n \tdiffuseColor = texture( map, gl_PointCoord );\n #endif\n#else\n #include \n#endif\n#include \n#include \n#include \n#include \n outgoingLight = diffuseColor.rgb;\n#if !defined ( PARTICLE_FRAGMENT )\n #include \n #include \n#endif\n#include \n outFragColor = vec4( outgoingLight, diffuseColor.a );\n vec3 geomNormal = vec3(0.0,0.0,0.0);\n float depth = 0.0;\n#include \n#if defined(DEPTH_OCCLUSION) && DEPTH_OCCLUSION == 1\n vec2 depthUV = gl_FragCoord.xy * tDepthResolution;\n float depthVal = texture(tDepthTest, depthUV).z;\n if(depthVal > vDepthPositionZ && depthVal != 0.) {\n discard;\n }\n#endif\n#include \n#include \n}\n"},21175:e=>{e.exports="#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_INSTANCING\n #include \n#endif\n#if defined( PARTICLE_UV )\nin vec4 uvp;\nout highp vec4 vUVp;\n#endif\n#if defined (PARTICLE_FLAGS)\nin float pointScale;\n#endif\n#if NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\n#if defined(DEPTH_OCCLUSION) && DEPTH_OCCLUSION == 1\nout float vDepthPositionZ;\n#endif\nvoid main() {\n#ifdef USE_INSTANCING\n vec3 instancePosition = getInstancePos(position);\n #define position instancePosition\n#endif\n#if defined(USE_ENVMAP) && (defined(UNPACK_NORMALS) || defined(USE_INSTANCE))\n vec3 correctNormal;\n #ifdef UNPACK_NORMALS\n correctNormal = decodeNormal(normal);\n #else\n correctNormal = normal;\n #endif\n #ifdef USE_INSTANCING\n correctNormal = getInstanceNormal(correctNormal);\n #endif\n #define normal correctNormal\n#endif\n#include \n#include \n#include \n#ifdef USE_ENVMAP\n#include \n#endif\n#include \n#include \n#include \n#if NUM_CUTPLANES > 0\n vec4 _worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = _worldPosition.xyz;\n#endif\n#if defined(DEPTH_OCCLUSION) && DEPTH_OCCLUSION == 1\n vec4 _vDepthPosition = modelViewMatrix * vec4( position, 1.0 );\n vDepthPositionZ = _vDepthPosition.z;\n#endif\n#if defined( PARTICLE_UV )\n vUVp = uvp;\n#endif\n#include \n#include \n#include \n#if defined (PARTICLE_FLAGS) \n gl_PointSize *= clamp(pointScale, 0.0, 2.0);\n#endif\n#include \n}\n"},66299:e=>{e.exports="uniform sampler2D tDiffuse;\nuniform sampler2D tAO;\nuniform int useAO;\nuniform float aoOpacity;\nuniform sampler2D tOverlay;\nuniform int useOverlay;\nuniform int useOverlayAlpha;\nuniform vec2 resolution;\nuniform vec4 objIDv4;\nuniform sampler2D tID;\nuniform vec4 edgeObjIDv4;\n#if defined(USE_MODEL_ID)\n#if defined(HIGHLIGHT_MODEL_ID_COUNT)\nuniform vec2 modelIDsv2v[HIGHLIGHT_MODEL_ID_COUNT];\n#else\nuniform vec2 modelIDv2;\n#endif\nuniform sampler2D tID2;\nuniform vec2 edgeModelIDv2;\n#endif\nuniform float highlightIntensity;\nuniform vec3 selectionColor;\nuniform float highlightFullModel;\nuniform vec3 highlightColor;\n#ifdef IS_2D\nuniform float expand2dSelection;\n#endif\nuniform sampler2D tCrossFadeTex0;\nuniform sampler2D tCrossFadeTex1;\nuniform float crossFadeOpacity0;\nuniform float crossFadeOpacity1;\nin vec2 vUv;\n#ifdef SPATIAL_FILTER\n#include \n#endif\n#include \n#ifdef USE_IDBUFFER_SELECTION\nbool isSelection(vec2 vUv, float I, float J) {\n vec4 idAtPixel = texture(tID, vUv+resolution*vec2(I,J));\n if (idAtPixel.rgb == vec3(0.0))\n return false;\n#if defined(USE_MODEL_ID)\n vec4 modelAtPixel = texture(tID2, vUv+resolution*vec2(I,J));\n idAtPixel.a = modelAtPixel.b;\n vec4 idDelta = abs(idAtPixel.rgba - edgeObjIDv4.rgba);\n vec2 modelDelta = abs(modelAtPixel.rg - edgeModelIDv2.rg);\n#else\n vec4 idDelta = vec4(abs(idAtPixel.rgb - edgeObjIDv4.rgb), 0.0);\n vec2 modelDelta = vec2(0.0, 0.0);\n#endif\n if (max(max(modelDelta.r, modelDelta.g), max(max(idDelta.r, idDelta.g), max(idDelta.b, idDelta.a))) < 1e-3) {\n return true;\n } else {\n return false;\n }\n}\n#else\nbool isSelected(vec3 C) {\n float minS = min(selectionColor.r, min(selectionColor.g, selectionColor.b));\n float maxS = max(selectionColor.r, max(selectionColor.g, selectionColor.b));\n float satS = maxS - minS;\n float minC = min(C.r, min(C.g, C.b));\n float maxC = max(C.r, max(C.g, C.b));\n float satC = maxC - minC;\n if (satC < .01 || satS < .01)\n return false;\n vec3 S = (selectionColor - minS) / satS;\n vec3 H = (C - minC) / satC;\n vec3 D = H - S;\n float eps = .15;\n return (abs(D.r) + abs(D.g) + abs(D.b) < eps)\n || (maxC >= (1.0 - eps) && D.r >= -eps && D.g >= -eps && D.b >= -eps);\n}\n#define IS_SELECTION(C) isSelected((C).rgb)\n#endif\nvec4 overlayEdgeDetect(vec2 vUv) {\n#ifdef IS_2D\n#define MAX_ALPHA(c)\n#define SUM_ALPHA(c, w) sumAlpha += c.a * w; sumWeight += w;\n#else\n#define MAX_ALPHA(c) maxAlpha = max(maxAlpha, c.a);\n#define SUM_ALPHA(c, w) \n#endif\n#ifdef USE_IDBUFFER_SELECTION\n#define CHECK_EDGE_ALPHA(I, J, W) { vec4 c = texture( tOverlay, vUv+resolution*vec2((I),(J)) ); MAX_ALPHA(c) if (c.a > 0.0 && isSelection(vUv, I, J)) { hasEdge++; SUM_ALPHA(c, W) selectionPixel = c; } }\n#else\n#define CHECK_EDGE_ALPHA(I, J, W) { vec4 c = texture( tOverlay, vUv+resolution*vec2((I),(J)) ); MAX_ALPHA(c) if (c.a > 0.0 && IS_SELECTION(c)) { hasEdge++; SUM_ALPHA(c, W) selectionPixel = c; } }\n#endif\n#ifndef IS_2D\n#define CHECK_EDGE_SELECTION(I, J) { vec4 c = texture( tOverlay, vUv+resolution*vec2((I),(J)) ); MAX_ALPHA(c) if (c.a <= 0.0) hasEdge++; }\n#endif\n int hasEdge = 0;\n vec4 center = texture(tOverlay, vUv);\n vec4 selectionPixel = vec4(0.0);\n#ifdef IS_2D\n float sumAlpha = 0.0, sumWeight = 0.0;\n#else\n float maxAlpha = 0.0;\n bool paintOutline = false;\n#endif\n if (center.a <= 0.0) {\n CHECK_EDGE_ALPHA(-1.0,-1.0, 1.0);\n CHECK_EDGE_ALPHA( 0.0,-1.0, 2.0);\n CHECK_EDGE_ALPHA( 1.0,-1.0, 1.0);\n CHECK_EDGE_ALPHA(-1.0, 0.0, 2.0);\n CHECK_EDGE_ALPHA( 1.0, 0.0, 2.0);\n CHECK_EDGE_ALPHA(-1.0, 1.0, 1.0);\n CHECK_EDGE_ALPHA( 0.0, 1.0, 2.0);\n CHECK_EDGE_ALPHA( 1.0, 1.0, 1.0);\n if (hasEdge != 0) {\n#ifdef IS_2D\n center.a = -clamp(expand2dSelection - 1.0 + sumAlpha / sumWeight, 0.0, 1.0);\n center.rgb = center.a < 0.0 ? selectionPixel.rgb : center.rgb;\n#else\n center = selectionPixel;\n paintOutline = true;\n#endif\n }\n }\n#ifdef USE_IDBUFFER_SELECTION\n else if (center.a > 0.0 && isSelection(vUv, 0.0, 0.0)) {\n#else\n else if (center.a > 0.0 && IS_SELECTION(center)) {\n#endif\n#ifdef IS_2D\n center.a = -clamp(center.a + expand2dSelection, 0.0, 1.0);\n#else\n CHECK_EDGE_SELECTION(-1.0,-1.0);\n CHECK_EDGE_SELECTION( 0.0,-1.0);\n CHECK_EDGE_SELECTION( 1.0,-1.0);\n CHECK_EDGE_SELECTION(-1.0, 0.0);\n CHECK_EDGE_SELECTION( 1.0, 0.0);\n CHECK_EDGE_SELECTION(-1.0, 1.0);\n CHECK_EDGE_SELECTION( 0.0, 1.0);\n CHECK_EDGE_SELECTION( 1.0, 1.0);\n if (hasEdge != 0)\n paintOutline = true;\n else\n center.a = -center.a;\n#endif\n }\n#ifndef IS_2D\n if (paintOutline) {\n float maxComponent = max(center.r, max(center.g, center.b));\n center.rgb /= maxComponent;\n center.rgb = sqrt(center.rgb);\n center.a = 0.5 + 0.5 * maxAlpha * 0.125 * float(hasEdge);\n }\n#endif\n return center;\n}\n#ifdef SPATIAL_FILTER\nSPATIAL_FILTER\n#endif\nvec4 sampleColor() {\n return texture( tDiffuse, vUv );\n}\nfloat sampleAO() {\n return (useAO != 0) ? sqrt(texture(tAO, vUv).r) : 1.0;\n}\nvec3 applyCrossFade(vec3 srcColor, sampler2D fadeTex, float opacity, vec2 vUv) {\n vec4 blendCol = texture(fadeTex, vUv);\n return mix(srcColor.rgb, blendCol.rgb, blendCol.a * opacity);\n}\nvoid applyHighlighting(inout vec3 rgb, float filterValue) {\n#ifdef IS_2D\n rgb = mix(rgb, vec3(1.0,1.0,0.0), filterValue * highlightIntensity * 0.25);\n#else\n rgb += highlightColor * filterValue * highlightIntensity * 0.20;\n#endif\n}\n#ifdef USE_MODEL_ID\nfloat getModelIdDelta(vec2 a, vec2 b) {\n vec2 delta = abs(a-b);\n return max(delta.r, delta.g);\n}\nfloat getModelIdDelta(vec2 modelAtPixel) {\n \n#ifdef HIGHLIGHT_MODEL_ID_COUNT\n float delta = 1.0;\n for (int i=0; i 1)\n #if (TARGET_FADE_MODE == 0)\n texel.rgb = applyCrossFade(texel.rgb, tCrossFadeTex0, crossFadeOpacity0, vUv);\n texel.rgb = applyCrossFade(texel.rgb, tCrossFadeTex1, crossFadeOpacity1, vUv);\n #else\n vec4 t0 = texture(tCrossFadeTex0, vUv);\n vec4 t1 = texture(tCrossFadeTex1, vUv);\n vec4 mixed = mix(t0, t1, crossFadeOpacity1);\n texel.rgb = mix(texel.rgb, mixed.rgb, mixed.a);\n float aoGamma = 1.0 + 3.0 * (1.0 - 2.0 * abs(crossFadeOpacity1 - 0.5));\n if (aoGamma == 0.0)\n aoGamma = 1.0;\n ao = pow(ao, 1.0 / aoGamma);\n #endif\n #else\n vec4 mixed = texture(tCrossFadeTex0, vUv);\n texel.rgb = mix(texel.rgb, mixed.rgb, mixed.a);\n #endif\n #else\n #endif\n ao = 1.0 - (1.0 - ao) * aoOpacity;\n texel.rgb *= ao;\n if (useOverlay != 0) {\n vec4 overlay = overlayEdgeDetect(vUv);\n if (overlay.a < 0.0) {\n overlay.a = -overlay.a;\n#ifdef IS_2D\n overlay.a *= 0.6;\n#else\n if (overlay.a >= 0.99) {\n overlay.a = 0.75;\n texel.rgb = vec3(luminance_post(texel.rgb));\n }\n#endif\n }\n#ifdef IS_2D\n texel.rgb = texel.rgb * (1.0 - overlay.a) + overlay.rgb;\n#else\n texel.rgb = texel.rgb * (1.0 - overlay.a) + sqrt(overlay.rgb * overlay.a);\n#endif\n if (useOverlayAlpha != 0) {\n texel.a += overlay.a * (1.0 - texel.a);\n }\n }\n if (objIDv4 != vec4(0.0)) {\n vec4 idAtPixel = texture(tID, vUv);\n #ifdef SPATIAL_FILTER\n vec3 worldPos = reconstructWorldPosition(gl_FragCoord.xy, vUv);\n float filterValue = (spatialFilter(worldPos) ? 1.0 : 0.0);\n if (idAtPixel != vec4(1,1,1,1)) {\n applyHighlighting(texel.rgb, filterValue);\n }\n #else\n #if defined(USE_MODEL_ID)\n vec4 modelAtPixel = texture(tID2, vUv);\n idAtPixel.a = modelAtPixel.b;\n vec4 idDelta = abs(idAtPixel.rgba - objIDv4.rgba) * (1.0 - highlightFullModel);\n float modelDelta = getModelIdDelta(modelAtPixel.rg);\n #else\n vec4 idDelta = vec4(abs(idAtPixel.rgb - objIDv4.rgb), 0.0);\n float modelDelta = 0.0;\n #endif\n if (max(modelDelta, max(max(idDelta.r, idDelta.g), max(idDelta.b, idDelta.a))) < 1e-3) {\n applyHighlighting(texel.rgb, 1.0);\n }\n #endif\n }\n outFragColor = texel;\n}\n"},91342:e=>{e.exports="\n#include \nuniform sampler2D tDiffuse;\nuniform sampler2D tID;\nuniform vec2 resolution;\nuniform float cameraNear;\nuniform float cameraFar;\nuniform sampler2D tFill;\nuniform sampler2D tPaper;\nuniform int style;\nuniform int idEdges;\nuniform int normalEdges;\nuniform int depthEdges;\nuniform float brightness;\nuniform float contrast;\nuniform int grayscale;\nuniform int preserveColor;\nuniform int outlineNoise;\nuniform float levels;\nuniform float repeats;\nuniform float rotation;\nuniform float outlineRadius;\nuniform sampler2D tGraphite1;\nuniform sampler2D tGraphite2;\nuniform sampler2D tGraphite3;\nuniform sampler2D tGraphite4;\nuniform sampler2D tGraphite5;\nuniform sampler2D tGraphite6;\nuniform sampler2D tGraphite7;\nuniform sampler2D tGraphite8;\nin vec2 vUv;\nvec4 recoverNZ(vec4 nrmz) {\n float z = sqrt(1.0 - dot(nrmz.xy, nrmz.xy));\n nrmz.w = -(nrmz.z + cameraNear) / (cameraFar - cameraNear);\n nrmz.z = z;\n return nrmz;\n}\n#include \n#include \nvec3 quantize(vec3 c) {\n float L = max(c.r, max(c.g, c.b));\n c *= floor(L * (levels-1.0) + 0.5) / (L * (levels-1.0));\n return c;\n}\nvec3 quantizeRGB(vec3 c) {\n c *= c;\n c *= floor(c * levels * 0.9999) / (levels-1.0);\n return sqrt(c);\n}\nvec3 clampHue(vec3 c, float hues, float sats, float vals) {\n vec3 hsv = rgb2hsv(c);\n hsv.x = floor(hsv.x * hues + 0.5) / hues;\n hsv.y = floor(hsv.y * sats + 0.5) / sats;\n hsv.z = floor(hsv.z * vals + 0.5) / vals;\n vec3 col = hsv2rgb(hsv);\n return col;\n}\nvec3 reconstructCSFaceNormal(vec3 C) {\n return normalize(cross(dFdy(C), dFdx(C)));\n}\nvec3 getPosition(ivec2 ssP, float depth) {\n vec3 P;\n P = reconstructCSPosition(vec2(ssP) + vec2(0.5), depth);\n return P;\n}\nint isObjectEdge() {\n vec2 uv = vUv;\n if (outlineNoise == 1) {\n vec4 noise = texture(tGraphite7, vUv);\n uv = vUv + 0.02 * (noise.xy - vec2(0.25));\n }\n vec4 MM = texture(tID, uv);\n vec4 LL = texture(tID, uv + vec2(-outlineRadius, -outlineRadius) * resolution);\n if (MM != LL) return 1;\n vec4 LM = texture(tID, uv + vec2( 0.0, -outlineRadius) * resolution);\n if (MM != LM) return 1;\n vec4 LR = texture(tID, uv + vec2( outlineRadius, -outlineRadius) * resolution);\n if (MM != LR) return 1;\n vec4 ML = texture(tID, uv + vec2(-outlineRadius, 0.0) * resolution);\n if (MM != ML) return 1;\n vec4 MR = texture(tID, uv + vec2( outlineRadius, 0.0) * resolution);\n if (MM != MR) return 1;\n vec4 UL = texture(tID, uv + vec2(-outlineRadius, outlineRadius) * resolution);\n if (MM != UL) return 1;\n vec4 UM = texture(tID, uv + vec2( 0.0, outlineRadius) * resolution);\n if (MM != UM) return 1;\n vec4 UR = texture(tID, uv + vec2( outlineRadius, outlineRadius) * resolution);\n if (MM != UR) return 1;\n return (MM.x + MM.y + MM.z + MM.w) >= 4.0 ? 0 : -1;\n}\nfloat normalDiff(vec3 n1, vec3 n2) {\n float d = dot(n1.xyz, n2.xyz);\n return acos(clamp(d, -1.0, 1.0));\n}\nint isNormalDepthEdge() {\n ivec2 ssC = ivec2(gl_FragCoord.xy);\n vec2 uv = vUv;\n if (outlineNoise == 1) {\n vec4 noise = texture(tGraphite7, vUv);\n uv = vUv + 0.02 * (noise.xy - vec2(0.25));\n }\n vec4 MM = texture(tDepth, uv);\n vec4 LL = texture(tDepth, uv + vec2(-outlineRadius, -outlineRadius) * resolution);\n vec4 LM = texture(tDepth, uv + vec2( 0.0, -outlineRadius) * resolution);\n vec4 LR = texture(tDepth, uv + vec2( outlineRadius, -outlineRadius) * resolution);\n \n vec4 ML = texture(tDepth, uv + vec2(-outlineRadius, 0.0) * resolution);\n vec4 MR = texture(tDepth, uv + vec2( outlineRadius, 0.0) * resolution);\n vec4 UL = texture(tDepth, uv + vec2(-outlineRadius, outlineRadius) * resolution);\n vec4 UM = texture(tDepth, uv + vec2( 0.0, outlineRadius) * resolution);\n vec4 UR = texture(tDepth, uv + vec2( outlineRadius, outlineRadius) * resolution);\n LL = recoverNZ(LL);\n LM = recoverNZ(LM);\n LR = recoverNZ(LR);\n ML = recoverNZ(ML);\n MM = recoverNZ(MM);\n MR = recoverNZ(MR);\n UL = recoverNZ(UL);\n UM = recoverNZ(UM);\n UR = recoverNZ(UR);\n float dd = 0.0;\n if ( depthEdges == 1 ) {\n float G = (abs(UL.w - MM.w) + 2.0 * abs(UM.w - MM.w) + abs(UR.w - MM.w) + 2.0 * abs(ML.w - MM.w) + 2.0 * abs(MR.w - MM.w) + abs(LL.w - MM.w) + 2.0 * abs(LM.w - MM.w) + abs(LR.w - MM.w));\n dd = abs(dFdx(G)) + abs(dFdy(G));\n }\n float Gn = 0.0;\n if ( normalEdges == 1 ) {\n float pLL = normalDiff(LL.xyz, MM.xyz);\n float pLM = normalDiff(LM.xyz, MM.xyz);\n float pLR = normalDiff(LR.xyz, MM.xyz);\n float pML = normalDiff(ML.xyz, MM.xyz);\n float pMM = normalDiff(MM.xyz, MM.xyz);\n float pMR = normalDiff(MR.xyz, MM.xyz);\n float pUL = normalDiff(UL.xyz, MM.xyz);\n float pUM = normalDiff(UM.xyz, MM.xyz);\n float pUR = normalDiff(UR.xyz, MM.xyz);\n Gn = (abs(pUL - pMM) + 2.0 * abs(pUM - pMM) + abs(pUR - pMM) + 2.0 * abs(pML - pMM) + 2.0 * abs(pMR - pMM) + abs(pLL - pMM) + 2.0 * abs(pLM - pMM) + abs(pLR - pMM));\n }\n \n return (dd > 0.004 || Gn > 2.0) ? 1 : 0;\n}\nvec3 computeGraphite( vec3 color, vec2 loc ) {\n float lum = 0.299 * color.r + 0.587 * color.g + 0.114 * color.b;\n float offset;\n vec3 col1, col2;\n if ( lum > 6.0/7.0 ) {\n col1 = texture(tGraphite1, loc ).xyz;\n col2 = texture(tGraphite2, loc ).xyz;\n offset = 6.0/7.0;\n } else if ( lum > 5.0/7.0 ) {\n col1 = texture(tGraphite2, loc ).xyz;\n col2 = texture(tGraphite3, loc ).xyz;\n offset = 5.0/7.0;\n } else if ( lum > 4.0/7.0 ) {\n col1 = texture(tGraphite3, loc ).xyz;\n col2 = texture(tGraphite4, loc ).xyz;\n offset = 4.0/7.0;\n } else if ( lum > 3.0/7.0 ) {\n col1 = texture(tGraphite4, loc ).xyz;\n col2 = texture(tGraphite5, loc ).xyz;\n offset = 3.0/7.0;\n } else if ( lum > 2.0/7.0 ) {\n col1 = texture(tGraphite5, loc ).xyz;\n col2 = texture(tGraphite6, loc ).xyz;\n offset = 2.0/7.0;\n } else if ( lum > 1.0/7.0 ) {\n col1 = texture(tGraphite6, loc ).xyz;\n col2 = texture(tGraphite7, loc ).xyz;\n offset = 1.0/7.0;\n } else {\n col1 = texture(tGraphite7, loc ).xyz;\n col2 = texture(tGraphite8, loc ).xyz;\n offset = 0.0;\n }\n if ( col1.r == 0.0 && col2.r == 0.0 ) {\n return vec3(lum,lum,lum);\n }\n float t = (lum-offset)*7.0;\n return (col1 * t + col2 * (1.0 - t));\n}\nvec3 colorWithAdjustments() {\n vec3 sceneRGB = texture(tDiffuse, vUv).xyz;\n if ( brightness != 0.0 || contrast != 0.0) {\n if ( brightness < 0.0 )\n {\n sceneRGB = sceneRGB * (1.0 + brightness);\n }\n else\n {\n sceneRGB = sceneRGB + ((1.0 - sceneRGB) * brightness);\n }\n float slant = tan(( clamp(contrast,-1.0,1.0) + 1.0) * 3.141592/4.001);\n sceneRGB = (sceneRGB - 0.5) * slant + 0.5;\n if ( preserveColor == 1 )\n {\n float maxval = max( sceneRGB.r, sceneRGB.g );\n maxval = max( maxval, sceneRGB.b );\n if ( maxval > 1.0 )\n {\n sceneRGB /= maxval;\n }\n }\n sceneRGB = clamp(sceneRGB,0.0,1.0);\n }\n if ( grayscale == 1 ) {\n sceneRGB.rgb = vec3(luminance_post(sceneRGB.rgb));\n }\n return sceneRGB;\n}\nvoid main() {\n int foundEdge = 0;\n foundEdge = ( idEdges == 1 && isObjectEdge() == 1 ) ? 1 : 0;\n if ( foundEdge == 0 && (normalEdges == 1 || depthEdges == 1) ) {\n foundEdge = isNormalDepthEdge();\n }\n vec2 loc = vec2((vUv.x-0.5)*(resolution.y/resolution.x),vUv.y-0.5)*repeats;\n if ( style > 2 && rotation != 0.0 ) {\n float rot = 3.14159*rotation;\n float sinr = sin(rot);\n float cosr = cos(rot);\n loc = vec2(loc.x*cosr + -loc.y*sinr, loc.x*sinr + loc.y*cosr);\n }\n loc += vec2(0.5,0.5);\n vec3 color;\n if ( style == 2 ) {\n if ( foundEdge == 1 ) {\n outFragColor = vec4(0.0,0.0,0.0,1.0);\n } else {\n outFragColor = vec4(quantize(colorWithAdjustments()),1.0);\n }\n } else if ( style == 3 ) {\n color = colorWithAdjustments();\n vec3 graphColor = computeGraphite( color, loc );\n if ( foundEdge == 1 ) {\n outFragColor = vec4(0.16,0.16,0.16,1.0) + vec4(0.18 * graphColor,0.0);\n } else {\n outFragColor = vec4(graphColor,1.0);\n }\n return;\n } else if ( style == 4 ) {\n float fill = texture(tFill, loc ).r;\n float paperStrength = 0.3;\n vec3 paper = texture(tPaper, loc ).rgb;\n paper = paperStrength * paper + (1.0-paperStrength)*vec3(1.0,1.0,1.0);\n if ( foundEdge == 1 ) {\n outFragColor = 0.75 * vec4(paper * fill, 1.0);\n } else {\n fill = pow(fill,1.6);\n outFragColor = vec4(colorWithAdjustments() * (1.0 - fill) + paper * fill, 1.0);\n }\n } else {\n if ( foundEdge == 1 ) {\n outFragColor = vec4(0.0,0.0,0.0,1.0);\n } else {\n outFragColor = vec4(colorWithAdjustments(),1.0);\n }\n return; \n }\n}\n"},78551:e=>{e.exports="uniform sampler2D tDiffuse;\nin vec2 vUv;\nvoid main() {\n outFragColor = texture(tDiffuse, vUv);\n}\n"},94727:e=>{e.exports="\n#if NUM_CUTPLANES > 0\nin vec3 vWorldPosition;\n#endif\n#include \n#define LINE_CUTPLANE\n#include \nuniform vec4 color;\n#include \nvoid main() {\n#include \n#if NUM_CUTPLANES > 0\n if (checkCutPlanes(vWorldPosition)) return;\n#endif\n outFragColor = color;\n#ifdef MRT_NORMALS\noutNormal = vec4(0.0);\n#endif\n#ifdef MRT_ID_BUFFER\n outId = vec4(0.0);\n #ifdef MODEL_COLOR\n outModelId = vec4(0.0);\n #endif\n#elif defined(ID_COLOR)\n outFragColor = vec4(0.0);\n#elif defined(MODEL_COLOR)\n outFragColor = vec4(0.0);\n#endif\n}\n"},9696:e=>{e.exports="\n#if NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\n#include \n#include \nvoid main() {\n vec3 instPos = getInstancePos(position);\n#if NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( instPos, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n vec4 mvPosition = modelViewMatrix * vec4( instPos, 1.0 );\n vec4 p_Position = projectionMatrix * mvPosition;\n gl_Position = p_Position;\n#include \n}"},49248:e=>{e.exports="#define FXAA_EDGE_SHARPNESS (8.0)\n#define FXAA_EDGE_THRESHOLD (0.125)\n#define FXAA_EDGE_THRESHOLD_MIN (0.05)\n#define FXAA_RCP_FRAME_OPT (0.50)\n#define FXAA_RCP_FRAME_OPT2 (2.0)\nuniform sampler2D tDiffuse;\nuniform highp vec2 uResolution;\nin vec2 vPos;\nin vec4 vPosPos;\nfloat FxaaLuma(vec3 rgb) {\n return dot(rgb, vec3(0.299, 0.587, 0.114));\n}\nvoid main() {\n float lumaNw = FxaaLuma(texture(tDiffuse, vPosPos.xy).rgb);\n float lumaSw = FxaaLuma(texture(tDiffuse, vPosPos.xw).rgb);\n float lumaNe = FxaaLuma(texture(tDiffuse, vPosPos.zy).rgb) + 1.0/384.0;\n float lumaSe = FxaaLuma(texture(tDiffuse, vPosPos.zw).rgb);\n vec4 rgbaM = texture(tDiffuse, vPos.xy); \n float lumaM = FxaaLuma(rgbaM.rgb);\n float lumaMax = max(max(lumaNe, lumaSe), max(lumaNw, lumaSw));\n float lumaMin = min(min(lumaNe, lumaSe), min(lumaNw, lumaSw));\n float lumaMaxSubMinM = max(lumaMax, lumaM) - min(lumaMin, lumaM);\n float lumaMaxScaledClamped = max(FXAA_EDGE_THRESHOLD_MIN, lumaMax * FXAA_EDGE_THRESHOLD);\n if (lumaMaxSubMinM < lumaMaxScaledClamped) {\n outFragColor = rgbaM;\n return;\n }\n float dirSwMinusNe = lumaSw - lumaNe;\n float dirSeMinusNw = lumaSe - lumaNw;\n vec2 dir1 = normalize(vec2(dirSwMinusNe + dirSeMinusNw, dirSwMinusNe - dirSeMinusNw));\n vec3 rgbN1 = texture(tDiffuse, vPos.xy - dir1 * FXAA_RCP_FRAME_OPT*uResolution).rgb;\n vec3 rgbP1 = texture(tDiffuse, vPos.xy + dir1 * FXAA_RCP_FRAME_OPT*uResolution).rgb;\n float dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * FXAA_EDGE_SHARPNESS;\n vec2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);\n vec3 rgbN2 = texture(tDiffuse, vPos.xy - dir2 * FXAA_RCP_FRAME_OPT2*uResolution).rgb;\n vec3 rgbP2 = texture(tDiffuse, vPos.xy + dir2 * FXAA_RCP_FRAME_OPT2*uResolution).rgb;\n vec3 rgbA = rgbN1 + rgbP1;\n vec3 rgbB = ((rgbN2 + rgbP2) * 0.25) + (rgbA * 0.25);\n float lumaB = FxaaLuma(rgbB);\n float alpha = rgbaM.a;\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n outFragColor = vec4(rgbA * 0.5, rgbaM.a);\n else\n outFragColor = vec4(rgbB, rgbaM.a);\n}\n"},2303:e=>{e.exports="uniform vec2 uResolution;\nout vec2 vPos;\nout vec4 vPosPos;\nvoid main() {\n vPos = uv;\n vPosPos.xy = uv + vec2(-0.5, -0.5) * uResolution;\n vPosPos.zw = uv + vec2( 0.5, 0.5) * uResolution;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n"},15201:e=>{e.exports="uniform sampler2D tDiffuse;\nuniform vec4 uColor;\nin vec2 vUv;\n#ifdef HORIZONTAL\n#define GET_UV(X) vec2(vUv.x + KERNEL_SCALE_H*(X), vUv.y)\n#else\n#define GET_UV(Y) vec2(vUv.x, vUv.y + KERNEL_SCALE_V*(Y))\n#endif\n#define PI 3.14159265358979\n#define SIGMA ((KERNEL_RADIUS+KERNEL_RADIUS+1.0) / 6.0)\n#define SIGMASQ2 (2.0 * SIGMA * SIGMA)\n#define GAUSSIAN(X) ( (1.0 / sqrt(PI * SIGMASQ2)) * exp(-(X)*(X)/SIGMASQ2) )\nvoid main() {\n vec4 texColSum = vec4(0.0);\n float gaussSum = 0.0;\n for (float x=-KERNEL_RADIUS; x<=KERNEL_RADIUS; x+=1.0) {\n float gauss = GAUSSIAN(x);\n vec4 texCol = texture(tDiffuse, GET_UV(x));\n#ifdef HAS_ALPHA\n texCol.rgb *= texCol.a;\n#endif\n texColSum += texCol * gauss;\n gaussSum += gauss;\n }\n#ifdef HAS_ALPHA\n texColSum.rgb /= (texColSum.a == 0.0 ? 0.0001 : texColSum.a);\n#endif\n#ifdef HORIZONTAL\n outFragColor = texColSum/gaussSum;\n#else\n outFragColor = texColSum/gaussSum * uColor;\n#endif\n}\n"},8102:e=>{e.exports="out vec2 vUv;\nvoid main() {\n#if defined(HORIZONTAL) && defined(FLIP_UV)\n vUv = vec2(uv.x, 1.0-uv.y);\n#else\n vUv = vec2(uv.x, uv.y);\n#endif\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n"},99885:e=>{e.exports="uniform sampler2D tDiffuse;\nin vec2 vUv;\nvoid main() {\n vec4 texel = texture( tDiffuse, vUv );\n outFragColor = texel;\n}\n"},63694:e=>{e.exports="#define NUM_SAMPLES 29.0\n#define NUM_SPIRAL_TURNS 7.0\nuniform sampler2D tDepth;\nuniform vec3 worldSize;\nin vec2 vUv;\n#ifdef PRESET_2\n#define SAMPLE_RADIUS 0.3\n#define AO_GAMMA 1.0\n#define AO_INTENSITY 1.0\n#else\n#define SAMPLE_RADIUS 0.2\n#define AO_GAMMA 3.0\n#define AO_INTENSITY 0.8\n#endif\n#include \n#define PI 3.14159265358979\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\nfloat getRandomAngle(vec2 pos) {\n return rand(pos) * (2.0 * PI);\n}\nvec2 tapLocation(float sampleNumber, float spinAngle, out float ssR){\n float alpha = float(sampleNumber + 0.5) * (1.0 / NUM_SAMPLES);\n float angle = alpha * (NUM_SPIRAL_TURNS * PI * 2.0) + spinAngle;\n ssR = alpha;\n return vec2(cos(angle), sin(angle));\n}\nvec2 sampleAO(vec2 unitDirection, float radius) {\n vec2 sampleOffset = unitDirection * radius;\n float idepth = unpackDepth(texture(tDepth, vUv + sampleOffset));\n float depth = 1.0 - idepth;\n if (depth < 1e-6) {\n if (radius == 0.0)\n return vec2(1.0, 1.0);\n else\n return vec2(0.0, 1.0);\n }\n vec3 dir = vec3(sampleOffset.x, depth, sampleOffset.y) * worldSize;\n float distance2 = dot(dir,dir);\n float idistance = 1.0 / sqrt(distance2);\n vec3 ndir = dir * idistance;\n#ifdef PRESET_2\n float importance = ndir.y * idistance;\n#else\n float importance = ndir.y / distance2;\n#endif\n vec2 ret;\n ret.x = (idepth == 0.0) ? 0.0 : importance;\n ret.y = importance;\n return ret;\n}\nvoid main() {\n vec2 sum = vec2(0.0);\n float angle = getRandomAngle(vUv);\n for (float i = 0.0; i{e.exports="uniform sampler2D tDepth;\nin vec2 vUv;\n#ifdef HORIZONTAL\n#define GET_UV(X) vec2(vUv.x + KERNEL_SCALE*(X), vUv.y)\n#else\n#define GET_UV(Y) vec2(vUv.x, vUv.y + KERNEL_SCALE*(Y))\n#endif\n#include \n#define PI 3.14159265358979\n#define SIGMA ((2.0 * KERNEL_RADIUS+1.0) / 6.0)\n#define SIGMASQ2 (2.0 * SIGMA * SIGMA)\n#ifdef BOX\n#define KERNEL_VAL(X) 1.0\n#else\n#define KERNEL_VAL(X) ( (1.0 / sqrt(PI * SIGMASQ2)) * exp(-(X)*(X)/SIGMASQ2) )\n#endif\nvoid main() {\n float depthVal = 0.0;\n float sum = 0.0;\n for (float x=-KERNEL_RADIUS; x<=KERNEL_RADIUS; x+=1.0) {\n depthVal += unpackDepth(texture(tDepth, GET_UV(x))) * KERNEL_VAL(x);\n sum += KERNEL_VAL(x);\n }\n outFragColor = packDepth(depthVal/sum);\n}\n"},17797:e=>{e.exports="uniform sampler2D tDepth;\nuniform vec4 uShadowColor;\nin vec2 vUv;\n#include \nvoid main() {\n float depthVal = unpackDepth(texture(tDepth, vUv));\n outFragColor = vec4(uShadowColor.rgb, uShadowColor.a * depthVal);\n}\n"},2647:e=>{e.exports="#include \n#if NUM_CUTPLANES > 0\nin vec3 vWorldPosition;\n#endif\n#include \nvoid main() {\n#if NUM_CUTPLANES > 0\n checkCutPlanes(vWorldPosition);\n#endif\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n depth = 1.0 - depth;\n outFragColor = packDepth(depth);\n}\n"},67312:e=>{e.exports="#if NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );;\n#if NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n}\n"},4965:e=>{e.exports="#include \n#include \n#include \n#include \n#include \n#include \n#define ENABLE_ID_DISCARD\nuniform float opacity;\nuniform vec4 selectionColor;\n#if NUM_CUTPLANES>0\nin highp vec3 vWorldPosition;\n#endif\n#ifdef VIEWPORT_CLIPPING\nuniform highp vec4 viewportBounds;\nin vec4 vPosition;\n#endif\n#include \nvoid main(){\n #if NUM_CUTPLANES>0\n checkCutPlanes(vWorldPosition);\n #endif\n \n #ifdef VIEWPORT_CLIPPING\n \n if (vPosition.x < viewportBounds.x || vPosition.x > viewportBounds.z || vPosition.y < viewportBounds.y || vPosition.y > viewportBounds.w) {\n discard;\n }\n #endif\n \n float depth = 0.;\n vec3 geomNormal = vec3(0.);\n vec3 outgoingLight = vec3(0.);\n vec4 diffuseColor = vec4(opacity);\n \n #include \n #include \n #include \n \n outgoingLight = diffuseColor.rgb;\n \n #include \n \n outFragColor = vec4(outgoingLight, diffuseColor.a);\n float writeId = 1.0;\n #ifdef GHOSTED \n writeId = 0.;\n outFragColor.a *= 0.1;\n #endif\n \n #include \n outFragColor.rgb = mix(outFragColor.rgb, selectionColor.rgb, selectionColor.a);\n #include \n #include \n}\n"},86546:e=>{e.exports="#include \n#include \n#include \n#if NUM_CUTPLANES>0\nout vec3 vWorldPosition;\n#endif\n#ifdef VIEWPORT_CLIPPING\nuniform mat4 modelLocalMatrix;\nout vec4 vPosition;\n#endif\nvoid main(){\n vUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n \n #if NUM_CUTPLANES>0\n vWorldPosition = (modelMatrix * vec4(position,1.)).xyz;\n #endif\n \n #ifdef VIEWPORT_CLIPPING\n vPosition = modelLocalMatrix * vec4(position.xy,0.,1.);\n #endif\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.xy,0.,1.);\n#include \n}\n"},24314:e=>{e.exports="\r\n\r\n#define LINE\r\n#include \r\n#include \r\n#include \r\n\r\nuniform highp float pixelsPerUnit;\r\nuniform highp float aaRange;\r\n\r\nuniform float opacity;\r\nuniform highp float viewportId;\r\nuniform highp float swap;\r\nuniform highp float grayscale;\r\n\r\n#ifdef HAS_RASTER_QUADS\r\nuniform sampler2D tRaster;\r\n#endif\r\n\r\n#ifdef HAS_LINESTYLES\r\nuniform sampler2D tLineStyle;\r\nuniform vec2 vLineStyleTexSize;\r\n#endif\r\n\r\n#ifdef VIEWPORT_CLIPPING\r\nuniform highp vec4 viewportBounds;\r\nin highp vec2 vPosition;\r\n#endif\r\n\r\n#ifdef IMAGE_UV_TEXTURE\r\nin highp vec2 vuv;\r\nuniform sampler2D tRaster;\r\n#endif\r\n\r\n\r\nfloat curveGaussian(float r, float invWidth) {\r\n float amt = clamp(r * invWidth, 0.0, 1.0);\r\n\r\n float exponent = amt * 2.0;\r\n\r\n return exp(-exponent*exponent);\r\n\r\n\r\n\r\n}\r\n\r\n#ifdef HAS_LINESTYLES\r\nfloat getLinePatternPixel(int i, int j) {\r\n\r\n return texture(tLineStyle, (vec2(i, j) + 0.5) / vLineStyleTexSize).x * 255.0;\r\n}\r\n\r\nfloat getPatternLength(int whichPattern) {\r\n float p1 = getLinePatternPixel(0, whichPattern);\r\n float p2 = getLinePatternPixel(1, whichPattern);\r\n return (p2 * 256.0 + p1);\r\n}\r\n#endif\r\n\r\n\r\nvoid fillLineSegment() {\r\n\r\n float radius = abs(fsHalfWidth);\r\n float parametricDistance = fsMultipurpose.x;\r\n float segmentLength = fsMultipurpose.y;\r\n float totalDistance = fsMultipurpose.z;\r\n\r\n#ifdef LOADING_ANIMATION\r\n float distFromStart = parametricDistance / segmentLength;\r\n if (loadingProgress < 1.0 && distFromStart > loadingProgress) {\r\n discard;\r\n }\r\n#endif\r\n\r\n\r\n#ifdef HAS_LINESTYLES\r\n int whichPattern = int(fsMultipurpose.w);\r\n\r\n if (whichPattern > 0) {\r\n const float TEX_TO_UNIT = 1.0 / 96.0;\r\n\r\n float patternScale;\r\n\r\n\r\n\r\n if (fsHalfWidth < 0.0) {\r\n patternScale = LTSCALE;\r\n } else {\r\n patternScale = LTSCALE * TEX_TO_UNIT * pixelsPerUnit;\r\n }\r\n\r\n float patLen = patternScale * getPatternLength(whichPattern);\r\n float phase = mod((totalDistance + parametricDistance) * pixelsPerUnit, patLen);\r\n\r\n bool onPixel = true;\r\n float radiusPixels = radius * pixelsPerUnit;\r\n\r\n for (int i=2; i aaRange) {\r\n discard;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n outFragColor = fsColor;\r\n outFragColor.a *= curveGaussian(range+aaRange, pixelsPerUnit);\r\n}\r\n\r\n#ifdef HAS_CIRCLES\r\nvoid fillCircularArc() {\r\n\r\n float dist = length(fsOffsetDirection);\r\n vec2 angles = fsMultipurpose.xz;\r\n float radius = abs(fsMultipurpose.y);\r\n float range = abs(dist - radius);\r\n range -= fsHalfWidth;\r\n\r\n\r\n\r\n if (range > aaRange) {\r\n discard;\r\n }\r\n\r\n vec2 direction = fsOffsetDirection;\r\n float angle = atan(direction.y, direction.x);\r\n\r\n\r\n\r\n\r\n if (angles.x > angles.y) {\r\n\r\n if (angle > angles.x && angle < PI) {\r\n angle -= TAU;\r\n }\r\n angles.x -= TAU;\r\n\r\n\r\n\r\n if (angle < angles.x ) {\r\n angle += TAU;\r\n }\r\n }\r\n else if (angle < 0.0)\r\n angle += TAU;\r\n\r\n#ifdef LOADING_ANIMATION\r\n if ((angle - angles.x) / (angles.y - angles.x) > loadingProgress) {\r\n discard;\r\n }\r\n#endif\r\n\r\n\r\n if (angle > angles.x && angle < angles.y) {\r\n outFragColor = fsColor;\r\n outFragColor.a *= curveGaussian(range+aaRange, pixelsPerUnit);\r\n }\r\n else {\r\n discard;\r\n }\r\n\r\n}\r\n#endif\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n#ifdef HAS_ELLIPTICALS\r\n\r\n\r\n\r\n\r\n\r\n\r\nfloat EllipticalApprox(\r\n const int iters,\r\n inout float t0, inout float t1,\r\n const vec2 y, out vec2 x,\r\n const vec2 e, const vec2 ey, const vec2 esqr\r\n ) {\r\n vec2 r;\r\n for (int i = 0; i < 10; ++i) {\r\n if(i >= iters) break;\r\n\r\n float t = mix(t0, t1, 0.5);\r\n r = ey / (vec2(t) + esqr);\r\n\r\n vec2 rsq = r * r;\r\n float f = rsq.x + rsq.y - 1.0;\r\n\r\n if(f > 0.0) { t0 = t; } else { t1 = t; }\r\n }\r\n\r\n x = e * r;\r\n return distance(x, y);\r\n}\r\n\r\nfloat DistancePointEllipseSpecial (vec2 e, vec2 y, out vec2 x, float width, float aaRange) {\r\n float dist;\r\n\r\n\r\n vec2 esqr = e * e;\r\n vec2 ey = e * y;\r\n float t0 = -esqr[1] + ey[1];\r\n float t1 = -esqr[1] + length(ey);\r\n\r\n\r\n\r\n dist = EllipticalApprox(6, t0, t1, y, x, e, ey, esqr);\r\n\r\n\r\n if (dist > max(2.0 * (width + aaRange), e[0] * 0.05))\r\n return dist;\r\n\r\n\r\n dist = EllipticalApprox(6, t0, t1, y, x, e, ey, esqr);\r\n\r\n\r\n\r\n\r\n float ecc = 1.0 + 0.1 * e[0] / e[1];\r\n\r\n if (dist > max(ecc * (width + aaRange), e[0] * 0.001))\r\n return dist;\r\n if (dist < (width - aaRange) / ecc)\r\n return dist;\r\n\r\n\r\n\r\n\r\n dist = EllipticalApprox(10, t0, t1, y, x, e, ey, esqr);\r\n return dist;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nfloat DistancePointEllipse(vec2 e, vec2 y, out vec2 locX, float width, float aaRange) {\r\n vec2 locE, locY;\r\n\r\n\r\n\r\n\r\n float diff = sign(e[0] - e[1]);\r\n vec2 swizzle = vec2(max(diff, 0.0), -min(diff, 0.0));\r\n locE.x = dot(e, swizzle.xy);\r\n locE.y = dot(e, swizzle.yx);\r\n locY.x = dot(y, swizzle.xy);\r\n locY.y = dot(y, swizzle.yx);\r\n\r\n\r\n vec2 refl = sign(locY);\r\n locY *= refl;\r\n\r\n vec2 x;\r\n float distance = DistancePointEllipseSpecial(locE, locY, x, width, aaRange);\r\n\r\n x *= refl;\r\n\r\n locX.x = dot(x, swizzle.xy);\r\n locX.y = dot(x, swizzle.yx);\r\n\r\n return distance;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nvoid fillEllipticalArc() {\r\n vec2 angles = fsMultipurpose.xz;\r\n vec2 radii = abs(fsMultipurpose.yw);\r\n vec2 dir = fsOffsetDirection;\r\n\r\n\r\n\r\n\r\n vec2 pos;\r\n float range = DistancePointEllipse(radii, dir, pos, fsHalfWidth, aaRange);\r\n range -= fsHalfWidth;\r\n\r\n if (range > aaRange)\r\n discard;\r\n\r\n float ar = radii[0] / radii[1];\r\n\r\n\r\n\r\n\r\n float angle = atan(ar * pos.y, pos.x);\r\n\r\n\r\n\r\n\r\n if (angles.x > angles.y) {\r\n\r\n if (angle > angles.x && angle < PI) {\r\n angle -= TAU;\r\n }\r\n angles.x -= TAU;\r\n\r\n\r\n\r\n if (angle < angles.x ) {\r\n angle += TAU;\r\n }\r\n }\r\n else if (angle < 0.0)\r\n angle += TAU;\r\n\r\n#ifdef LOADING_ANIMATION\r\n if ((angle - angles.x) / (angles.y - angles.x) > loadingProgress) {\r\n discard;\r\n }\r\n#endif\r\n\r\n\r\n if (angle > angles.x && angle < angles.y) {\r\n outFragColor = fsColor;\r\n outFragColor.a *= curveGaussian(range+aaRange, pixelsPerUnit);\r\n }\r\n else {\r\n discard;\r\n }\r\n}\r\n#endif\r\n\r\n#ifdef HAS_RASTER_QUADS\r\n void fillTexQuad() {\r\n outFragColor = texture(tRaster, fsMultipurpose.xy);\r\n #ifdef LOADING_ANIMATION\r\n outFragColor.a *= loadingProgress;\r\n #endif\r\n }\r\n#endif\r\n\r\nvoid fillTriangle() {\r\n#ifdef IMAGE_UV_TEXTURE\r\n outFragColor = texture(tRaster, fract(vuv));\r\n#else\r\n outFragColor = fsColor;\r\n#endif\r\n\r\n#ifdef LOADING_ANIMATION\r\n outFragColor.a *= loadingProgress;\r\n#endif\r\n}\r\n\r\n#if NUM_CUTPLANES > 0\r\nin highp vec3 vWorldPosition;\r\n#endif\r\n\r\n#ifdef MSDF_TEXTURE_FONT\r\nin highp vec2 vuv;\r\nin float isMSDFQuards;\r\nuniform sampler2D tRaster;\r\nfloat median(float r, float g, float b) {\r\n return max(min(r, g), min(max(r, g), b));\r\n}\r\n\r\n#endif\r\n\r\n#define LINE_CUTPLANE\r\n#include \r\n\r\nvoid main() {\r\n\r\n\r\n\r\n\r\n\r\n if (fsColor == vec4(0.0)) {\r\n discard;\r\n }\r\n\r\n\r\n#ifdef VIEWPORT_CLIPPING\r\n if(vPosition.x < viewportBounds.x || vPosition.x > viewportBounds.z || vPosition.y < viewportBounds.y || vPosition.y > viewportBounds.w) {\r\n discard;\r\n }\r\n#endif\r\n\r\n#ifdef MSDF_TEXTURE_FONT\r\n vec4 msdfColor = texture(tRaster, vuv);\r\n float dist = median(msdfColor.r, msdfColor.g, msdfColor.b);\r\n\r\n\r\n float delta = mix(0.25, 0.5, 1.0 - fwidth(dist));\r\n\r\n float sigDist = dist - delta;\r\n float msdfAlpha = clamp(sigDist/fwidth(sigDist) + delta, 0.0, 1.0);\r\n\r\n msdfAlpha = smoothstep(0., 1., msdfAlpha);\r\n outFragColor.a = mix(msdfAlpha, 1., 1.-isMSDFQuards);\r\n if (outFragColor.a < 0.0001) discard;\r\n\r\n#endif\r\n\r\n\r\n if (fsHalfWidth == 0.0) {\r\n#ifdef HAS_RASTER_QUADS\r\n if (fsMultipurpose.z != 0.0)\r\n fillTexQuad();\r\n else\r\n#endif\r\n fillTriangle();\r\n }\r\n else if (fsMultipurpose.y < 0.0) {\r\n#ifdef HAS_CIRCLES\r\n#ifdef HAS_ELLIPTICALS\r\n if (abs(fsMultipurpose.y) == fsMultipurpose.w)\r\n#endif\r\n fillCircularArc();\r\n#endif\r\n#ifdef HAS_ELLIPTICALS\r\n#ifdef HAS_CIRCLES\r\n else\r\n#endif\r\n fillEllipticalArc();\r\n#endif\r\n }\r\n else\r\n fillLineSegment();\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n float writeId = 1.0;\r\n \r\n outFragColor.a *= opacity;\r\n\r\n if (outFragColor.a == 0.0) {\r\n discard;\r\n }\r\n\r\n\r\n\r\n\r\n if (fsGhosting != 0.0 || \r\n ((viewportId != 0.0) && (abs(fsVpTC.x * 255.0 + fsVpTC.y) >= 0.5 && abs(fsVpTC.x * 255.0 + fsVpTC.y - viewportId) >= 0.5))) {\r\n\r\n writeId = 0.0;\r\n\r\n\r\n\r\n outFragColor.a *= ((swap == 1.0) ? 0.21 : 0.1);\r\n }\r\n\r\n#ifndef SELECTION_RENDERER\r\n\r\n if (grayscale != 0.0) {\r\n const vec3 rgb2grey = vec3(0.299, 0.587, 0.114);\r\n float gray = dot(outFragColor.rgb, rgb2grey);\r\n outFragColor.rgb = vec3(gray);\r\n }\r\n#endif\r\n\r\n#if NUM_CUTPLANES > 0\r\n if (checkCutPlanes(vWorldPosition)) return;\r\n#endif\r\n\r\n#ifdef MRT_NORMALS\r\n\r\n outNormal = vec4(0.0, 0.0, 0.0, 1.0);\r\n#endif\r\n\r\n#ifdef NO_ID_OUTPUT\r\n\r\n writeId = 0.0;\r\n#endif\r\n\r\n#include \r\n#include \r\n}\r\n"},49965:e=>{e.exports="\r\n\r\n#include \r\n#include \r\n\r\nin vec2 fields1;\r\nin vec4 fields2;\r\nin vec4 flags4b;\r\nin vec4 layerVp4b;\r\n\r\n#ifdef HAS_ELLIPTICALS\r\nin vec3 extraParams;\r\n#endif\r\n\r\n#ifdef USE_INSTANCING\r\nin vec4 instFlags4b;\r\n#endif\r\n\r\n#ifdef MSDF_TEXTURE_FONT\r\nout highp vec2 vuv;\r\nout float isMSDFQuards;\r\n#endif\r\n\r\n#ifdef IMAGE_UV_TEXTURE\r\nout highp vec2 vuv;\r\n#endif\r\n\r\n#ifdef VIEWPORT_CLIPPING\r\nout vec2 vPosition;\r\n#endif\r\n\r\nuniform mat4 mvpMatrix;\r\n\r\nuniform float pixelsPerUnit;\r\nuniform float aaRange;\r\nuniform float viewportId;\r\nuniform float swap;\r\n\r\n\r\n\r\n\r\n\r\n#ifdef HAS_LAYERS\r\nuniform sampler2D tLayerMask;\r\n#endif\r\n\r\n#ifdef SELECTION_RENDERER\r\nuniform sampler2D tSelectionTexture;\r\nuniform vec2 vSelTexSize;\r\n#endif\r\n\r\n#ifdef SELECTION_RENDERER\r\nuniform vec4 selectionColor;\r\n#endif\r\n\r\n#ifdef LOADING_ANIMATION\r\nuniform float meshAnimTime;\r\n#endif\r\n\r\n#if NUM_CUTPLANES > 0\r\nout vec3 vWorldPosition;\r\n#endif\r\n\r\nout vec4 dbId;\r\n\r\n#ifdef UNPACK_POSITIONS\r\nuniform sampler2D tIdColor;\r\nuniform vec2 vIdColorTexSize;\r\nuniform vec4 unpackXform;\r\nin vec2 uvIdColor;\r\nfloat unpackLineWeight(float w) {\r\n if (w > 0.5) {\r\n return - (w - 0.5) * 1024.0;\r\n } else {\r\n return w * max(unpackXform.x, unpackXform.y) * 2.0;\r\n }\r\n}\r\nvec4 getVertexColor() {\r\n float u = (uvIdColor.x + 0.5) / vIdColorTexSize.x;\r\n return texture(tIdColor, vec2(u, 0.5));\r\n}\r\nvec4 getDbId() {\r\n float u = (uvIdColor.y + 0.5) / vIdColorTexSize.x;\r\n vec4 normDbId = texture(tIdColor, vec2(u, 0.5));\r\n return normDbId * 255.0;\r\n}\r\n#else\r\nin vec4 color4b;\r\nin vec4 dbId4b;\r\nvec4 unpackXform;\r\nfloat unpackLineWeight(float w) {\r\n return w;\r\n}\r\nvec4 getVertexColor() {\r\n return color4b;\r\n}\r\nvec4 getDbId() {\r\n return dbId4b;\r\n}\r\n#endif\r\n\r\n\r\nvec2 centralVertex;\r\nvec2 offsetPosition;\r\n\r\nvec2 cos_sin(const float angle) { return vec2(cos(angle), sin(angle)); }\r\n\r\nvoid min_max(inout vec2 minPt, inout vec2 maxPt, const vec2 p) {\r\n minPt = min(minPt, p);\r\n maxPt = max(maxPt, p);\r\n}\r\n\r\n#if defined(USE_INSTANCING)\r\nfloat getVertexId() { return instFlags4b.x; }\r\n#else\r\nfloat getVertexId() { return flags4b.x; }\r\n#endif\r\n\r\nbool isStartVertex() { return (getVertexId() < VBB_SEG_END_RIGHT); }\r\nbool isLeftVertex() { float id = getVertexId(); return ((id == VBB_SEG_END_LEFT || id == VBB_SEG_START_LEFT)); }\r\n\r\nstruct SegmentData { float angle, distAlong, distTotal, lineWidthHalf, lineType; };\r\nvoid decodeSegmentData(out SegmentData seg) {\r\n seg.angle = fields2.x * TAU - PI;\r\n seg.distAlong = fields2.y * max(unpackXform.x, unpackXform.y);\r\n seg.distTotal = fields2.w;\r\n seg.lineWidthHalf = unpackLineWeight(fields2.z);\r\n seg.lineType = flags4b.z;\r\n}\r\n\r\nvoid strokeLineSegment() {\r\n SegmentData seg; decodeSegmentData(seg);\r\n\r\n float isStartCapVertex = isStartVertex() ? -1.0 : 1.0;\r\n float isLeftSide = isLeftVertex( ) ? 1.0 : -1.0;\r\n\r\n\r\n float angleTransverse = seg.angle + isLeftSide * HALF_PI;\r\n float lwAdjustment = fsHalfWidth + aaRange;\r\n vec2 transverseOffset = cos_sin(angleTransverse) * lwAdjustment;\r\n offsetPosition.xy += transverseOffset;\r\n\r\n\r\n\r\n\r\n float distanceFromStart = max(isStartCapVertex, 0.0) * seg.distAlong;\r\n vec2 along = distanceFromStart * cos_sin(seg.angle);\r\n offsetPosition.xy += along;\r\n centralVertex.xy += along;\r\n\r\n\r\n vec2 moveOffset = isStartCapVertex * isLeftSide * vec2(-transverseOffset.y, transverseOffset.x);\r\n offsetPosition.xy -= moveOffset;\r\n centralVertex.xy -= moveOffset;\r\n\r\n\r\n\r\n\r\n fsMultipurpose.x = (isStartCapVertex * lwAdjustment) + distanceFromStart;\r\n fsMultipurpose.y = seg.distAlong;\r\n fsMultipurpose.z = seg.distTotal;\r\n fsMultipurpose.w = seg.lineType;\r\n\r\n if (seg.lineWidthHalf < 0.0)\r\n fsHalfWidth = -fsHalfWidth;\r\n}\r\n\r\n\r\n#ifdef HAS_TRIANGLE_GEOMS\r\nstruct TriangleData { vec2 p0, p1, p2; };\r\nvoid decodeTriangleData(out TriangleData tri) {\r\n\r\n tri.p1 = vec2(fields2.x, fields2.y) * unpackXform.xy + unpackXform.zw;\r\n tri.p2 = fields2.zw * unpackXform.xy + unpackXform.zw;\r\n}\r\n\r\nvoid strokeOneTriangle() {\r\n TriangleData tri; decodeTriangleData(tri);\r\n\r\n\r\n\r\n\r\n\r\n\r\n fsHalfWidth = 0.0;\r\n fsMultipurpose.z = 0.0;\r\n\r\n\r\n\r\n\r\n\r\n float vertexId = getVertexId();\r\n if (vertexId == VBB_SEG_END_RIGHT)\r\n offsetPosition.xy = tri.p1;\r\n else if (vertexId == VBB_SEG_END_LEFT)\r\n offsetPosition.xy = tri.p2;\r\n}\r\n#endif\r\n\r\n\r\n\r\n\r\n#ifdef HAS_RASTER_QUADS\r\nstruct TexQuadData { float angle; vec2 size; };\r\nvoid decodeTexQuadData(out TexQuadData quad) {\r\n quad.angle = fields2.x * TAU;\r\n quad.size = fields2.yz * max(unpackXform.x, unpackXform.y);\r\n}\r\n\r\nvoid strokeTexQuad() {\r\n TexQuadData quad; decodeTexQuadData(quad);\r\n\r\n vec2 corner = vec2(isLeftVertex() ? -1.0 : 1.0, isStartVertex() ? -1.0 : 1.0);\r\n\r\n vec2 p = 0.5 * corner * quad.size;\r\n vec2 rot = cos_sin(quad.angle);\r\n vec2 offset = vec2(p.x * rot.x - p.y * rot.y, p.x * rot.y + p.y * rot.x);\r\n\r\n offsetPosition.xy += offset;\r\n\r\n fsMultipurpose.xy = max(vec2(0.0), corner);\r\n\r\n\r\n fsMultipurpose.z = 1.0;\r\n fsHalfWidth = 0.0;\r\n}\r\n#endif\r\n\r\n#if defined(HAS_CIRCLES) || defined(HAS_ELLIPTICALS)\r\nstruct ArcData { vec2 c; float start, end, major, minor, tilt; };\r\nvoid decodeArcData(out ArcData arc) {\r\n arc.c = fields1.xy * unpackXform.xy + unpackXform.zw;\r\n arc.start = fields2.x * TAU;\r\n arc.end = fields2.y * TAU;\r\n arc.major = fields2.w * max(unpackXform.x, unpackXform.y);\r\n#if defined(HAS_ELLIPTICALS)\r\n arc.minor = extraParams.x;\r\n arc.tilt = extraParams.y * TAU;\r\n#endif\r\n}\r\n\r\nvoid strokeArc(const ArcData arc) {\r\n\r\n\r\n float isStart = isStartVertex() ? -1.0 : 1.0;\r\n float isLeft = isLeftVertex() ? -1.0 : 1.0;\r\n\r\n\r\n\r\n\r\n vec2 minPt;\r\n vec2 maxPt;\r\n\r\n vec2 angles = vec2(arc.start, arc.end);\r\n vec2 endsX = vec2(arc.c.x) + arc.major * cos(angles);\r\n vec2 endsY = vec2(arc.c.y) + arc.minor * sin(angles);\r\n minPt = maxPt = vec2(endsX.x, endsY.x);\r\n min_max(minPt, maxPt, vec2(endsX.y, endsY.y));\r\n\r\n if (arc.end > arc.start) {\r\n if (arc.start < PI_0_5 && arc.end > PI_0_5) {\r\n min_max(minPt, maxPt, vec2(arc.c.x, arc.c.y + arc.minor));\r\n }\r\n if (arc.start < PI && arc.end > PI) {\r\n min_max(minPt, maxPt, vec2(arc.c.x - arc.major, arc.c.y));\r\n }\r\n if (arc.start < PI_1_5 && arc.end > PI_1_5) {\r\n min_max(minPt, maxPt, vec2(arc.c.x, arc.c.y - arc.minor));\r\n }\r\n } else {\r\n\r\n min_max(minPt, maxPt, vec2(arc.c.x + arc.major, arc.c.y));\r\n\r\n\r\n\r\n if (arc.start < PI_0_5 || arc.end > PI_0_5) {\r\n min_max(minPt, maxPt, vec2(arc.c.x, arc.c.y + arc.minor));\r\n }\r\n if (arc.start < PI || arc.end > PI) {\r\n min_max(minPt, maxPt, vec2(arc.c.x - arc.major, arc.c.y));\r\n }\r\n if (arc.start < PI_1_5 || arc.end > PI_1_5) {\r\n min_max(minPt, maxPt, vec2(arc.c.x, arc.c.y - arc.minor));\r\n }\r\n }\r\n\r\n minPt -= fsHalfWidth + aaRange;\r\n maxPt += fsHalfWidth + aaRange;\r\n\r\n offsetPosition.x = (isStart < 0.0) ? minPt.x : maxPt.x;\r\n offsetPosition.y = (isLeft < 0.0) ? minPt.y : maxPt.y;\r\n\r\n\r\n\r\n\r\n\r\n fsMultipurpose.x = arc.start;\r\n fsMultipurpose.y = -arc.major;\r\n fsMultipurpose.z = arc.end;\r\n fsMultipurpose.w = arc.minor;\r\n}\r\n#endif\r\n\r\n#if defined(HAS_CIRCLES)\r\n\r\nvoid strokeCircularArc() {\r\n ArcData arc; decodeArcData(arc);\r\n\r\n float r = arc.major;\r\n if (r * pixelsPerUnit < 0.125)\r\n r = 0.25 * aaRange;\r\n arc.major = arc.minor = r;\r\n\r\n strokeArc(arc);\r\n}\r\n\r\n#endif\r\n\r\n#if defined(HAS_ELLIPTICALS)\r\nvoid strokeEllipticalArc() {\r\n ArcData arc; decodeArcData(arc);\r\n strokeArc(arc);\r\n}\r\n#endif\r\n\r\nstruct CommonAttribs { vec2 pos; vec4 color; vec2 layerTC, vpTC; float lineWidthHalf, geomType, ghosting; };\r\nvoid decodeCommonAttribs(out CommonAttribs attribs) {\r\n attribs.pos = fields1.xy * unpackXform.xy + unpackXform.zw;\r\n attribs.color = getVertexColor();\r\n attribs.geomType = flags4b.y;\r\n attribs.layerTC = layerVp4b.xy / 255.0;\r\n attribs.vpTC = layerVp4b.zw / 255.0;\r\n attribs.lineWidthHalf = unpackLineWeight(fields2.z);\r\n attribs.ghosting = flags4b.w;\r\n}\r\n\r\nvoid strokeIndexedTriangle() {\r\n\r\n fsHalfWidth = 0.0;\r\n fsMultipurpose.z = 0.0;\r\n}\r\n\r\n#ifdef SELECTION_RENDERER\r\nbool isSelected(const CommonAttribs attribs) {\r\n\r\n\r\n vec3 oid = getDbId().rgb;\r\n\r\n\r\n float id01 = oid.r + oid.g * 256.0;\r\n float t = (id01 + 0.5) * (1.0 / 4096.0);\r\n float flrt = floor(t);\r\n float texU = t - flrt;\r\n\r\n\r\n float id23 = oid.b * (65536.0 / 4096.0) + flrt;\r\n t = (id23 + 0.5) / vSelTexSize.y;\r\n float texV = fract(t);\r\n\r\n vec4 selBit = texture(tSelectionTexture, vec2(texU, texV));\r\n return selBit.r == 1.0;\r\n}\r\n#endif\r\n\r\nbool isLayerOff(const CommonAttribs attribs) {\r\n#ifdef HAS_LAYERS\r\n vec4 layerBit = texture(tLayerMask, attribs.layerTC);\r\n return (layerBit.r == 0.0);\r\n#else\r\n return false;\r\n#endif\r\n}\r\n\r\nvec4 getColor(const CommonAttribs attribs) {\r\n\r\n if (isLayerOff(attribs)) { return vec4(0.0); }\r\n\r\n#ifdef SELECTION_RENDERER\r\n if (isSelected(attribs)) { return selectionColor; }\r\n return vec4(0.0);\r\n#else\r\n return attribs.color;\r\n#endif\r\n}\r\n\r\n#ifdef GAMMA_INPUT\r\nvec4 inputToLinear(vec4 c) {\r\n return vec4(vec3(c*c), c.a);\r\n}\r\n#endif\r\n\r\nvoid main() {\r\n#ifndef UNPACK_POSITIONS\r\n unpackXform = vec4(1.0, 1.0, 0.0, 0.0);\r\n#endif\r\n\r\n CommonAttribs attribs; decodeCommonAttribs(attribs);\r\n#ifdef MSDF_TEXTURE_FONT\r\n vuv = fields2.xy;\r\n isMSDFQuards = 1.0 - abs(sign(attribs.geomType - VBB_GT_MSDF_TRIANGLE_INDEXED));\r\n#endif\r\n\r\n#ifdef IMAGE_UV_TEXTURE\r\n vuv = fields2.xy;\r\n#endif\r\n\r\n fsColor = getColor(attribs);\r\n\r\n #ifdef GAMMA_INPUT\r\n fsColor = inputToLinear(fsColor);\r\n #endif\r\n\r\n\r\n if (swap != 0.0 ) {\r\n\r\n if ( fsColor.r == 0.0 && fsColor.g == 0.0 && fsColor.b == 0.0 )\r\n fsColor.rgb = vec3(1.0,1.0,1.0);\r\n\r\n else if ( fsColor.r == 1.0 && fsColor.g == 1.0 && fsColor.b == 1.0 )\r\n fsColor.rgb = vec3(0.0,0.0,0.0);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n centralVertex = offsetPosition = attribs.pos;\r\n\r\n float lineWeight = attribs.lineWidthHalf;\r\n if (lineWeight > 0.0) {\r\n\r\n\r\n if(lineWeight < 0.5 / pixelsPerUnit) {\r\n lineWeight = 0.5 / pixelsPerUnit;\r\n }\r\n }\r\n else {\r\n\r\n\r\n lineWeight = abs(lineWeight) / pixelsPerUnit;\r\n }\r\n\r\n fsHalfWidth = lineWeight;\r\n\r\n dbId = getDbId() / 255.0;\r\n\r\n fsVpTC = attribs.vpTC;\r\n fsGhosting = attribs.ghosting;\r\n\r\n if (attribs.geomType == VBB_GT_LINE_SEGMENT || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_START || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_END || attribs.geomType == VBB_GT_LINE_SEGMENT_MITER) strokeLineSegment();\r\n#ifdef HAS_CIRCLES\r\n else if (attribs.geomType == VBB_GT_ARC_CIRCULAR) strokeCircularArc();\r\n#endif\r\n#ifdef HAS_ELLIPTICALS\r\n else if (attribs.geomType == VBB_GT_ARC_ELLIPTICAL) strokeEllipticalArc();\r\n#endif\r\n#ifdef HAS_RASTER_QUADS\r\n else if (attribs.geomType == VBB_GT_TEX_QUAD) strokeTexQuad();\r\n#endif\r\n#ifdef HAS_TRIANGLE_GEOMS\r\n else if (attribs.geomType == VBB_GT_ONE_TRIANGLE) strokeOneTriangle();\r\n#endif\r\n else if (attribs.geomType == VBB_GT_TRIANGLE_INDEXED) strokeIndexedTriangle();\r\n\r\n\r\n\r\n fsOffsetDirection = offsetPosition - centralVertex;\r\n\r\n\r\n gl_Position = mvpMatrix * modelMatrix * vec4( offsetPosition.xy, 0.0, 1.0 );\r\n#include \r\n\r\n#ifdef LOADING_ANIMATION\r\n\r\n if (dbId.rgb == vec3(1.0)) {\r\n loadingProgress = 1.0;\r\n } else {\r\n loadingProgress = smoothstep(0.0, 1.0, meshAnimTime);\r\n }\r\n#endif\r\n\r\n#ifdef IMAGE_UV_TEXTURE\r\n fsHalfWidth = 0.0;\r\n#endif\r\n\r\n\r\n#if NUM_CUTPLANES > 0\r\n vec4 worldPosition = modelMatrix * vec4( offsetPosition.xy, 0.0, 1.0 );\r\n vWorldPosition = worldPosition.xyz;\r\n#endif\r\n\r\n#ifdef VIEWPORT_CLIPPING\r\n vPosition = offsetPosition.xy;\r\n#endif\r\n}\r\n"},65144:e=>{e.exports="\n#define LINE_SS\n#include \n#include \n#include \nuniform highp float aaRange;\nuniform float opacity;\nuniform highp float viewportId;\nuniform highp float swap;\nuniform highp float grayscale;\n#ifdef HAS_LINESTYLES\nuniform sampler2D tLineStyle;\nuniform vec2 vLineStyleTexSize;\nin highp float vPixelsPerUnit;\n#endif\n#ifdef VIEWPORT_CLIPPING\nuniform highp vec4 viewportBounds;\nin highp vec2 vPosition;\nuniform mat4 mvpMatrix;\nuniform mat4 modelMatrix;\n#endif\nfloat curveGaussian(float r, float width) {\n float amt = clamp(abs(r / (width * 1.0)), 0.0, 1.0);\n amt = max(amt - 0.0, 0.0);\n float exponent = amt * 2.0;\n return clamp(exp(-exponent*exponent), 0.0, 1.0);\n}\n#ifdef HAS_LINESTYLES\nfloat getLinePatternPixel(int i, int j) {\n return texture(tLineStyle, (vec2(i, j) + 0.5) / vLineStyleTexSize).x * 255.0;\n}\nfloat getPatternLength(int whichPattern) {\n float p1 = getLinePatternPixel(0, whichPattern);\n float p2 = getLinePatternPixel(1, whichPattern);\n return (p2 * 256.0 + p1);\n}\n#endif\nvoid fillLineSegment() {\n float radius = abs(fsHalfWidth);\n float parametricDistance = fsMultipurpose.x;\n float segmentLength = fsMultipurpose.y;\n float totalDistance = fsMultipurpose.z;\n#ifdef LOADING_ANIMATION\n float distFromStart = parametricDistance / segmentLength;\n if (loadingProgress < 1.0 && distFromStart > loadingProgress) {\n discard;\n }\n#endif\n#ifdef HAS_LINESTYLES\n int whichPattern = int(fsMultipurpose.w);\n float roundedEnd = fsMultipurpose.w;\n if (whichPattern > 0) {\n const float TEX_TO_UNIT = 1.0 / 96.0;\n float patternScale;\n if (fsHalfWidth < 0.0) {\n patternScale = LTSCALE;\n } else {\n patternScale = LTSCALE * TEX_TO_UNIT * vPixelsPerUnit;\n }\n float patLen = patternScale * getPatternLength(whichPattern);\n float phase = mod((totalDistance + parametricDistance), patLen);\n bool onPixel = true;\n float radiusPixels = radius + aaRange;\n for (int i=2; i aaRange) {\n discard;\n }\n outFragColor = fsColor;\n if (range > -aaRange)\n outFragColor.a *= curveGaussian(range+aaRange, aaRange * 2.0);\n}\n#ifdef LOADING_ANIMATION\n void fillTriangle() { outFragColor = vec4(fsColor.rgb, fsColor.a * loadingProgress); }\n#else\n void fillTriangle() { outFragColor = fsColor; }\n#endif\n#if NUM_CUTPLANES > 0\nin highp vec3 vWorldPosition;\n#endif\n#define LINE_CUTPLANE\n#include \nfloat getSide(vec2 a, vec2 b, vec2 c) {\n return sign((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x));\n}\nvoid main() {\n if (fsColor == vec4(0.0)) {\n discard;\n }\n#ifdef VIEWPORT_CLIPPING\n vec2 bottomLeft = (mvpMatrix * modelMatrix * vec4(viewportBounds.xy, 0., 1.)).xy;\n vec2 bottomRight = (mvpMatrix * modelMatrix * vec4(viewportBounds.zy, 0., 1.)).xy;\n vec2 topRight = (mvpMatrix * modelMatrix * vec4(viewportBounds.zw, 0., 1.)).xy;\n vec2 topLeft = (mvpMatrix * modelMatrix * vec4(viewportBounds.xw, 0., 1.)).xy;\n float side = getSide(topLeft, topRight, bottomLeft);\n if (side * getSide(topRight, bottomRight, vPosition) < 0.0 ||\n side * getSide(bottomRight, bottomLeft, vPosition) < 0.0 ||\n side * getSide(bottomLeft, topLeft, vPosition) < 0.0 ||\n side * getSide(topLeft, topRight, vPosition) < 0.0) {\n discard;\n }\n#endif\n if (fsHalfWidth == 0.0) {\n fillTriangle();\n }\n else\n fillLineSegment();\n float writeId = 1.0;\n outFragColor.a *= opacity;\n if (outFragColor.a == 0.0) {\n discard;\n }\n if (fsGhosting != 0.0 || \n ((viewportId != 0.0) && (abs(fsVpTC.x * 255.0 + fsVpTC.y) >= 0.5 && abs(fsVpTC.x * 255.0 + fsVpTC.y - viewportId) >= 0.5))) {\n writeId = 0.0;\n outFragColor.a *= ((swap == 1.0) ? 0.21 : 0.1);\n }\n#ifndef SELECTION_RENDERER\n if (grayscale != 0.0) {\n const vec3 rgb2grey = vec3(0.299, 0.587, 0.114);\n float gray = dot(outFragColor.rgb, rgb2grey);\n outFragColor.rgb = vec3(gray);\n }\n#endif\n#if NUM_CUTPLANES > 0\n if (checkCutPlanes(vWorldPosition)) return;\n#endif\n#ifdef MRT_NORMALS\n outNormal = vec4(0.0, 0.0, 0.0, 1.0);\n#endif\n#ifdef NO_ID_OUTPUT\n writeId = 0.0;\n#endif\n#include \n#include \n}\n"},97431:e=>{e.exports="\n#include \n#include \nin vec2 fields1;\nin vec4 fields2;\nin vec4 flags4b;\nin vec4 layerVp4b;\n#ifdef HAS_MITER_LINES\nin vec3 extraParams;\nuniform float miterLimit;\nuniform float miterScaleFactor;\nuniform float miterCP;\n#endif\n#ifdef USE_INSTANCING\nin vec4 instFlags4b;\n#endif\n#ifdef VIEWPORT_CLIPPING\nout vec2 vPosition;\n#endif\nuniform mat4 mvpMatrix;\nuniform float pixelsPerUnit;\nuniform float aaRange;\nuniform vec2 size;\nuniform float viewportId;\nuniform float swap;\nuniform vec3 cameraPos;\nuniform float tanHalfFov;\n#ifdef HAS_LINESTYLES\nout float vPixelsPerUnit;\n#endif\n#ifdef HAS_LAYERS\nuniform sampler2D tLayerMask;\n#endif\n#ifdef SELECTION_RENDERER\nuniform sampler2D tSelectionTexture;\nuniform vec2 vSelTexSize;\n#endif\n#ifdef SELECTION_RENDERER\nuniform vec4 selectionColor;\n#endif\n#ifdef LOADING_ANIMATION\nuniform float meshAnimTime;\n#endif\n#if NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\nout vec4 dbId;\n#ifdef UNPACK_POSITIONS\nuniform sampler2D tIdColor;\nuniform vec2 vIdColorTexSize;\nuniform vec4 unpackXform;\nin vec2 uvIdColor;\nfloat unpackLineWeight(float w) {\n if (w > 0.5) {\n return - (w - 0.5) * 1024.0;\n } else {\n return w * max(unpackXform.x, unpackXform.y) * 2.0;\n }\n}\nvec4 getVertexColor() {\n float u = (uvIdColor.x + 0.5) / vIdColorTexSize.x;\n return texture(tIdColor, vec2(u, 0.5));\n}\nvec4 getDbId() {\n float u = (uvIdColor.y + 0.5) / vIdColorTexSize.x;\n vec4 normDbId = texture(tIdColor, vec2(u, 0.5));\n return normDbId * 255.0;\n}\n#else\nin vec4 color4b;\nin vec4 dbId4b;\nvec4 unpackXform;\nfloat unpackLineWeight(float w) {\n return w;\n}\nvec4 getVertexColor() {\n return color4b;\n}\nvec4 getDbId() {\n return dbId4b;\n}\n#endif\nvec2 centralVertex;\nvec2 offsetPosition;\nvec2 offsetPosDepth;\nvec2 cos_sin(const float angle) { return vec2(cos(angle), sin(angle)); }\nvoid min_max(inout vec2 minPt, inout vec2 maxPt, const vec2 p) {\n minPt = min(minPt, p);\n maxPt = max(maxPt, p);\n}\n#if defined(USE_INSTANCING)\nfloat getVertexId() { return instFlags4b.x; }\n#else\nfloat getVertexId() { return flags4b.x; }\n#endif\nbool isStartVertex() { return (getVertexId() < VBB_SEG_END_RIGHT); }\nbool isLeftVertex() { float id = getVertexId(); return ((id == VBB_SEG_END_LEFT || id == VBB_SEG_START_LEFT)); }\nstruct SegmentData { float angle, distAlong, distTotal, lineWidthHalf, lineType; };\nvoid decodeSegmentData(out SegmentData seg) {\n seg.angle = fields2.x * TAU - PI;\n seg.distAlong = fields2.y * max(unpackXform.x, unpackXform.y);\n seg.distTotal = fields2.w;\n seg.lineWidthHalf = unpackLineWeight(fields2.z);\n seg.lineType = flags4b.z;\n}\nvoid strokeLineSegment(float geomType) {\n SegmentData seg; decodeSegmentData(seg);\n float isStartCapVertex = isStartVertex() ? -1.0 : 1.0;\n float isLeftSide = isLeftVertex( ) ? 1.0 : -1.0;\n vec4 startPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy, 0.0, 1.0));\n float distanceAlong = seg.distAlong;\n vec2 along = distanceAlong * cos_sin(seg.angle);\n vec4 endPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy + along, 0.0, 1.0));\n vec2 screenStart = startPosition.xy * 0.5 * size / startPosition.w;\n vec2 screenEnd = endPosition.xy * 0.5 * size / endPosition.w;\n float roundedEnd = 0.0;\n if (isStartCapVertex < 0.0) {\n offsetPosition = centralVertex = screenStart;\n offsetPosDepth = startPosition.zw;\n roundedEnd = (geomType == VBB_GT_LINE_SEGMENT || geomType == VBB_GT_LINE_SEGMENT_CAPPED_END) ? 0.5 : 0.0;\n } else {\n offsetPosition = centralVertex = screenEnd;\n offsetPosDepth = endPosition.zw;\n roundedEnd = (geomType == VBB_GT_LINE_SEGMENT || geomType == VBB_GT_LINE_SEGMENT_CAPPED_START) ? 0.5 : 0.0;\n }\n#ifdef HAS_LINESTYLES\n roundedEnd += seg.lineType;\n#endif\n vec2 screenDelta = screenEnd - screenStart;\n float screenAngle = (distanceAlong == 0.0) ? 0.0 : atan(screenDelta.y, screenDelta.x);\n float angleTransverse = screenAngle - isLeftSide * HALF_PI;\n float lwAdjustment = fsHalfWidth + aaRange;\n vec2 transverseDir = cos_sin(angleTransverse);\n offsetPosition += transverseDir * lwAdjustment;\n fsOffsetDirection = offsetPosition - centralVertex;\n float distanceFromStart = max(0.0, isStartCapVertex) * length(screenDelta);\n float segmentExtension = (roundedEnd > 0.0) ? lwAdjustment : aaRange;\n vec2 moveOffset = isStartCapVertex * isLeftSide * vec2(-transverseDir.y, transverseDir.x) * segmentExtension;\n offsetPosition += moveOffset;\n fsMultipurpose.x = (isStartCapVertex * segmentExtension) + distanceFromStart;\n fsMultipurpose.y = length(screenDelta);\n fsMultipurpose.z = seg.distTotal;\n fsMultipurpose.w = roundedEnd;\n if (seg.lineWidthHalf < 0.0)\n fsHalfWidth = -fsHalfWidth;\n gl_Position = vec4(2.0 * offsetPosition / size * offsetPosDepth.y, offsetPosDepth.xy);\n#include \n}\n#ifdef HAS_MITER_LINES\nstruct MiterSegmentData { float angle, distAlong, distAlongPN, anglePrev, angleNext, lineWidthHalf, lineType; };\nvoid decodeMiterSegment(out MiterSegmentData seg) {\n seg.angle = fields2.x * TAU - PI;\n seg.distAlong = fields2.y * max(unpackXform.x, unpackXform.y);\n seg.anglePrev = fields2.w * TAU - PI;\n seg.lineWidthHalf = unpackLineWeight(fields2.z);\n seg.lineType = flags4b.z;\n seg.angleNext = extraParams.x * TAU - PI;\n seg.distAlongPN = extraParams.y * max(unpackXform.x, unpackXform.y);\n}\nvoid strokeMiterLineSegment() {\n MiterSegmentData seg; decodeMiterSegment(seg);\n float isStartCapVertex = isStartVertex() ? -1.0 : 1.0;\n float isLeftSide = isLeftVertex( ) ? 1.0 : -1.0;\n float next = floor(seg.distAlongPN / miterCP);\n float prev = seg.distAlongPN - (next * miterCP);\n float distanceAlongNext = floor(next) / miterScaleFactor;\n float distanceAlongPrev = floor(prev) / miterScaleFactor;\n float distanceAlong = seg.distAlong;\n vec2 along = cos_sin(seg.anglePrev) * distanceAlongPrev;\n vec2 along2 = cos_sin(seg.angle) * distanceAlong;\n vec2 along3 = along2 + cos_sin(seg.angleNext) * distanceAlongNext;\n vec4 prevPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy - along , 0.0, 1.0));\n vec4 startPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy , 0.0, 1.0));\n vec4 endPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy + along2, 0.0, 1.0));\n vec4 nextPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy + along3, 0.0, 1.0));\n vec2 screenPrev = prevPosition.xy * 0.5 * size / prevPosition.w;\n vec2 screenStart = startPosition.xy * 0.5 * size / startPosition.w;\n vec2 screenEnd = endPosition.xy * 0.5 * size / endPosition.w;\n vec2 screenNext = nextPosition.xy * 0.5 * size / nextPosition.w;\n if (isStartCapVertex < 0.0) {\n offsetPosition = centralVertex = screenStart;\n offsetPosDepth = startPosition.zw;\n } else {\n offsetPosition = centralVertex = screenEnd;\n offsetPosDepth = endPosition.zw;\n }\n vec2 screenDelta = screenEnd - screenStart;\n vec2 AB = normalize(screenStart.xy - screenPrev.xy);\n vec2 BC = normalize(screenDelta);\n vec2 CD = normalize(screenNext.xy - screenEnd.xy);\n vec2 a = screenPrev;\n vec2 b = screenStart;\n vec2 c = screenEnd;\n vec2 d = screenNext;\n vec2 p = (isStartCapVertex < 0.0) ? a : d;\n vec2 a2 = (isStartCapVertex < 0.0) ? a : c;\n vec2 b2 = (isStartCapVertex < 0.0) ? b : d;\n vec2 p2 = (isStartCapVertex < 0.0) ? c : b;\n vec2 PP = (isStartCapVertex < 0.0) ? AB : CD;\n vec2 normalBC = vec2(-BC.y, BC.x);\n vec2 normalPP = vec2(-PP.y, PP.x);\n float pIsLeftOfBC = ((c.x - b.x)*(p.y - b.y) - (c.y - b.y)*(p.x - b.x)) > 0.0 ? 1.0 : -1.0;\n vec2 bN = b + normalBC * fsHalfWidth * pIsLeftOfBC;\n vec2 cN = c + normalBC * fsHalfWidth * pIsLeftOfBC;\n vec2 pN = p + normalPP * fsHalfWidth * pIsLeftOfBC;\n float isPIntersecting = ((cN.x - bN.x)*(pN.y - bN.y) - (cN.y - bN.y)*(pN.x - bN.x)) * pIsLeftOfBC;\n float p2IsLeftOfPP = ((b2.x - a2.x)*(p2.y - a2.y) - (b2.y - a2.y)*(p2.x - a2.x)) > 0.0 ? 1.0 : -1.0;\n vec2 a2N = a2 + normalPP * fsHalfWidth * p2IsLeftOfPP;\n vec2 b2N = b2 + normalPP * fsHalfWidth * p2IsLeftOfPP;\n vec2 p2N = p2 + normalBC * fsHalfWidth * p2IsLeftOfPP;\n float isP2Intersecting = ((b2N.x - a2N.x)*(p2N.y - a2N.y) - (b2N.y - a2N.y)*(p2N.x - a2N.x)) * p2IsLeftOfPP;\n float tangentLength = (isStartCapVertex < 0.0) ? length(AB + BC) : length(BC + CD);\n vec2 tangent = (isStartCapVertex < 0.0) ? normalize(AB + BC) : normalize(BC + CD);\n vec2 miter = vec2(-tangent.y, tangent.x);\n vec2 normal = (isStartCapVertex < 0.0) ? vec2(-AB.y, AB.x) : vec2(-BC.y, BC.x);\n float miterLength = abs(1.0 / dot(miter, normal));\n vec2 moveOffset;\n float lwAdjustment = fsHalfWidth + aaRange;\n if (miterLength > miterLimit || min(isPIntersecting, isP2Intersecting) < 0.0) {\n moveOffset = isLeftSide * lwAdjustment * normalBC;\n } else {\n moveOffset = isLeftSide * miter * lwAdjustment * miterLength;\n }\n offsetPosition += moveOffset;\n float distanceFromStart = max(0.0, isStartCapVertex) * (length(screenDelta) + dot(moveOffset, BC));\n fsMultipurpose.x = distanceFromStart;\n fsMultipurpose.y = length(screenDelta) + dot(moveOffset, BC);\n fsMultipurpose.z = 0.0;\n#ifdef HAS_LINESTYLES\n fsMultipurpose.w = seg.lineType + 0.5;\n#else\n fsMultipurpose.w = 0.5;\n#endif\n if (seg.lineWidthHalf < 0.0)\n fsHalfWidth = -fsHalfWidth;\n fsOffsetDirection = offsetPosition - BC * dot(moveOffset, BC) - centralVertex;\n gl_Position = vec4(2.0 * offsetPosition / size * offsetPosDepth.y, offsetPosDepth.xy);\n#include \n}\n#endif\nstruct CommonAttribs { vec2 pos; vec4 color; vec2 layerTC, vpTC; float lineWidthHalf, geomType, ghosting; };\nvoid decodeCommonAttribs(out CommonAttribs attribs) {\n attribs.pos = fields1.xy * unpackXform.xy + unpackXform.zw;\n attribs.color = getVertexColor();\n attribs.geomType = flags4b.y;\n attribs.layerTC = layerVp4b.xy / 255.0;\n attribs.vpTC = layerVp4b.zw / 255.0;\n attribs.lineWidthHalf = unpackLineWeight(fields2.z);\n attribs.ghosting = flags4b.w;\n}\nvoid strokeIndexedTriangle() {\n fsHalfWidth = 0.0;\n fsMultipurpose.z = 0.0;\n gl_Position = (mvpMatrix * modelMatrix * vec4(centralVertex.xy, 0.0, 1.0));\n#include \n}\n#ifdef SELECTION_RENDERER\nbool isSelected(const CommonAttribs attribs) {\n vec3 oid = getDbId().rgb;\n float id01 = oid.r + oid.g * 256.0;\n float t = (id01 + 0.5) * (1.0 / 4096.0);\n float flrt = floor(t);\n float texU = t - flrt;\n float id23 = oid.b * (65536.0 / 4096.0) + flrt;\n t = (id23 + 0.5) / vSelTexSize.y;\n float texV = fract(t);\n vec4 selBit = texture(tSelectionTexture, vec2(texU, texV));\n return selBit.r == 1.0;\n}\n#endif\nbool isLayerOff(const CommonAttribs attribs) {\n#ifdef HAS_LAYERS\n vec4 layerBit = texture(tLayerMask, attribs.layerTC);\n return (layerBit.r == 0.0);\n#else\n return false;\n#endif\n}\nvec4 getColor(const CommonAttribs attribs) {\n if (isLayerOff(attribs)) { return vec4(0.0); }\n#ifdef SELECTION_RENDERER\n if (isSelected(attribs)) { return selectionColor; }\n return vec4(0.0);\n#else\n return attribs.color;\n#endif\n}\n#ifdef GAMMA_INPUT\nvec4 inputToLinear(vec4 c) {\n return vec4(vec3(c*c), c.a);\n}\n#endif\nvoid main() {\n#ifndef UNPACK_POSITIONS\n unpackXform = vec4(1.0, 1.0, 0.0, 0.0);\n#endif\n CommonAttribs attribs; decodeCommonAttribs(attribs);\n fsColor = getColor(attribs);\n #ifdef GAMMA_INPUT\n fsColor = inputToLinear(fsColor);\n #endif\n if (swap != 0.0 ) {\n if ( fsColor.r == 0.0 && fsColor.g == 0.0 && fsColor.b == 0.0 )\n fsColor.rgb = vec3(1.0,1.0,1.0);\n else if ( fsColor.r == 1.0 && fsColor.g == 1.0 && fsColor.b == 1.0 )\n fsColor.rgb = vec3(0.0,0.0,0.0);\n }\n centralVertex = offsetPosition = attribs.pos;\n float lineWeight = attribs.lineWidthHalf;\n float ppu = pixelsPerUnit;\n if (tanHalfFov > 0.0) {\n vec4 worldPos = modelMatrix * vec4(offsetPosition.xy, 0.0, 1.0);\n float distanceToCamera = length(cameraPos - worldPos.xyz);\n ppu = size.y / (2.0 * distanceToCamera * tanHalfFov);\n }\n#ifdef HAS_LINESTYLES\n vPixelsPerUnit = ppu;\n#endif\n if (lineWeight > 0.0) {\n lineWeight = max(0.5, lineWeight * ppu);\n }\n else {\n lineWeight = max(0.5, abs(lineWeight));\n }\n fsHalfWidth = lineWeight;\n dbId = dbId4b / 255.0;\n fsVpTC = attribs.vpTC;\n fsGhosting = attribs.ghosting;\n#ifdef LOADING_ANIMATION\n if (dbId.rgb == vec3(1.0)) {\n loadingProgress = 1.0;\n } else {\n loadingProgress = smoothstep(0.0, 1.0, meshAnimTime);\n }\n#endif\n if (attribs.geomType == VBB_GT_LINE_SEGMENT || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_START || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_END) strokeLineSegment(attribs.geomType);\n#ifdef HAS_MITER_LINES\n else if (attribs.geomType == VBB_GT_LINE_SEGMENT_MITER) strokeMiterLineSegment();\n#endif\n else strokeIndexedTriangle();\n#if NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( offsetPosition.xy, 0.0, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n#ifdef VIEWPORT_CLIPPING\n vPosition = gl_Position.xy;\n#endif\n}\n"},29126:e=>{e.exports="in highp vec3 vNormal;\nin highp float depth;\n#if NUM_CUTPLANES > 0\nin vec3 vWorldPosition;\n#endif\n#include \n#include \nvoid main() {\n#if NUM_CUTPLANES > 0\n checkCutPlanes(vWorldPosition);\n#endif\n vec3 n = vNormal;\n n = n * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n n = normalize( n );\n outFragColor = vec4(n.x, n.y, depth, 1.0);\n#include \n}\n"},47697:e=>{e.exports="out vec3 vNormal;\nout float depth;\n#if NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \nvoid main() {\n#ifdef UNPACK_NORMALS\n vec3 objectNormal = decodeNormal(normal);\n#else\n vec3 objectNormal = normal;\n#endif\n#ifdef FLIP_SIDED\n objectNormal = -objectNormal;\n#endif\n objectNormal = getInstanceNormal(objectNormal);\n vec3 instPos = getInstancePos(position);\n vec3 transformedNormal = normalMatrix * objectNormal;\n vNormal = normalize( transformedNormal );\n#if NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( instPos, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n vec4 mvPosition = modelViewMatrix * vec4( instPos, 1.0 );\n depth = mvPosition.z;\n vec4 p_Position = projectionMatrix * mvPosition;\n gl_Position = p_Position;\n#include \n}\n"},73560:e=>{e.exports="uniform vec3 diffuse;\r\nuniform float opacity;\r\n\r\nuniform vec3 emissive;\r\nuniform vec3 specular;\r\nuniform float shininess;\r\n\r\n#include \r\n\r\n#include \r\n\r\n#ifdef USE_COLOR\r\nin vec3 vColor;\r\n#endif\r\n\r\n#ifdef GAMMA_INPUT\r\nvec3 InputToLinear(vec3 c) {\r\n return c * c;\r\n}\r\nfloat InputToLinear(float c) {\r\n return c * c;\r\n}\r\n#else\r\nvec3 InputToLinear(vec3 c) {\r\n return c;\r\n}\r\nfloat InputToLinear(float c) {\r\n return c;\r\n}\r\n#endif\r\n\r\n#if defined( USE_MAP ) || defined( USE_SPECULARMAP )\r\nin vec2 vUv;\r\n#endif\r\n\r\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\nin vec2 vUvBump;\r\n#endif\r\n\r\n#if defined( USE_ALPHAMAP )\r\nin vec2 vUvAlpha;\r\n#endif\r\n\r\n#ifdef USE_MAP\r\nuniform sampler2D map;\r\n#endif\r\n\r\n#if TONEMAP_OUTPUT > 0\r\nuniform float exposureBias;\r\n#include \r\n#endif\r\n\r\n#if defined(IRR_RGBM) || defined(ENV_RGBM) || defined(ENV_GAMMA) || defined(IRR_GAMMA)\r\nuniform float envMapExposure;\r\n#endif\r\n\r\n#ifdef USE_FOG\r\nuniform vec3 fogColor;\r\nuniform float fogNear;\r\nuniform float fogFar;\r\n#endif\r\n#include \r\n#include \r\n#include \r\n\r\n#ifdef USE_ENVMAP\r\n\r\nuniform float reflMipIndex;\r\n\r\nuniform float reflectivity;\r\nuniform samplerCube envMap;\r\n\r\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\n\r\nuniform float refractionRatio;\r\n\r\n#endif\r\n\r\nvec3 sampleReflection(vec3 dir, float mipIndex) {\r\n\r\n vec3 adjDir = adjustLookupVector(dir);\r\n\r\n#ifdef ENV_GAMMA\r\n\r\n vec4 envTexColor = textureLod( envMap, adjDir, mipIndex );\r\n return GammaDecode(envTexColor, envMapExposure);\r\n\r\n#elif defined(ENV_RGBM)\r\n\r\n vec4 envTexColor = textureLod( envMap, adjDir, mipIndex );\r\n return RGBMDecode(envTexColor, envMapExposure);\r\n\r\n#else\r\n\r\n\r\n\r\n vec4 envTexColor = texture( envMap, adjDir );\r\n vec3 cubeColor = envTexColor.xyz;\r\n\r\n#ifdef GAMMA_INPUT\r\n cubeColor *= cubeColor;\r\n#endif\r\n\r\n return cubeColor;\r\n\r\n#endif\r\n\r\n}\r\n\r\n#endif\r\n\r\n\r\nuniform vec3 ambientLightColor;\r\n\r\n#if MAX_DIR_LIGHTS > 0\r\n\r\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\r\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\r\n\r\n#endif\r\n\r\n#if MAX_POINT_LIGHTS > 0\r\n\r\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\r\n\r\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\r\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\r\n\r\n#endif\r\n\r\n#if MAX_SPOT_LIGHTS > 0\r\n\r\nuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\r\nuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\r\nuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\r\nuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\r\nuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\r\n\r\nuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\r\n\r\n#endif\r\n\r\n#ifdef USE_IRRADIANCEMAP\r\nuniform samplerCube irradianceMap;\r\n#endif\r\n\r\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\r\nin highp vec3 vWorldPosition;\r\n#endif\r\n\r\nin highp vec3 vViewPosition;\r\n#ifndef FLAT_SHADED\r\nin highp vec3 vNormal;\r\n#endif\r\n\r\n#ifdef USE_BUMPMAP\r\n\r\nuniform sampler2D bumpMap;\r\nuniform float bumpScale;\r\n\r\n\r\n\r\n\r\n\r\n\r\nvec2 dHdxy_fwd() {\r\n\r\n vec2 dSTdx = dFdx( vUvBump );\r\n vec2 dSTdy = dFdy( vUvBump );\r\n\r\n float Hll = bumpScale * GET_BUMPMAP(vUvBump).x;\r\n float dBx = bumpScale * GET_BUMPMAP(vUvBump + dSTdx).x - Hll;\r\n float dBy = bumpScale * GET_BUMPMAP(vUvBump + dSTdy).x - Hll;\r\n\r\n return vec2( dBx, dBy );\r\n\r\n}\r\n\r\nvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\r\n\r\n vec3 vSigmaX = dFdx( surf_pos );\r\n vec3 vSigmaY = dFdy( surf_pos );\r\n vec3 vN = surf_norm;\r\n\r\n vec3 R1 = cross( vSigmaY, vN );\r\n vec3 R2 = cross( vN, vSigmaX );\r\n\r\n float fDet = dot( vSigmaX, R1 );\r\n\r\n vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\r\n return normalize( abs( fDet ) * surf_norm - vGrad );\r\n\r\n}\r\n\r\n#endif\r\n\r\n\r\n#ifdef USE_NORMALMAP\r\n\r\nuniform sampler2D normalMap;\r\nuniform vec2 normalScale;\r\n\r\n\r\n\r\n\r\nvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\r\n\r\n vec3 q0 = dFdx( eye_pos.xyz );\r\n vec3 q1 = dFdy( eye_pos.xyz );\r\n vec2 st0 = dFdx( vUvBump.st );\r\n vec2 st1 = dFdy( vUvBump.st );\r\n\r\n vec3 S = normalize( q0 * st1.t - q1 * st0.t );\r\n vec3 T = normalize( -q0 * st1.s + q1 * st0.s );\r\n vec3 N = normalize( surf_norm );\r\n\r\n vec3 mapN = GET_NORMALMAP(vUvBump).xyz * 2.0 - 1.0;\r\n mapN.xy = normalScale * mapN.xy;\r\n mat3 tsn = mat3( S, T, N );\r\n return normalize( tsn * mapN );\r\n\r\n}\r\n\r\n#endif\r\n\r\n\r\n#ifdef USE_SPECULARMAP\r\nuniform sampler2D specularMap;\r\n#endif\r\n\r\n#ifdef USE_ALPHAMAP\r\nuniform sampler2D alphaMap;\r\n#endif\r\n\r\n#include \r\n\r\nvec3 Schlick_v3(vec3 v, float cosHV) {\r\n float facing = max(1.0 - cosHV, 0.0);\r\n return v + (1.0 - v) * pow(facing, 5.0);\r\n}\r\n\r\nfloat Schlick_f(float v, float cosHV) {\r\n float facing = max(1.0 - cosHV, 0.0);\r\n return v + ( 1.0 - v ) * pow(facing, 5.0);\r\n}\r\n\r\n#include \r\n\r\nvoid main() {\r\n\r\n#if NUM_CUTPLANES > 0\r\n checkCutPlanes(vWorldPosition);\r\n#endif\r\n\r\n outFragColor = vec4( vec3 ( 1.0 ), opacity );\r\n\r\n#ifdef USE_MAP\r\n vec4 texelColor = GET_MAP(vUv);\r\n#ifdef MAP_INVERT\r\n texelColor.xyz = 1.0-texelColor.xyz;\r\n#endif\r\n#ifdef GAMMA_INPUT\r\n texelColor.xyz *= texelColor.xyz;\r\n#endif\r\n outFragColor = outFragColor * texelColor;\r\n#endif\r\n\r\n#ifdef USE_ALPHAMAP\r\n vec4 texelAlpha = GET_ALPHAMAP(vUvAlpha);\r\n outFragColor.a *= texelAlpha.r;\r\n#endif\r\n\r\n#ifdef ALPHATEST\r\n if ( outFragColor.a < ALPHATEST ) discard;\r\n#endif\r\n\r\n float specularStrength;\r\n\r\n#ifdef USE_SPECULARMAP\r\n vec4 texelSpecular = GET_SPECULARMAP(vUv);\r\n specularStrength = texelSpecular.r;\r\n#else\r\n specularStrength = 1.0;\r\n#endif\r\n\r\n#ifndef FLAT_SHADED\r\n vec3 normal = normalize( vNormal );\r\n#ifdef DOUBLE_SIDED\r\n\r\n#endif\r\n#else\r\n vec3 fdx = dFdx( vViewPosition );\r\n vec3 fdy = dFdy( vViewPosition );\r\n vec3 normal = normalize( cross( fdx, fdy ) );\r\n#endif\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n vec3 viewDirection;\r\n if (projectionMatrix[3][3] == 0.0) {\r\n viewDirection = normalize( vViewPosition );\r\n } else {\r\n viewDirection = vec3(0.0, 0.0, 1.0);\r\n }\r\n normal = faceforward(normal, -viewDirection, normal);\r\n\r\n vec3 geomNormal = normal;\r\n\r\n#ifdef USE_NORMALMAP\r\n normal = perturbNormal2Arb( -vViewPosition, normal );\r\n#elif defined( USE_BUMPMAP )\r\n normal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\r\n#endif\r\n\r\n vec3 totalDiffuse = vec3( 0.0 );\r\n vec3 totalSpecular = vec3( 0.0 );\r\n\r\n\r\n\r\n float shininessB = shininess * 4.0;\r\n\r\n#if MAX_POINT_LIGHTS > 0\r\n\r\n vec3 pointDiffuse = vec3( 0.0 );\r\n vec3 pointSpecular = vec3( 0.0 );\r\n\r\n for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\r\n\r\n vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\r\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\r\n\r\n float lDistance = 1.0;\r\n if ( pointLightDistance[ i ] > 0.0 )\r\n lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\r\n\r\n lVector = normalize( lVector );\r\n\r\n\r\n\r\n float dotProduct = dot( normal, lVector );\r\n\r\n float pointDiffuseWeight = max( dotProduct, 0.0 );\r\n\r\n\r\n pointDiffuse += InputToLinear(diffuse) * InputToLinear(pointLightColor[ i ]) * pointDiffuseWeight * lDistance;\r\n\r\n\r\n\r\n vec3 pointHalfVector = normalize( lVector + viewDirection );\r\n float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\r\n\r\n float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininessB ), 0.0 );\r\n float specularNormalization = shininessB * 0.125 + 0.25;\r\n vec3 schlick = Schlick_v3(InputToLinear(specular), dot( lVector, pointHalfVector ) );\r\n pointSpecular += schlick * InputToLinear(pointLightColor[ i ]) * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization ;\r\n\r\n }\r\n\r\n totalDiffuse += pointDiffuse;\r\n totalSpecular += pointSpecular;\r\n\r\n#endif\r\n\r\n#if MAX_SPOT_LIGHTS > 0\r\n\r\n vec3 spotDiffuse = vec3( 0.0 );\r\n vec3 spotSpecular = vec3( 0.0 );\r\n\r\n for ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\r\n\r\n vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\r\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\r\n\r\n float lDistance = 1.0;\r\n if ( spotLightDistance[ i ] > 0.0 )\r\n lDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\r\n\r\n lVector = normalize( lVector );\r\n\r\n float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\r\n\r\n if ( spotEffect > spotLightAngleCos[ i ] ) {\r\n\r\n spotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );\r\n\r\n\r\n\r\n float dotProduct = dot( normal, lVector );\r\n\r\n float spotDiffuseWeight = max( dotProduct, 0.0 );\r\n\r\n spotDiffuse += InputToLinear(diffuse) * InputToLinear(spotLightColor[ i ]) * spotDiffuseWeight * lDistance * spotEffect;\r\n\r\n\r\n\r\n vec3 spotHalfVector = normalize( lVector + viewDirection );\r\n float spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\r\n float spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininessB ), 0.0 );\r\n\r\n float specularNormalization = shininessB * 0.125 + 0.25;\r\n vec3 schlick = Schlick_v3(InputToLinear(specular), dot( lVector, spotHalfVector ) );\r\n spotSpecular += schlick * InputToLinear(spotLightColor[ i ]) * spotSpecularWeight * spotDiffuseWeight * lDistance * specularNormalization * spotEffect;\r\n }\r\n\r\n }\r\n\r\n totalDiffuse += spotDiffuse;\r\n totalSpecular += spotSpecular;\r\n\r\n#endif\r\n\r\n#if MAX_DIR_LIGHTS > 0\r\n\r\n vec3 dirDiffuse = vec3( 0.0 );\r\n vec3 dirSpecular = vec3( 0.0 );\r\n\r\n for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\r\n\r\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\r\n vec3 dirVector = normalize( lDirection.xyz );\r\n\r\n\r\n\r\n float dotProduct = dot( normal, dirVector );\r\n\r\n float dirDiffuseWeight = max( dotProduct, 0.0 );\r\n\r\n dirDiffuse += InputToLinear(diffuse) * InputToLinear(directionalLightColor[ i ]) * dirDiffuseWeight;\r\n\r\n\r\n\r\n vec3 dirHalfVector = normalize( dirVector + viewDirection );\r\n float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\r\n float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininessB ), 0.0 );\r\n\r\n float specularNormalization = shininessB * 0.125 + 0.25;\r\n vec3 schlick = Schlick_v3(InputToLinear(specular), dot( dirVector, dirHalfVector ));\r\n\r\n dirSpecular += schlick * InputToLinear(directionalLightColor[ i ]) * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\r\n\r\n }\r\n\r\n totalDiffuse += dirDiffuse;\r\n totalSpecular += dirSpecular;\r\n\r\n#endif\r\n\r\n\r\n\r\n#ifdef USE_IRRADIANCEMAP\r\n vec3 worldNormal = mat3(viewMatrixInverse) * normal;\r\n vec3 indirectDiffuse = sampleIrradianceMap(worldNormal, irradianceMap, envMapExposure);\r\n\r\n indirectDiffuse = applyEnvShadow(indirectDiffuse, worldNormal);\r\n\r\n totalDiffuse += InputToLinear(diffuse) * indirectDiffuse;\r\n#endif\r\n\r\n\r\n#ifdef METAL\r\n outFragColor.xyz = outFragColor.xyz * ( InputToLinear(emissive) + totalDiffuse + ambientLightColor * InputToLinear(diffuse) + totalSpecular );\r\n#else\r\n outFragColor.xyz = outFragColor.xyz * ( InputToLinear(emissive) + totalDiffuse + ambientLightColor * InputToLinear(diffuse) ) + totalSpecular;\r\n#endif\r\n\r\n\r\n\r\n#ifdef USE_COLOR\r\n outFragColor = outFragColor * vec4( vColor, 1.0 );\r\n#endif\r\n\r\n\r\n#if defined(USE_ENVMAP)\r\n\r\n vec3 reflectVec;\r\n\r\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\n\r\n#ifdef ENVMAP_MODE_REFLECTION\r\n reflectVec = reflect( -viewDirection, normal );\r\n#else \r\n reflectVec = refract( -viewDirection, normal, refractionRatio );\r\n#endif\r\n\r\n#else\r\n\r\n reflectVec = reflect( -viewDirection, normal );\r\n\r\n#endif\r\n\r\n reflectVec = mat3(viewMatrixInverse) * reflectVec;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n float reflectScale = 1.0;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n vec3 cubeColor = sampleReflection(reflectVec, reflMipIndex);\r\n\r\n cubeColor *= reflectScale;\r\n\r\n float facing = dot( viewDirection, normal );\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n if (facing < -1e-2 || reflectivity == 0.0)\r\n facing = 1.0;\r\n else\r\n facing = max(1e-6, facing);\r\n\r\n#ifdef USE_BUMPMAP\r\n\r\n\r\n\r\n facing = min(1.0, facing + bumpScale * 7.0);\r\n\r\n#endif\r\n\r\n vec3 schlickRefl;\r\n\r\n#ifdef METAL\r\n\r\n\r\n schlickRefl = InputToLinear(specular);\r\n\r\n#else\r\n\r\n\r\n schlickRefl = Schlick_v3(InputToLinear(specular), facing);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n outFragColor.a = mix(outFragColor.a, Schlick_f(outFragColor.a, facing), reflectivity);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n float invSchlick = pow(1.0 - facing * 0.5, 5.0);\r\n\r\n\r\n float norm_factor = (28.0 / 23.0) * (1.0 - invSchlick) * (1.0 - invSchlick);\r\n\r\n outFragColor.xyz *= norm_factor * (1.0 - InputToLinear(specular));\r\n\r\n#endif\r\n\r\n\r\n outFragColor.xyz += cubeColor.xyz * specularStrength * schlickRefl.xyz;\r\n\r\n#ifdef CLEARCOAT\r\n\r\n vec3 reflectVecClearcoat = reflect( -viewDirection, geomNormal );\r\n reflectVecClearcoat = mat3(viewMatrixInverse) * reflectVecClearcoat;\r\n\r\n vec3 cubeColorClearcoat = sampleReflection(reflectVecClearcoat, 0.0);\r\n\r\n\r\n float schlickClearcoat = Schlick_f(InputToLinear(reflectivity), facing);\r\n\r\n\r\n\r\n outFragColor.xyz = mix(outFragColor.xyz, cubeColorClearcoat * schlickClearcoat, 0.5);\r\n\r\n#endif\r\n\r\n\r\n\r\n\r\n#endif\r\n\r\n#if TONEMAP_OUTPUT == 1\r\n outFragColor.xyz = toneMapCanonOGS_WithGamma_WithColorPerserving(exposureBias * outFragColor.xyz);\r\n#elif TONEMAP_OUTPUT == 2\r\n outFragColor.xyz = toneMapCanonFilmic_WithGamma( exposureBias * outFragColor.xyz );\r\n#endif\r\n\r\n\r\n\r\n#ifdef USE_FOG\r\n float depth = gl_FragCoord.z / gl_FragCoord.w;\r\n float fogFactor = smoothstep( fogNear, fogFar, depth );\r\n outFragColor = mix( outFragColor, vec4( fogColor, outFragColor.w ), fogFactor );\r\n#endif\r\n#include \r\n#include \r\n\r\n#include \r\n}\r\n"},77431:e=>{e.exports="out vec3 vViewPosition;\n#ifndef FLAT_SHADED\nout vec3 vNormal;\n#endif\n#if defined( USE_MAP ) || defined( USE_SPECULARMAP )\nout vec2 vUv;\nuniform mat3 texMatrix;\n#endif\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nout vec2 vUvBump;\nuniform mat3 texMatrixBump;\n#endif\n#if defined( USE_ALPHAMAP )\nout vec2 vUvAlpha;\nuniform mat3 texMatrixAlpha;\n#endif\n#if defined( USE_ENVMAP )\n#if ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP )\nuniform float refractionRatio;\n#endif\n#endif\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\n#ifdef USE_COLOR\nout vec3 vColor;\n#endif\n#ifdef MRT_NORMALS\nout float depth;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n#if defined( USE_MAP ) || defined( USE_SPECULARMAP )\n vUv = (texMatrix * vec3(uv, 1.0)).xy;\n#endif\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n vUvBump = (texMatrixBump * vec3(uv, 1.0)).xy;\n#endif\n#if defined( USE_ALPHAMAP )\n vUvAlpha = (texMatrixAlpha * vec3(uv, 1.0)).xy;\n#endif\n#ifdef USE_COLOR\n#ifdef GAMMA_INPUT\n vColor = color * color;\n#else\n vColor = color;\n#endif\n#endif\n#ifdef UNPACK_NORMALS\n vec3 objectNormal = decodeNormal(normal);\n#else\n vec3 objectNormal = normal;\n#endif\n#ifdef FLIP_SIDED\n objectNormal = -objectNormal;\n#endif\n objectNormal = getInstanceNormal(objectNormal);\n vec3 instPos = getInstancePos(position);\n vec3 transformedNormal = normalMatrix * objectNormal;\n#ifndef FLAT_SHADED\n vNormal = normalize( transformedNormal );\n#endif\n vec4 mvPosition = modelViewMatrix * vec4( instPos, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n#include \n \n#include \n vViewPosition = -mvPosition.xyz;\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( instPos, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n#ifdef MRT_NORMALS\n depth = mvPosition.z;\n#endif\n#include \n#include \n}\n"},9893:e=>{e.exports="\n#define EDGE_SHARPNESS (3.0)\n#define SCALE (2)\n#define R (4)\n#define VALUE_TYPE float\n#define VALUE_COMPONENTS r\n#define VALUE_IS_KEY 0\n#define KEY_COMPONENTS gb\n#if __VERSION__ >= 330\nconst float gaussian[R + 1] =\nfloat[](0.153170, 0.144893, 0.122649, 0.092902, 0.062970);\n#endif\nuniform sampler2D tDiffuse;\nuniform vec2 size;\nuniform vec2 resolution;\nuniform vec2 axis;\nuniform float radius;\n#define result outFragColor.VALUE_COMPONENTS\n#define keyPassThrough outFragColor.KEY_COMPONENTS\nfloat unpackKey(vec2 p) {\n return p.x + p.y * (1.0 / 255.0);\n}\nin vec2 vUv;\nvoid main() {\n# if __VERSION__ < 330\n float gaussian[R + 1];\n# if R == 3\n gaussian[0] = 0.153170; gaussian[1] = 0.144893; gaussian[2] = 0.122649; gaussian[3] = 0.092902;\n# elif R == 4\n gaussian[0] = 0.153170; gaussian[1] = 0.144893; gaussian[2] = 0.122649; gaussian[3] = 0.092902; gaussian[4] = 0.062970;\n# elif R == 6\n gaussian[0] = 0.111220; gaussian[1] = 0.107798; gaussian[2] = 0.098151; gaussian[3] = 0.083953; gaussian[4] = 0.067458; gaussian[5] = 0.050920; gaussian[6] = 0.036108;\n# endif\n# endif\n ivec2 axisi = ivec2(axis);\n ivec2 ssC = ivec2(gl_FragCoord.xy);\n vec4 temp = texture(tDiffuse, vUv);\n outFragColor.gb = temp.KEY_COMPONENTS;\n outFragColor.a = temp.a;\n VALUE_TYPE sum = temp.VALUE_COMPONENTS;\n if (temp.a == 0.0) {\n result = sum;\n return;\n }\n float key = unpackKey(keyPassThrough);\n float BASE = gaussian[0];\n float totalWeight = BASE;\n sum *= totalWeight;\n float scale = 1.5 / radius;\n int r = -4; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[4];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = -3; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[3];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = -2; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[2];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r=-1; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[1];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = 1; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[1];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = 2; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[2];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = 3; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[3];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = 4; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[4];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n const float epsilon = 0.0001;\n result = sum / (totalWeight + epsilon);\n}\n"},78101:e=>{e.exports="\n#include \nuniform float cameraNear;\nuniform float cameraFar;\nuniform vec2 size;\nuniform vec2 resolution;\nuniform float lumInfluence;\nin vec2 vUv;\n#define NUM_SAMPLES (17)\n#define LOG_MAX_OFFSET (3)\n#define NUM_SPIRAL_TURNS (5)\n#define MIN_RADIUS (3.0)\n#define TAU 6.28318530718\nuniform float projScale;\n#ifdef USE_MIPMAP\nuniform sampler2D tDepth_mip1;\nuniform sampler2D tDepth_mip2;\nuniform sampler2D tDepth_mip3;\nuniform sampler2D tDepth_mip4;\nuniform sampler2D tDepth_mip5;\n#endif\nuniform float radius;\nuniform float bias;\nuniform float intensity;\nvec2 tapLocation(int sampleNumber, float spinAngle, out float ssR){\n float alpha = float(float(sampleNumber) + 0.5) * (1.0 / float(NUM_SAMPLES));\n float angle = alpha * (float(NUM_SPIRAL_TURNS) * TAU) + spinAngle;\n ssR = alpha;\n return vec2(cos(angle), sin(angle));\n}\nfloat CSZToKey(float z) {\n return clamp( (z+cameraNear) / (cameraNear-cameraFar), 0.0, 1.0);\n}\nvoid packKey(float key, out vec2 p) {\n float temp = floor(key * 255.0);\n p.x = temp * (1.0 / 255.0);\n p.y = key * 255.0 - temp;\n}\n#include \nfloat unpackDepthNearFar( const in vec4 rgba_depth ) {\n float depth = unpackDepth( rgba_depth );\n if (depth == 0.0)\n return -cameraFar * 1.0e10;\n return depth * (cameraNear - cameraFar) - cameraNear;\n}\nvec3 reconstructCSFaceNormal(vec3 C) {\n return normalize(cross(dFdy(C), dFdx(C)));\n}\nvec3 reconstructNonUnitCSFaceNormal(vec3 C) {\n return cross(dFdy(C), dFdx(C));\n}\nvec3 getPosition(ivec2 ssP, float depth) {\n vec3 P;\n P = reconstructCSPosition(vec2(ssP) + vec2(0.5), depth);\n return P;\n}\nvec3 getOffsetPosition(ivec2 ssC, vec2 unitOffset, float ssR) {\n ivec2 ssP = ivec2(ssR * unitOffset) + ssC;\n vec3 P;\n#ifdef USE_MIPMAP\n int mipLevel = clamp(int(floor(log2(ssR))) - LOG_MAX_OFFSET, 0, MAX_MIP_LEVEL);\n if (mipLevel == 0) {\n P.z = texelFetch(tDepth, ssP, 0).z;\n if (P.z == 0.0) P.z = -cameraFar * 1.0e10;\n }\n else if (mipLevel == 1) {\n ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(tDepth_mip1, 0) - ivec2(1));\n P.z = unpackDepthNearFar(texelFetch(tDepth_mip1, mipP, 0));\n } else if (mipLevel == 2) {\n ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(tDepth_mip2, 0) - ivec2(1));\n P.z = unpackDepthNearFar(texelFetch(tDepth_mip2, mipP, 0));\n } else if (mipLevel == 3) {\n ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(tDepth_mip3, 0) - ivec2(1));\n P.z = unpackDepthNearFar(texelFetch(tDepth_mip3, mipP, 0));\n } else if (mipLevel == 4) {\n ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(tDepth_mip4, 0) - ivec2(1));\n P.z = unpackDepthNearFar(texelFetch(tDepth_mip4, mipP, 0));\n } else if (mipLevel == 5) {\n ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(tDepth_mip5, 0) - ivec2(1));\n P.z = unpackDepthNearFar(texelFetch(tDepth_mip5, mipP, 0));\n }\n#else\n P.z = texelFetch(tDepth, ssP, 0).z;\n if (P.z == 0.0) P.z = -cameraFar * 1.0e10;\n#endif\n P = reconstructCSPosition(vec2(ssP) + vec2(0.5), P.z);\n return P;\n}\nfloat sampleAO(in ivec2 ssC, in vec3 C, in vec3 n_C, in float ssDiskRadius, in int tapIndex, in float randomPatternRotationAngle) {\n float ssR;\n vec2 unitOffset = tapLocation(tapIndex, randomPatternRotationAngle, ssR);\n ssR = max(0.75, ssR * ssDiskRadius);\n vec3 Q = getOffsetPosition(ssC, unitOffset, ssR);\n vec3 v = Q - C;\n float vv = dot(v, v);\n float vn = dot(v, n_C);\n const float epsilon = 0.001;\n float angAdjust = mix(1.0, max(0.0, 1.5 * n_C.z), 0.35);\n#define HIGH_QUALITY\n#ifdef HIGH_QUALITY\n float f = max(1.0 - vv / (radius * radius), 0.0); return angAdjust * f * max((vn - bias) / sqrt(epsilon + vv), 0.0);\n#else\n float f = max(radius * radius - vv, 0.0); return angAdjust * f * f * f * max((vn - bias) / (epsilon + vv), 0.0);\n#endif\n}\nconst bool useNoise = true;\nfloat getRandomAngle(vec2 pos) {\n float dt= dot(pos ,vec2(12.9898,78.233));\n return TAU * fract(sin(mod(dt,3.14)) * 43758.5453);\n}\nvoid main() {\n ivec2 ssC = ivec2(gl_FragCoord.xy);\n vec4 nrmz = texture(tDepth, vUv);\n if (nrmz.z == 0.0) {\n outFragColor.r = 1.0;\n outFragColor.a = 0.0;\n packKey(1.0, outFragColor.gb);\n return;\n }\n vec3 C = getPosition(ssC, nrmz.z);\n packKey(CSZToKey(C.z), outFragColor.gb);\n float ssDiskRadius = -projScale * radius / mix(C.z, -1.0, isOrtho);\n float A;\n if (ssDiskRadius <= MIN_RADIUS) {\n A = 1.0;\n } else {\n float sum = 0.0;\n float randomPatternRotationAngle = getRandomAngle(vUv);\n vec3 n_C = vec3(nrmz.x, nrmz.y, sqrt(1.0 - dot(nrmz.xy, nrmz.xy)));\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 0, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 1, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 2, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 3, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 4, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 5, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 6, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 7, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 8, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 9, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 10, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 11, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 12, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 13, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 14, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 15, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 16, randomPatternRotationAngle);\n float intensityDivR6 = intensity / pow(radius, 6.0);\n#ifdef HIGH_QUALITY\n A = pow(max(0.0, 1.0 - sqrt(sum * (3.0 / float(NUM_SAMPLES)))), intensity);\n#else\n A = max(0.0, 1.0 - sum * intensityDivR6 * (5.0 / float(NUM_SAMPLES)));\n A = (pow(A, 0.2) + 1.2 * A*A*A*A) / 2.2;\n#endif\n if (abs(dFdx(C.z)) < 0.02) {\n A -= dFdx(A) * (mod(float(ssC.x), 2.0) - 0.5);\n }\n if (abs(dFdy(C.z)) < 0.02) {\n A -= dFdy(A) * (mod(float(ssC.y), 2.0) - 0.5);\n }\n A = mix(1.0, A, clamp(ssDiskRadius - MIN_RADIUS,0.0,1.0));\n }\n outFragColor.r = A;\n outFragColor.a = 1.0;\n}\n"},67020:e=>{e.exports="uniform sampler2D tDiffuse;\nuniform vec2 resolution;\nvoid main() {\n vec2 ssP = vec2(gl_FragCoord.xy);\n ssP = ssP * 2.0 + mod(ssP, 2.0);\n ssP = (ssP + 0.5) * resolution * 0.5;\n outFragColor = texture(tDiffuse, ssP);\n}\n"},18952:e=>{e.exports="uniform sampler2D tDiffuse;\nuniform vec2 resolution;\nuniform float cameraNear;\nuniform float cameraInvNearFar;\n#include \nvoid main() {\n vec2 ssP = vec2(gl_FragCoord.xy);\n ssP = ssP * 2.0 + mod(ssP, 2.0);\n ssP = (ssP + 0.5) * resolution * 0.5;\n float depth = texture(tDiffuse, ssP).z;\n if (depth != 0.0)\n depth = (depth + cameraNear) * cameraInvNearFar;\n outFragColor = packDepth(depth);\n}\n"},44203:e=>{e.exports="out vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n"},37787:e=>{e.exports="\nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n"},32968:e=>{e.exports="#include \nin float depth;\n#ifdef USE_SURFACE_CUTOUT_MAP\n#include \n#if defined( USE_SURFACE_CUTOUT_MAP )\n uniform sampler2D surface_cutout_map;\n uniform mat3 surface_cutout_map_texMatrix;\n uniform bool surface_cutout_map_invert;\n#endif\nin vec2 vUv;\n#else\n#ifdef USE_MAP\nin vec2 vUv;\nuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\nin vec2 vUvAlpha;\nuniform sampler2D alphaMap;\n#endif\n#endif\nuniform float shadowMinOpacity;\nvoid applyCutoutMaps() {\n float opacity = 1.0;\n#ifdef USE_SURFACE_CUTOUT_MAP\n #if defined( USE_SURFACE_CUTOUT_MAP )\n vec2 uv_surface_cutout_map = (surface_cutout_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_CUTOUT_CLAMP_TEST;\n vec3 opacity_v3 = texture(surface_cutout_map, uv_surface_cutout_map).xyz;\n if(surface_cutout_map_invert) opacity_v3 = vec3(1.0) - opacity_v3;\n opacity = average(opacity_v3);\n #else\n opacity = surface_cutout;\n #endif\n#else\n#ifdef USE_MAP\n opacity *= GET_MAP(vUv).a;\n#endif\n#ifdef USE_ALPHAMAP\n opacity *= GET_ALPHAMAP(vUvAlpha).r;\n#endif\n#endif\n#if defined(USE_SURFACE_CUTOUT_MAP) || defined(USE_MAP) || defined(USE_ALPHAMAP)\n if (opacity < shadowMinOpacity) discard;\n#endif\n}\nvoid main() {\n float normalizedLinearDepth = (depth - shadowMapRangeMin) / shadowMapRangeSize;\n float val = exp(shadowESMConstant * normalizedLinearDepth);\n#ifdef USE_HARD_SHADOWS\n val = normalizedLinearDepth;\n#endif\n applyCutoutMaps();\n outFragColor = vec4(val, 0, 0, 1);\n}\n"},77500:e=>{e.exports="#include \nvoid main() {\n float shadowIntensity = 0.5 * (1.0 - getShadowValue());\n outFragColor = vec4(0.0, 0.0, 0.0, shadowIntensity);\n}\n"},54707:e=>{e.exports="#include \nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n#include \n}\n"},9063:e=>{e.exports="#include \nout float depth;\n#ifdef USE_SURFACE_CUTOUT_MAP\nout vec2 vUv;\n#else\n#ifdef USE_MAP\nout vec2 vUv;\nuniform mat3 texMatrix;\n#endif\n#ifdef USE_ALPHAMAP\nout vec2 vUvAlpha;\nuniform mat3 texMatrixAlpha;\n#endif\n#endif\nvoid passCutoutUVCoords() {\n#ifdef USE_SURFACE_CUTOUT_MAP\n vUv = uv;\n#else\n#ifdef USE_MAP\n vUv = (texMatrix * vec3(uv, 1.0)).xy;\n#endif\n#ifdef USE_ALPHAMAP\n vUvAlpha = (texMatrixAlpha * vec3(uv, 1.0)).xy;\n#endif\n#endif\n}\nvoid main() {\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n vec4 p_Position = projectionMatrix * mvPosition;\n gl_Position = p_Position;\n depth = -mvPosition.z;\n passCutoutUVCoords();\n}\n"},88368:e=>{e.exports="#include \n#include \nuniform sampler2D sheetMap;\nuniform sampler2D idMap;\nuniform vec2 resolution;\nuniform vec3 modelIDv2;\nuniform float alphaTest;\nvoid main() {\n vec2 uv = vec2(gl_FragCoord.x * resolution.x, gl_FragCoord.y * resolution.y);\n vec4 c = texture(sheetMap, uv);\n if (c.a <= alphaTest)\n discard;\n \n outFragColor = c;\n vec4 dbId = texture(idMap, uv);\n#ifdef MRT_NORMALS\n outNormal = vec4(0.0, 0.0, 0.0, 1.0);\n#endif\n#ifdef MRT_ID_BUFFER\n outId = vec4(dbId.rgb, 1.0);\n #ifdef MODEL_COLOR\n outModelId = vec4(modelIDv2.rgb, 1.0);\n #endif\n#elif defined(ID_COLOR)\n outFragColor = vec4(dbId.rgb, 1.0);\n#elif defined(MODEL_COLOR)\n outFragColor = vec4(modelIDv2.rgb, 1.0);\n#endif\n#include \n}\n"},38383:e=>{e.exports="#include \nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n #include \n}"},6614:(e,t,i)=>{"use strict";i.r(t);var n=i(55270),r=i(82712),o=i(14813),s=i(87471),a=i(22767),l=i(19556),c=i(35922);function h(e,t){r.Extension.call(this,e,t),this.name="propertiesmanager",this._panel=null,this._onIsolateEvent=this._onIsolateEvent.bind(this),this._onSelectionChangeEvent=this._onSelectionChangeEvent.bind(this),this._onPrefChange=this._onPrefChange.bind(this),this._onContextMenu=this._onContextMenu.bind(this)}h.prototype=Object.create(r.Extension.prototype),h.prototype.constructor=h;var u=h.prototype;const d=Autodesk.Viewing.Private;u.load=function(){return this.viewer.addEventListener(l.ISOLATE_EVENT,this._onIsolateEvent),this.viewer.addEventListener(l.AGGREGATE_SELECTION_CHANGED_EVENT,this._onSelectionChangeEvent),this.viewer.prefs.addListeners(c.Prefs.OPEN_PROPERTIES_ON_SELECT,this._onPrefChange),this.viewer.registerContextMenuCallback(this.name,this._onContextMenu),!0},u.unload=function(){this.viewer.removeEventListener(l.ISOLATE_EVENT,this._onIsolateEvent),this.viewer.removeEventListener(l.AGGREGATE_SELECTION_CHANGED_EVENT,this._onSelectionChangeEvent),this.viewer.prefs.removeListeners(c.Prefs.OPEN_PROPERTIES_ON_SELECT,this._onPrefChange),this.viewer.unregisterContextMenuCallback(this.name),this.deactivate(),this.setPanel(null),this._toolbarButton&&(this.viewer.settingsTools.removeControl(this._toolbarButton),this.viewer.settingsTools.propertiesbutton=null,this._toolbarButton=null)},u.onToolbarCreated=function(){this.setDefaultPanel(),this._addToolbarButton()},u.activate=function(){return!!this._panel&&(this._panel.setVisible(!0),!0)},u.deactivate=function(){return this._panel&&this._panel.setVisible(!1),!0},u.isActive=function(){return!!this._panel&&this._panel.isVisible()},u.setPanel=function(e){return(e instanceof o.PropertyPanel||!e)&&(this._panel&&(this._panel.setVisible(!1),this.viewer.removePanel(this._panel),this._panel.uninitialize()),this._panel=e,e&&(this.viewer.addPanel(e),e.addVisibilityListener((e=>{e&&this.viewer.onPanelVisible(this._panel),this._toolbarButton.setState(e?a.Button.State.ACTIVE:a.Button.State.INACTIVE)}))),!0)},u.setDefaultPanel=function(){this.setPanel(new s.ViewerPropertyPanel(this.viewer))},u.getPanel=function(){return this._panel},u.getToolbarButton=function(){return this._toolbarButton},u._addToolbarButton=function(){if(!this._toolbarButton){var e=this._toolbarButton=new a.Button("toolbar-propertiesTool");e.setToolTip("Properties"),e.setIcon("adsk-icon-properties"),e.onClick=()=>{this._panel.setVisible(!this._panel.isVisible()),this._panel.isVisible()&&d.analytics.track("viewer.properties",{action:"View List",from:"Toolbar"})},e.setVisible(!this.viewer.prefs.get("openPropertiesOnSelect")),this.viewer.settingsTools.addControl(e,{index:1}),this.viewer.settingsTools.propertiesbutton=e}},u._onIsolateEvent=function(e){this._panel&&(this.viewer.prefs.get("openPropertiesOnSelect")||e.nodeIdArray[0]===e.model.getRootId())&&this._panel.setVisible(e.nodeIdArray.length>0||this.viewer.impl.selector.hasSelection())},u._onSelectionChangeEvent=function(e){if(!this.viewer.prefs.get("openPropertiesOnSelect"))return;let t=!1;for(let i=0;i0){t=!0;break}t?this.activate():this.deactivate()},u._onPrefChange=function(e){this._toolbarButton&&this._toolbarButton.setVisible(!e)},u._onContextMenu=function(e,t){if(this.isActive())return;if(!t.hasSelected)return;const i={title:"Show Properties",target:()=>{this.activate(),d.analytics.track("viewer.properties",{action:"View List",from:"Contextual"})}};e.unshift(i)};var f=i(11337);function p(e,t){r.Extension.call(this,e,t),this.viewer=e,this.options=t,this.name="viewersettings"}p.prototype=Object.create(r.Extension.prototype),p.prototype.constructor=p;var m=p.prototype;m.activate=function(){this.activeStatus||(this.viewer.showViewer3dOptions(!0),this.viewer.getSettingsPanel(!0).selectTab(f.ViewerSettingTab.Performance),this.activeStatus=!0);return!0},m.deactivate=function(){return this.activeStatus&&(this.viewer.showViewer3dOptions(!1),this.activeStatus=!1),!0};var g=i(72738),v=i(55280);const y=Autodesk.Viewing.Private;function b(e,t){r.Extension.call(this,e,t),this.viewer=e,this.options=t,this.name="modelstructure",this._modelstructure=null,this._onLoadModel=this._onLoadModel.bind(this),this._onUnloadModel=this._onUnloadModel.bind(this)}b.prototype=Object.create(r.Extension.prototype),b.prototype.constructor=b;var x=b.prototype;x.load=function(){return this.viewer.addEventListener(l.MODEL_ADDED_EVENT,this._onLoadModel),this.viewer.addEventListener(l.MODEL_ROOT_LOADED_EVENT,this._onLoadModel),this.viewer.addEventListener(l.MODEL_UNLOADED_EVENT,this._onUnloadModel),this.viewer.addEventListener(l.MODEL_REMOVED_EVENT,this._onUnloadModel),!0},x.unload=function(){return this.deactivate(),this.setModelStructurePanel(null),this._structureButton&&(this.viewer.settingsTools.removeControl(this._structureButton),this.viewer.settingsTools.structurebutton=null,this._structureButton=null),this.viewer.removeEventListener(l.MODEL_ADDED_EVENT,this._onLoadModel),this.viewer.removeEventListener(l.MODEL_ROOT_LOADED_EVENT,this._onLoadModel),this.viewer.removeEventListener(l.MODEL_UNLOADED_EVENT,this._onUnloadModel),this.viewer.removeEventListener(l.MODEL_REMOVED_EVENT,this._onUnloadModel),!0},x.onToolbarCreated=function(){const e=new a.Button("toolbar-modelStructureTool");e.setToolTip("Model browser"),e.setIcon("adsk-icon-structure"),e.onClick=()=>{!this._modelstructure.isVisible()?this.activate():this.deactivate()};const t=this.viewer.settingsTools;t.addControl(e,{index:0}),t.structurebutton=e,this._structureButton=e,this.restoreDefaultPanel()},x.activate=function(){return!!this._modelstructure&&(this._modelstructure.setVisible(!0),y.analytics.track("viewer.model_browser",{action:"View List"}),!0)},x.deactivate=function(){return this._modelstructure&&this._modelstructure.setVisible(!1),!0},x.isActive=function(){return!!this._modelstructure&&this._modelstructure.isVisible()},x.setModelStructurePanel=function(e){if(e===this._modelstructure)return!1;if(this._modelstructure&&(this._modelstructure.setVisible(!1),this.viewer.removePanel(this._modelstructure),this._modelstructure.uninitialize()),this._modelstructure=e,this.viewer.modelstructure=e,!e)return!0;this.viewer.addPanel(this._modelstructure);for(var t=this.viewer.impl.modelQueue().getModels(),i=0;i{e&&this.viewer.onPanelVisible(this._modelstructure),this._structureButton.setState(e?a.Button.State.ACTIVE:a.Button.State.INACTIVE)})),!0},x.restoreDefaultPanel=function(){const e=this.viewer.config;var t={docStructureConfig:e.docStructureConfig,hideSearch:(0,v.isMobileDevice)(),excludeRoot:e.modelBrowserExcludeRoot,startCollapsed:e.modelBrowserStartCollapsed},i=e.defaultModelStructureTitle||"Browser",n=new g.ViewerModelStructurePanel({...t,...(0,g.generateDefaultViewerHandlerOptions)(this.viewer)},i);this.setModelStructurePanel(n)},x._onLoadModel=function(e){this._modelstructure&&this._modelstructure.addModel(e.model)},x._onUnloadModel=function(e){this._modelstructure&&this._modelstructure.unloadModel(e.model)};var _=i(36523),E=i(66277),S=i(28833),A=i(60687),w=i(38842),T=i(41129),M=i(88946),C="dolly",P="freeorbit",D="orbit",L="worldup",I="fittoview";function R(e,t){r.Extension.call(this,e,t),this.name="navtools",this.modes=["pan",C,P,D,"fov",L,I],this.onToolChanged=this.onToolChanged.bind(this),this.onNavigationModeChanged=this.onNavigationModeChanged.bind(this),this.navToolsConfig=t.navToolsConfig||{}}R.prototype=Object.create(r.Extension.prototype),R.prototype.constructor=R;var O=R.prototype;function N(e,t,i){return function(){e.isActive(i)?e.deactivate():e.activate(i)}}O.load=function(){var e=this.viewer,t=new S.FovTool(e);if(e.toolController.registerTool(t),!this.navToolsConfig.isAECCameraControls){var i=new A.WorldUpTool(e.impl,e);e.toolController.registerTool(i)}return this.initFocalLengthOverlay(),e.addEventListener(l.TOOL_CHANGE_EVENT,this.onToolChanged),e.addEventListener(l.NAVIGATION_MODE_CHANGED_EVENT,this.onNavigationModeChanged),!0},O.updateUI=function(e){e!==this.is3d&&(this._destroyUI(),this._createUI(e))},O.onToolbarCreated=function(){var e=!this.viewer.impl.is2d;this._createUI(e)},O.navActionDisplayMode=function(e){return this.viewer.navigation.isActionEnabled(e)?"block":"none"},O._createUI=function(e){var t=this.viewer.getToolbar().getControl(_.TOOLBAR.NAVTOOLSID);if(e){var i=new E.ComboButton("toolbar-orbitTools");i.setToolTip("Orbit"),i.setIcon("adsk-icon-orbit-constrained"),i.setDisplay(this.navActionDisplayMode("orbit")),this.createOrbitSubmenu(i),t.addControl(i),t.orbittoolsbutton=i,i.setState(a.Button.State.ACTIVE),t.returnToDefault=function(){i.setState(a.Button.State.ACTIVE)}}var n=new a.Button("toolbar-panTool");n.setToolTip("Pan"),n.setIcon("adsk-icon-pan"),n.onClick=N(this,0,"pan"),n.setDisplay(this.navActionDisplayMode("pan")),t.addControl(n),t.panbutton=n,e||(t.returnToDefault=function(){n.setState(a.Button.State.ACTIVE)},t.returnToDefault());var r=new a.Button("toolbar-zoomTool");if(r.setToolTip("Zoom"),r.setIcon("adsk-icon-zoom"),r.onClick=N(this,0,C),r.setDisplay(this.navActionDisplayMode("zoom")),t.addControl(r),t.dollybutton=r,this.navToolsConfig.isAECCameraControls)t.addControl(this.createFitViewButton(t));else{var o=new E.ComboButton("toolbar-cameraSubmenuTool");o.setToolTip("Camera interactions"),o.setIcon("adsk-icon-camera"),o.saveAsDefault(),this.createCameraSubmenu(o,e),t.addControl(o),t.camerabutton=o}this.is3d=e},O.createOrbitSubmenu=function(e){var t=this.viewer.getToolbar().getControl(_.TOOLBAR.NAVTOOLSID),i=new a.Button("toolbar-freeOrbitTool");i.setToolTip("Free orbit"),i.setIcon("adsk-icon-orbit-free"),i.onClick=N(this,0,P),e.addControl(i),t.freeorbitbutton=i;var n=new a.Button("toolbar-orbitTool");n.setToolTip("Orbit"),n.setIcon("adsk-icon-orbit-constrained"),n.onClick=N(this,0,D),e.addControl(n),t.orbitbutton=n,e.onClick=n.onClick},O.createFitViewButton=function(e,t){var i=this.viewer,n=new a.Button("toolbar-fitToViewTool");return n.setToolTip("Fit to view"),n.setIcon("adsk-icon-fit-to-view"),n.onClick=function(){i.impl.fitToView(i.impl.selector.getAggregateSelection());Autodesk.Viewing.Private.analytics.track("viewer.fit_to_view",{from:"UI"});var e=i.getDefaultNavigationToolName();i.setActiveNavigationTool(e),t&&t.restoreDefault()},n.setDisplay(this.navActionDisplayMode("gotoview")),e.fittoviewbutton=n,n},O.createCameraSubmenu=function(e,t){var i=this,n=this.viewer,r=n.getToolbar().getControl(_.TOOLBAR.NAVTOOLSID);if((0,v.isTouchDevice)()){var o=new a.Button("toolbar-homeTool");o.setToolTip("Home"),o.setIcon("adsk-icon-home"),o.onClick=function(){n.navigation.setRequestHomeView(!0);var t=n.getDefaultNavigationToolName();i.activate(t),e.restoreDefault()},o.setDisplay(this.navActionDisplayMode("gotoview")),e.addControl(o),r.homebutton=o}if(e.addControl(this.createFitViewButton(r,e)),t){var s=new a.Button("toolbar-focalLengthTool");s.setToolTip("Focal length"),s.setIcon("adsk-icon-fov"),s.onClick=N(this,0,"fov"),s.setDisplay(this.navActionDisplayMode("fov")),e.addControl(s),r.fovbutton=s}var l=new a.Button("toolbar-rollTool");l.setToolTip("Roll"),l.setIcon("adsk-icon-roll"),l.onClick=N(this,0,L),l.setDisplay(this.navActionDisplayMode("roll")),e.addControl(l),r.rollbutton=l},O.onToolChanged=function(e){if("fov"===e.toolName&&this.showFocalLengthOverlay(e.active),e.active)switch(e.toolName){case"dolly":this.handleAltRelease("dollybutton");break;case"pan":this.handleAltRelease("panbutton");break;case"worldup":this.handleAltRelease("rollbutton");break;case"fov":this.handleAltRelease("fovbutton")}},O.onNavigationModeChanged=function(e){if(this.viewer.getDefaultNavigationToolName()===e.id){var t=this.viewer.getToolbar();if(!t)return;var i=t.getControl(_.TOOLBAR.NAVTOOLSID);if(!i)return;i.returnToDefault&&i.returnToDefault()}},O.handleAltRelease=function(e){var t=this.viewer.getToolbar();if(t){var i=t.getControl(_.TOOLBAR.NAVTOOLSID),n=i&&i[e];n&&n.setState(a.Button.State.ACTIVE)}},O.initFocalLengthOverlay=function(){const e=this.getDocument();var t=this.focallength=e.createElement("div");t.classList.add("message-panel"),t.classList.add("docking-panel"),t.classList.add("focal-length"),t.classList.add("docking-panel-container-solid-color-b");var i=e.createElement("table"),n=e.createElement("tbody");i.appendChild(n),t.appendChild(i),this.viewer.container.appendChild(t);var r=n.insertRow(-1),o=r.insertCell(0);o.classList.add("name"),o.setAttribute("data-i18n","Focal Length"),o.textContent=w.A.t("Focal Length"),(o=r.insertCell(1)).classList.add("value"),o.textContent="",this.fovCell=o,t.style.visibility="hidden"},O.showFocalLengthOverlay=function(e){var t=this,i=this.viewer,n=0;function r(e){if(e){M.HudMessage.displayMessage(i.container,{msgTitleKey:"Orthographic View Set",messageKey:"The view is set to Orthographic",messageDefaultValue:"The view is set to Orthographic. Changing the focal length will switch to Perspective."})}else M.HudMessage.dismiss()}function o(e){e&&s(),t.focallength&&(t.focallength.style.visibility=e?"visible":"hidden")}function s(){var e=i.getFocalLength();n!==e&&(n=e,t.fovCell.textContent=e.toString()+" mm")}function a(){if(s(),"fov"===i.toolController.getActiveToolName()){var e=i.navigation.getCamera(),t=e&&!e.isPerspective;o(!t),r(t)}}var c=i.navigation.getCamera(),h=c&&!c.isPerspective;o(e&&!h),r(e&&h),e?i.addEventListener(l.CAMERA_CHANGE_EVENT,a):i.removeEventListener(l.CAMERA_CHANGE_EVENT,a)},O.unload=function(){return this._destroyUI(),!0},O._destroyUI=function(){var e=this.viewer,t=e.getToolbar();if(!t)return!0;var i=t.getControl(_.TOOLBAR.NAVTOOLSID);if(!i)return!0;function n(e){e&&(e.subMenu.removeEventListener(T.RadioButtonGroup.Event.ACTIVE_BUTTON_CHANGED,e.subMenuActiveButtonChangedHandler(i)),i.removeControl(e.getId()),e.onClick=null)}function r(e){e&&(i.removeControl(e.getId()),e.onClick=null)}return this.is3d&&(n(i.orbittoolsbutton),i.orbittoolsbutton=null,r(i.orbitbutton),i.orbitbutton=null,r(i.freeorbitbutton),i.freeorbitbutton=null,r(i.fovbutton),i.fovbutton=null),r(i.panbutton),i.panbutton=null,r(i.dollybutton),i.dollybutton=null,n(i.camerabutton),i.camerabutton=null,r(i.rollbutton),i.rollbutton=null,r(i.fittoviewbutton),i.fittoviewbutton=null,this.focallength&&(e.container.removeChild(this.focallength),this.focallength=null),e.removeEventListener(l.TOOL_CHANGE_EVENT,this.onToolChanged),this.onToolChanged=null,e.removeEventListener(l.NAVIGATION_MODE_CHANGED_EVENT,this.onNavigationModeChanged),this.onNavigationModeChanged=null,!0},O.activate=function(e){if(this.isActive(e))return!1;if(e===I)return this.viewer.impl.fitToView(this.viewer.impl.selector.getAggregateSelection()),!0;if(-1!=this.modes.indexOf(e)){const t=this.viewer.getDefaultNavigationToolName();return-1===this.modes.indexOf(t)&&this.viewer.activateDefaultNavigationTools(this.viewer.model.is2d()),this.viewer.setActiveNavigationTool(e),!0}return!1},O.deactivate=function(){return this.viewer.setActiveNavigationTool(),!0},O.isActive=function(e){return this.viewer.getActiveNavigationTool()===e};var F=i(74481);const U=Autodesk.Viewing.GlobalManagerMixin;class B extends F.ToolInterface{constructor(e){var t;super(),t=this,this.names=["explode"],this.viewer=e,this.setGlobalManager(this.viewer.globalManager),this.active=!1,this.activate=()=>{this.active=!0},this.deactivate=function(){(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&t.setScale(0),t.active=!1},this.isActive=()=>this.active}setScale(e){let t=e,i=this.viewer.getExplodeOptions();return this.viewer.explode(t,i)}getScale(){return this.viewer.getExplodeScale()}setMagnitude(e){let t=this.viewer.getExplodeScale(),i=this.viewer.getExplodeOptions();return i.magnitude=e,this.viewer.explode(t,i)}getMagnitude(){return this.viewer.getExplodeOptions().magnitude}setDepthDampening(e){let t=this.viewer.getExplodeScale(),i=this.viewer.getExplodeOptions();return i.depthDampening=e,this.viewer.explode(t,i)}getDepthDampening(){return this.viewer.getExplodeOptions().depthDampening}}U.call(B.prototype);var k=i(8600),V=i(83081);class G{constructor(e){this.ext=e;const t=e.viewer,i=new a.Button("toolbar-explodeTool");i.setIcon("adsk-icon-explode"),i.setToolTip("Explode model"),t.modelTools.addControl(i);let n=(0,k.stringToDOM)('
');const r=t.getToolbar().container.querySelector("#toolbar-explodeTool").parentNode;(0,v.isIOSDevice)()?n.classList.add("ios"):(0,v.isAndroidDevice)()&&n.classList.add("android"),r.appendChild(n),i.addEventListener(Autodesk.Viewing.UI.Control.Event.VISIBILITY_CHANGED,(function(e){e.isVisible?n.classList.add("visible"):n.classList.remove("visible")}));const o=n.querySelector(".explode-slider");o.addEventListener("input",(function(){e.setScale(o.value)})),n.onclick=function(e){e.stopPropagation()};var s=i.container.querySelector(".adsk-control-tooltip");i.onClick=function(){e.isActive()?e.deactivate():(e.activate(),V.logger.track({category:"tool_changed",name:"explode"}))},this._slider=o,this._explodeButton=i,this._explodeSubmenu=n,this._tooltip=s,t.explodeSlider=o,t.explodeSubmenu=n,this._onExplode=this._onExplode.bind(this)}activate(){this._explodeSubmenu.classList.add("visible"),this._explodeButton.setState(a.Button.State.ACTIVE),this._tooltip.style.display="none";let e=this.ext.getScale();this._slider.value=e,this.ext.viewer.addEventListener(l.EXPLODE_CHANGE_EVENT,this._onExplode)}deactivate(){this._explodeButton.setState(a.Button.State.INACTIVE),this._hideSlider(this),this.ext.viewer.removeEventListener(l.EXPLODE_CHANGE_EVENT,this._onExplode)}destroy(){const e=this.ext.viewer;this._slider&&(this._explodeButton&&this._explodeButton.removeFromParent(),this._slider=null,this._explodeButton=null,this._explodeSubmenu=null,this._tooltip=null,e.explodeSlider=null,e.explodeSubmenu=null)}setUIEnabled(e){this._explodeButton&&(e?(this._explodeButton.setState(Autodesk.Viewing.UI.Button.State.INACTIVE),this._wasActive&&this.ext.activate()):(this._wasActive=this.ext.isActive(),this._hideSlider(this),this._explodeButton.setState(Autodesk.Viewing.UI.Button.State.DISABLED)))}_hideSlider(){this._explodeSubmenu.classList.remove("visible"),this._tooltip.style.display=""}_onExplode(e){this._slider.value=e.scale}}var z=Autodesk.Viewing.Private;class H extends r.Extension{constructor(e,t){super(e,t),this.viewer=e,this.options=t,this.name="explode",this.tool=null,this.explodeUI=null}load(){return this.tool=new B(this.viewer),this.viewer.toolController.registerTool(this.tool,this.setActive.bind(this)),!0}unload(){return this.deactivate(),this.explodeUI&&(this.explodeUI.destroy(),this.explodeUI=null),this.viewer.toolController.deregisterTool(this.tool),this.tool=null,!0}onToolbarCreated(e){this.explodeUI=new G(this,e)}activate(){return!!this.isActive()||!!this.explodeUI&&(this.explodeUI.activate(),this.viewer.toolController.activateTool("explode"),!0)}deactivate(){return!this.isActive()||(!this.explodeUI||(this.explodeUI.deactivate(),this.viewer.toolController.deactivateTool("explode"),!0))}isActive(){return this.tool.isActive()}getScale(){return this.tool.getScale()}setScale(e){return this.tool.setScale(e)}getMagnitude(){return this.tool.getMagnitude()}setMagnitude(e){return this.tool.setMagnitude(e)}getDepthDampening(){return this.tool.getDepthDampening()}setDepthDampening(e){return this.tool.setDepthDampening(e)}setStrategy(e){e!==this.getStrategy()&&this.viewer.prefs.set(z.Prefs3D.EXPLODE_STRATEGY,e)}getStrategy(){return this.viewer.prefs.get(z.Prefs3D.EXPLODE_STRATEGY)}setUIEnabled(e){this.explodeUI.setUIEnabled(e),e||this.tool.deactivate(!1)}}function W(e,t){r.Extension.call(this,e,t),this.viewer=e,this.options=t,this.name="fullscreen"}W.prototype=Object.create(r.Extension.prototype),W.prototype.constructor=W;var j=W.prototype;function q(e,t){r.Extension.call(this,e,t),this.viewer=e,this.options=t,this.name="gohome"}j.activate=function(){return this.activeStatus||(this.viewer.nextScreenMode(),this.activeStatus=!0),!0},j.deactivate=function(){return this.activeStatus&&(this.viewer.escapeScreenMode(),this.activeStatus=!1),!0},q.prototype=Object.create(r.Extension.prototype),q.prototype.constructor=q;var X=q.prototype;X.activate=function(){return this.viewer.navigation.setRequestHomeView(!0),!0},X.deactivate=function(){return!1};var Y=i(17016);const K=Autodesk.Viewing,Q=['
','
','
','
','
',"
",'
','
','
',"
",'
','
','
','
',"
","
",'
','
',"
","
",'
','
',"
","
"].join("\n");function Z(){var e,t,i,n,r,o=["fusion orbit","fusion orbit constrained"],s=0,a=1,l=2,c=.005,h=.005,u=1,d={},f=(0,v.isTouchDevice)(),p=!1,m={buttons:[],src:void 0,x:0,y:0,dx:0,dy:0,firstMove:!0,mode:void 0},g=this;this.setViewer=function(e){this.viewer=e,this.navapi=e?e.navigation:null,e&&this.setGlobalManager(e.globalManager)};var y=function(e){m.buttons[e.touches?0:e.button]=!0,m.src=e.target.className,m.x=0,m.y=0,m.dx=0,m.dy=0,m.firstMove=!0,m.mode=void 0,"ring"===m.src?m.mode=l:"edgemark-area"===m.src&&("layout-ver"===e.target.parentNode.className?m.mode=s:"layout-hor"===e.target.parentNode.className&&(m.mode=a)),A(),e.stopPropagation()},b=function(e){m.buttons[e.touches?0:e.button]=!1,m.src=void 0},x=function(e){m.buttons[0]&&(_(e),E(),m.firstMove=!1)},_=function(e){var t=e.touches?e.touches[0].pageX:e.pageX,i=e.touches?e.touches[0].pageY:e.pageY;m.firstMove||(m.dx=t-m.x,m.dy=i-m.y),m.x=t,m.y=i},E=function(){switch(m.mode){case l:if(!g.navapi.isActionEnabled("roll"))return;break;case s:case a:if(!g.navapi.isActionEnabled("orbit"))return}var e=r.target.clone().sub(r.position).normalize(),t=e.clone().cross(r.up).normalize(),i=t.clone().cross(e).normalize();if(r.up.copy(i),m.mode===l){var o=new THREE.Vector3(m.x-d.center.x,m.y-d.center.y,0),f=new THREE.Vector3(m.dx,m.dy,0).add(o);o.normalize(),f.normalize();var p=o.clone().cross(f),v=Math.asin(p.z);r.up.applyAxisAngle(e,-v*u)}else{var y,b;m.mode===s?(b=-m.dx*c,n&&(r.up=Y.Navigation.snapToAxis(r.up.clone())),y=r.up):m.mode===a&&(b=-m.dy*h,n?(m.firstMove&&(r.up=Y.Navigation.snapToAxis(r.up.clone())),y=e.clone().cross(r.up).normalize()):y=t,r.up.applyAxisAngle(y,b));var x=g.navapi.getPivotPoint(),_=r.position.clone().sub(x);_.applyAxisAngle(y,b),r.position.addVectors(x,_);var E=r.target.clone().sub(x);E.applyAxisAngle(y,b),r.target.addVectors(x,E)}r.dirty=!0},S=function(e,t){var i=t||e.clone().sub(r.position).normalize();return new THREE.Plane(i,-i.x*e.x-i.y*e.y-i.z*e.z)},A=function(){var e=r.target.clone().sub(r.position).normalize(),t=S(r.position,e).distanceToPoint(r.pivot);r.pivot.copy(e).multiplyScalar(t).add(r.position)},w=function(e){e.touches||0!==e.button||A()},T=function(){p&&g.viewer.setActiveNavigationTool()},M=function(e,t){var i,n=g.viewer.impl.hitTest(e,t);if(n&&n.intersectPoint)i=n.intersectPoint;else{var o=g.viewer.impl.viewportToRay(g.viewer.impl.clientToViewport(e,t));i=new THREE.Vector3,o.intersectPlane(S(r.target),i)}var s=r.position.clone().sub(function(){var e=r.target.clone().sub(r.position).normalize(),t=g.viewer.impl.rayIntersect(new THREE.Ray(r.position,e));return t&&t.intersectPoint?t.intersectPoint:r.target}()).add(i);g.navapi.setRequestTransition(!0,s,i,r.fov)};this.register=function(){(e=(0,k.stringToDOM)(Q)).style.display="none",this.viewer.canvasWrap.insertBefore(e,this.viewer.canvasWrap.firstChild),(t=e.querySelector(".ring")).addEventListener("mousedown",y),Array.prototype.forEach.call(e.querySelectorAll(".edgemark-area"),(function(e){e.addEventListener("mousedown",y),f&&e.addEventListener("touchstart",y)})),this.addWindowEventListener("mouseup",b),this.addWindowEventListener("mousemove",x),(i=e.querySelector(".outside")).addEventListener("mousedown",T);var n=e.querySelector(".circle");n.addEventListener("mousedown",w),f&&(t.addEventListener("touchstart",y),this.addWindowEventListener("touchend",b),this.addWindowEventListener("touchmove",x),i.addEventListener("touchstart",T),n.addEventListener("touchstart",w)),r=this.viewer.impl.camera},this.deregister=function(){this.removeWindowEventListener("mouseup",b),this.removeWindowEventListener("mousemove",x),i.removeEventListener("mousedown",T),f&&(this.removeWindowEventListener("touchend",b),this.removeWindowEventListener("touchmove",x),i.removeEventListener("touchstart",T)),this.viewer.canvasWrap.removeChild(e),e=void 0,t=void 0,i=void 0},this.activate=function(t){e.style.display="",this.handleResize(),n="fusion orbit constrained"===t;var i=this.viewer.toolController.isToolActivated("hyperlink");i&&this.viewer.toolController.deactivateTool("hyperlink"),n?(this.viewer.setDefaultNavigationTool("orbit"),this.viewer.prefs.set("fusionOrbitConstrained",!0)):(this.viewer.setDefaultNavigationTool("freeorbit"),this.viewer.prefs.set("fusionOrbitConstrained",!1)),i&&this.viewer.toolController.activateTool("hyperlink"),this.viewer.navigation.setZoomTowardsPivot(!0)},this.deactivate=function(){e.style.display="none",this.viewer.navigation.setZoomTowardsPivot(this.viewer.prefs.get("zoomTowardsPivot"))},this.getNames=function(){return o},this.getName=function(){return o[0]},this.update=function(){return!1},this.handleSingleClick=function(e){return M(e.canvasX,e.canvasY),!0},this.handleDoubleClick=function(){return!0},this.handleSingleTap=function(e){return M(e.canvasX,e.canvasY),!0},this.handleDoubleTap=function(){return!1},this.handleKeyDown=function(){return!1},this.handleKeyUp=function(){return!1},this.handleWheelInput=function(){return!1},this.handleButtonDown=function(){return!1},this.handleButtonUp=function(){return!1},this.handleMouseMove=function(e){var t=this.viewer.impl.getCanvasBoundingClientRect(),n=(t.width>t.height?new THREE.Vector2(((e.canvasX+.5)/t.width*2-1)*t.width/t.height,-(e.canvasY+.5)/t.height*2+1):new THREE.Vector2((e.canvasX+.5)/t.width*2-1,(-(e.canvasY+.5)/t.height*2+1)*t.height/t.width)).length()>1.2;return p!==n&&(i.style.cursor=n?"":"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAt1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAzMzP6+vri4uISEhKKioqtra2dnZ2EhIR9fX10dHRkZGQdHR3t7e3Hx8e5ubm1tbWoqKhWVlZKSko4ODgICAjv7+/o6OjMzMyxsbFOTk4pKSkXFxcEBAT29vbW1tZ6enpISEgLCwvhzeX+AAAAGXRSTlMANRO0nHRJHfnskIxQRKh89syDVwTWZjEJxPFEswAAAOFJREFUKM+1j+lygkAQhIflEAJe0Rw9u4CCeKKoSTTX+z9XoMJWWeX+ssrvZ3f19DQ5zOw/0DUMQPlmQ72bE2adBp8/Rp3CQUi3ILx+bxj4fjDs9T1Bmo6bbPPN8aDU4bjJt4nb+de789kSFyxn826jW3ICLNZZKU8nWWbrBTCRVm04U8TpjquRFf1Go0d7l8aYOrUR7FGEFr1S9LGymwthgX2gE/Kl0cHPOtF2xOWZ5QpIC93RflW4InkDoPRXesd5LJIMQPzV7tCMa7f6BvhJL79AVDmYTNQ1NhnxbI/uwB8H5Bjd4zQPBAAAAABJRU5ErkJggg==), auto",p=n),!1},this.handleGesture=function(){return A(),!1},this.handleBlur=function(){return!1},this.handleResize=function(){var i=e.getBoundingClientRect();const n=this.getWindow();d.left=i.left+n.pageXOffset,d.top=i.top+n.pageYOffset,d.width=i.width,d.height=i.height,d.center={},d.center.x=d.left+d.width/2,d.center.y=d.top+d.height/2;var r=.8*(n.innerWidth>n.innerHeight?n.innerHeight:n.innerWidth);e.style.width=e.style.height=r+"px",e.style.top=e.style.left="calc(50% - "+r/2+"px)",t.style.borderWidth=.1*r+"px"}}K.GlobalManagerMixin.call(Z.prototype);const $="fusionfreeorbit",J="fusionorbit";function ee(e,t){r.Extension.call(this,e,t),this.name=J,this.modes=[J,$]}ee.prototype=Object.create(r.Extension.prototype),ee.prototype.constructor=ee;var te=ee.prototype;te.load=function(){var e=this.viewer;return this.tool=new Z,this.tool.setViewer(e),e.toolController.registerTool(this.tool),this._onToolChanged=this._onToolChanged.bind(this),!0},te._updateActiveState=function(e,t){this.activeStatus=e,this.mode=t},te._onToolChanged=function(e){if("fusion orbit constrained"===e.toolName||"fusion orbit"===e.toolName){const t=this._toolbar.getControl(_.TOOLBAR.NAVTOOLSID),i="fusion orbit"===e.toolName?t.freeorbitbutton:t.orbitbutton,n=e.active?a.Button.State.ACTIVE:a.Button.State.INACTIVE;i.setState(n),this._updateActiveState(!n)}},te.onToolbarCreated=async function(e){var t=this,i=this.viewer,n=e.getControl(_.TOOLBAR.NAVTOOLSID);n&&n.orbitbutton||await i.loadExtension("Autodesk.DefaultTools.NavTools",i.config),this._toolbar=e,this.viewer.addEventListener(Autodesk.Viewing.TOOL_CHANGE_EVENT,this._onToolChanged),this.classicBehavior={},this.classicBehavior.orbitOnClick=n.orbitbutton.onClick,this.classicBehavior.freeorbitOnClick=n.freeorbitbutton.onClick,this.classicBehavior.returnToDefault=n.returnToDefault,n.freeorbitbutton.onClick=function(){var e=n.freeorbitbutton.getState();e===a.Button.State.INACTIVE?t.activate($):e===a.Button.State.ACTIVE&&t.deactivate()},n.orbitbutton.onClick=function(){var e=n.orbitbutton.getState();e===a.Button.State.INACTIVE?t.activate(J):e===a.Button.State.ACTIVE&&t.deactivate()},n.returnToDefault=function(){n.orbittoolsbutton&&n.orbittoolsbutton.setState(a.Button.State.ACTIVE)},n.orbittoolsbutton.setState(a.Button.State.INACTIVE),i.prefs.get("fusionOrbitConstrained")?(n.orbittoolsbutton.onClick=n.orbitbutton.onClick,n.orbittoolsbutton.setIcon(n.orbitbutton.iconClass),i.setDefaultNavigationTool("orbit")):(n.orbittoolsbutton.onClick=n.freeorbitbutton.onClick,n.orbittoolsbutton.setIcon(n.freeorbitbutton.iconClass),i.setDefaultNavigationTool("freeorbit")),i.setActiveNavigationTool(),n.returnToDefault&&n.returnToDefault()},te.unload=function(){var e=this.viewer;if(e.removeEventListener(Autodesk.Viewing.TOOL_CHANGE_EVENT,this._onToolChanged),this.classicBehavior){var t=e.getToolbar().getControl(_.TOOLBAR.NAVTOOLSID);t&&(t.orbitbutton&&(t.orbitbutton.onClick=this.classicBehavior.orbitOnClick),t.freeorbitbutton&&(t.freeorbitbutton.onClick=this.classicBehavior.freeorbitOnClick),t.returnToDefault=this.classicBehavior.returnToDefault,t.orbittoolsbutton&&(t.orbitbutton?t.orbittoolsbutton.onClick=t.orbitbutton.onClick:t.orbittoolsbutton.onClick=null,t.orbittoolsbutton.setIcon("adsk-icon-orbit-constrained"),t.orbittoolsbutton.setState(a.Button.State.ACTIVE))),this.classicBehavior=null}return e.setActiveNavigationTool("orbit"),e.setDefaultNavigationTool("orbit"),e.toolController.deregisterTool(this.tool),this.tool.setViewer(null),this.tool=null,this._toolbar=null,!0},te.activate=function(e){if(!this.isActive(e)){switch(e){default:case J:this.viewer.setActiveNavigationTool("fusion orbit constrained"),this.mode=J;break;case $:this.viewer.setActiveNavigationTool("fusion orbit"),this.mode=$}return this.activeStatus=!0,!0}},te.deactivate=function(){return this.activeStatus&&(this.viewer.setActiveNavigationTool(),this.activeStatus=!1),!0},n.theExtensionManager.registerExtension("Autodesk.PropertiesManager",h),n.theExtensionManager.registerExtension("Autodesk.ViewerSettings",p),n.theExtensionManager.registerExtension("Autodesk.ModelStructure",b),n.theExtensionManager.registerExtension("Autodesk.DefaultTools.NavTools",R),n.theExtensionManager.registerExtension("Autodesk.Explode",H),n.theExtensionManager.registerExtension("Autodesk.FullScreen",W),n.theExtensionManager.registerExtension("Autodesk.GoHome",q),n.theExtensionManager.registerExtension("Autodesk.Viewing.FusionOrbit",ee)},15227:e=>{e.exports={externalExtensions:[{src:"./extensions/DeveloperTools/index.js",ids:["Autodesk.DeveloperTools.AABBoxAccuracyLogger","Autodesk.DeveloperTools.Benchmark","Autodesk.DeveloperTools.BoundingVolumeDebugger","Autodesk.DeveloperTools.CameraPathCapture","Autodesk.DeveloperTools.CameraPathRecorder","Autodesk.DeveloperTools.LocalStorageCamera","Autodesk.DeveloperTools.PixelDeviationTest","Autodesk.DeveloperTools.Shortcuts","Autodesk.DeveloperTools.StatisticsOverlay","Autodesk.DeveloperTools.TrackRenderTimings","Autodesk.DeveloperTools.WebGLDrawStatistics","Autodesk.DeveloperTools.WebGLFunctionIntrusion","Autodesk.DeveloperTools.WebGLObjectCounters","Autodesk.DeveloperTools.WebGLResourceSnapshot"]},{src:"./extensions/Wireframes/Wireframes.js",ids:["Autodesk.Viewing.Wireframes"]},{src:"./extensions/ZoomWindow/ZoomWindow.js",ids:["Autodesk.Viewing.ZoomWindow"]},{src:"./extensions/AEC/LibraryExports.js",ids:["Autodesk.AEC.LevelsExtension","Autodesk.AEC.HyperlinkExtension","Autodesk.AEC.DropMeExtension","Autodesk.AEC.CanvasBookmarkExtension","Autodesk.AEC.Minimap3DExtension","Autodesk.AEC.LocationsExtension","Autodesk.AEC.Hypermodeling","Autodesk.AEC.ViewportsExtension","Autodesk.AEC.DisciplinesExtension"]},{src:"./extensions/Pushpins/PushPinExtension.js",ids:["Autodesk.BIM360.Extension.PushPin"]},{src:"./extensions/Hyperlink/Hyperlink.js",ids:["Autodesk.Hyperlink"]},{src:"./extensions/Debug/Debug.js",ids:["Autodesk.Debug"]},{src:"./extensions/BimWalk/BimWalk.js",ids:["Autodesk.BimWalk"]},{src:"./extensions/Section/Section.js",ids:["Autodesk.Section"]},{src:"./extensions/SmartSection/index.js",ids:["Autodesk.SmartSection"]},{src:"./extensions/CompGeom/index.js",ids:["Autodesk.CompGeom"]},{src:"./extensions/Snapping/index.js",ids:["Autodesk.Snapping"]},{src:"./extensions/Beeline/Beeline.js",ids:["Autodesk.Beeline"]},{src:"./extensions/FirstPerson/FirstPerson.js",ids:["Autodesk.FirstPerson"]},{src:"./extensions/webVR/webVR.js",ids:["Autodesk.Viewing.WebVR"]},{src:"./extensions/CAM360/CAM360.js",ids:["Autodesk.CAM360"]},{src:"./extensions/FusionSim/FusionSim.js",ids:["Autodesk.Fusion360.Simulation"]},{src:"./extensions/OMV/OMV.js",ids:["Autodesk.OMV"]},{src:"./extensions/SplitScreen/SplitScreen.js",ids:["Autodesk.SplitScreen"]},{src:"./extensions/CrossFadeEffects/CrossFadeEffects.js",ids:["Autodesk.CrossFadeEffects"]},{src:"./extensions/Edit2D/Edit2D.js",ids:["Autodesk.Edit2D"]},{src:"./extensions/Edit3D/Edit3D.js",ids:["Autodesk.Edit3D"]},{src:"./extensions/VisualClusters/VisualClusters.js",ids:["Autodesk.VisualClusters"]},{src:"./extensions/Moldflow/Moldflow.js",ids:["Autodesk.Moldflow"]},{src:"./extensions/PixelCompare/PixelCompare.js",ids:["Autodesk.Viewing.PixelCompare"]},{src:"./extensions/ScalarisSimulation/ScalarisSimulation.js",ids:["Autodesk.Viewing.ScalarisSimulation"]},{src:"./extensions/Measure/Measure.js",ids:["Autodesk.Measure"]},{src:"./extensions/Markup/Markup.js",ids:["Autodesk.Viewing.MarkupsCore","Autodesk.Viewing.MarkupsGui"]},{src:"./extensions/PDF/index.js",ids:["Autodesk.PDF"]},{src:"./extensions/ReCap/index.js",ids:["Autodesk.ReCap"]},{src:"./extensions/Scalaris/index.js",ids:["Autodesk.Scalaris"]},{src:"./extensions/DocumentBrowser/index.js",ids:["Autodesk.DocumentBrowser"]},{src:"./extensions/Geolocation/index.js",ids:["Autodesk.Geolocation"]},{src:"./extensions/Fusion360/AnimationExtension.js",ids:["Autodesk.Fusion360.Animation"]},{src:"./extensions/NPR/index.js",ids:["Autodesk.NPR"]},{src:"./extensions/DOF/DOFExtension.js",ids:["Autodesk.DOF"]},{src:"./extensions/MSDF/index.js",ids:["Autodesk.MSDF"]},{src:"./extensions/MemoryLimited/MemoryLimited.js",ids:["Autodesk.MemoryLimited"]},{src:"./extensions/ViewCubeUi/ViewCubeUi.js",ids:["Autodesk.ViewCubeUi"]},{src:"./extensions/MemoryLimitedDebug/MemoryManager.js",ids:["Autodesk.Viewing.MemoryLimitedDebug"]},{src:"./extensions/BimMarkups/BimMarkups.js",ids:["Autodesk.BIM360.Markups"]},{src:"./extensions/Minimap2D/Minimap2D.js",ids:["Autodesk.BIM360.Minimap"]},{src:"./extensions/GestureDocumentNavigation/GestureDocumentNavigation.js",ids:["Autodesk.BIM360.GestureDocumentNavigation"]},{src:"./extensions/RollCamera/RollCamera.js",ids:["Autodesk.BIM360.RollCamera"]},{src:"./extensions/LayerManager/LayerManager.js",ids:["Autodesk.LayerManager"]},{src:"./extensions/SceneBuilder/sceneBuilder.js",ids:["Autodesk.Viewing.SceneBuilder"]},{src:"./extensions/Popout/index.js",ids:["Autodesk.Viewing.Popout"]},{src:"./extensions/ProfileUi/index.js",ids:["Autodesk.ProfileUi"]},{src:"./extensions/PropertySearch/PropertySearch.js",ids:["Autodesk.PropertySearch"]},{src:"./extensions/StandardSurface/index.js",ids:["Autodesk.StandardSurface"]},{src:"./extensions/MaterialConverterPrism/index.js",ids:["Autodesk.Viewing.MaterialConverterPrism"]},{src:"./extensions/DWF/index.js",ids:["Autodesk.DWF"]},{src:"./extensions/ModelsPanel/index.js",ids:["Autodesk.ModelsPanel"]},{src:"./extensions/ModelAlignment/index.js",ids:["Autodesk.ModelAlignment","Autodesk.SheetAlignment"],dependencies:["Autodesk.Edit3D"]},{src:"./extensions/ModelAlignmentService/ModelAlignmentService.js",ids:["Autodesk.ModelAlignmentService"]},{src:"./extensions/MixpanelProvider/index.js",ids:["Autodesk.Viewing.MixpanelExtension"]},{src:"./extensions/Crop/Crop.js",ids:["Autodesk.Crop"]},{src:"./extensions/DataVisualization/index.js",ids:["Autodesk.DataVisualization"]},{src:"./extensions/ExtensionsPanel/index.js",ids:["Autodesk.ExtensionsPanel"]},{src:"./extensions/StringExtractor/StringExtractor.js",ids:["Autodesk.StringExtractor"]},{src:"./extensions/ModelSheetTransition/ModelSheetTransition.js",ids:["Autodesk.ModelSheetTransition"]},{src:"./extensions/BoxSelection/BoxSelectionExtension.js",ids:["Autodesk.BoxSelection"]},{src:"./extensions/glTF/index.js",ids:["Autodesk.glTF"]},{src:"./extensions/PropertyQuery/index.js",ids:["Autodesk.PropertyQuery"]},{src:"./extensions/VaultPrintUI/index.js",ids:["Autodesk.Vault.Print"]},{src:"./extensions/VaultMarkupsUI/index.js",ids:["Autodesk.Vault.Markups"],dependencies:["Autodesk.BIM360.Markups"]},{src:"./extensions/DataExchange/DataExchange.js",ids:["Autodesk.DataExchange"]},{src:"./extensions/Multipage/Multipage.js",ids:["Autodesk.Multipage"]},{src:"./extensions/DynamicDimensions/DynamicDimensions.js",ids:["Autodesk.DynamicDimensions"]},{src:"./extensions/Filter/index.js",ids:["Autodesk.Filter"],buildConfig:"./extensions/Filter/webpack.config.js"},{src:"./extensions/CustomProperties/index.js",ids:["Autodesk.CustomProperties"]},{src:"./extensions/Grid/Grid.js",ids:["Autodesk.Grid"]},{src:"./extensions/DataPersistence/persistence.js",ids:["Autodesk.DataPersistence"]},{src:"./extensions/CADLabeling/index.js",ids:["Autodesk.CADLabeling"]}],getExtensionEntryKey:function(e){return e.src.split("/")[2]}}},95062:(e,t,i)=>{"use strict";i.r(t);var n=i(55270),r=i(15227);const o="min.js";r.externalExtensions.forEach((e=>{let t=(0,r.getExtensionEntryKey)(e),i=`extensions/${t}/${t}.${o}`,s=e.dependencies;e.ids.forEach((e=>{n.theExtensionManager.registerExternalExtension(e,i,s)}))})),n.theExtensionManager.registerExternalExtension("Autodesk.DiffTool",`extensions/DiffTool/DiffTool.${o}`)},85403:(e,t,i)=>{"use strict";i.r(t),i.d(t,{analytics:()=>o});var n=i(83081),r=i(75840);const o=new class{constructor(){this.providerMap={},this.instances=[],this.superProps={},this.shouldTrack=!0,this.trackCache=[],this.oneTimers={}}registerProvider(e){if(!e)return void n.logger.error("Undefined provider");if(!e.name)return void n.logger.error("missing provider name");const t=e.name.toLowerCase();this.isProviderRegistered(t)?n.logger.warn(`Provider with name ${e.name} already registered`):this.providerMap[t]=e;const i=this.createInstance(e.name,e.defaultOptions);this.instances.push(i),this.shouldTrack&&this.init(i),this.trackCache.length>0&&(this.trackCache.forEach((e=>{let{event:t,properties:i}=e;this.track(t,i)})),this.trackCache=[])}isProviderRegistered(e){var t;return("string"==typeof e?e:null===(t=e.name)||void 0===t?void 0:t.toLowerCase())in this.providerMap}init(e){e.initialized||(e.init(),e.register(this.superProps))}createInstance(e,t){const i=e&&e.toLowerCase();if(!(i in this.providerMap))return void n.logger.error(`Unknown ${e}`);const o=this.providerMap[i],s=new o(t);if(!(s instanceof r.AnalyticsProviderInterface))throw new Error("not an analytics provider");return o.instanceCount=o.instanceCount||0,s.name=`${i}-${o.instanceCount}`,o.instanceCount++,s}optIn(e){this.instances.forEach((e=>this.init(e))),this._callMethod("optIn",e),this.shouldTrack=!0}optOut(e){this._callMethod("optOut",e),this.shouldTrack=!1}hasOptedOut(){return this._callMethod("hasOptedOut")}getDistinctId(){return this._callMethod("getDistinctId")}track(e,t,i){if(this.shouldTrack){if(i){const i={event:e,properties:t};try{const e=JSON.stringify(i);if(this.oneTimers[e])return;this.oneTimers[e]=!0}catch(e){}}0===this.instances.length?this.trackCache.push({event:e,properties:t}):this._callMethod("track",e,t)}}identify(e){this._callMethod("identify",e)}_callMethod(){for(var e=arguments.length,t=new Array(e),i=0;i({name:e.name,value:e[n](...r)})))}}},75840:(e,t,i)=>{"use strict";i.r(t),i.d(t,{AnalyticsProviderInterface:()=>n});class n{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=e}init(){}register(){}static get name(){return null}static get defaultOptions(){return{}}optIn(e){}optOut(e){}hasOptedOut(){}getDistinctId(){}track(e,t){}identify(e){}}},45775:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Animation:()=>r,interpolateCatmullRom:()=>o});var n=i(93263);function r(e,t,i){this.root=e,this.handler=i.animationHandler,this.data=this.handler.init(t),this.hierarchy=this.handler.parse(e),this.viewer=i.viewer,this.animator=i,this.currentTime=0,this.timeScale=1,this.isPlaying=!1,this.isPaused=!0,this.loop=!1,this.delta=.5,this.interpolationType=n.Y.LINEAR,this.setStartAndEndKeyTime()}function o(e,t){function i(e,t,i,n,r,o,s){var a=.5*(i-e),l=.5*(n-t);return(2*(t-i)+a+l)*s+(-3*(t-i)-2*a-l)*o+a*r+t}var n,r,o,s,a,l,c,h,u,d=[],f=[];return o=(n=(e.length-1)*t)-(r=Math.floor(n)),d[0]=0===r?r:r-1,d[1]=r,d[2]=r>e.length-2?r:r+1,d[3]=r>e.length-3?r:r+2,l=e[d[0]],c=e[d[1]],h=e[d[2]],u=e[d[3]],a=o*(s=o*o),f[0]=i(l[0],c[0],h[0],u[0],o,s,a),f[1]=i(l[1],c[1],h[1],u[1],o,s,a),f[2]=i(l[2],c[2],h[2],u[2],o,s,a),f}i(26206).GlobalManagerMixin.call(r.prototype),r.prototype.setStartAndEndKeyTime=function(){if(this.data.hierarchy.length>0){var e=this.data.hierarchy[0].keys;this.startKeyTime=e[0].time,this.endKeyTime=e[e.length-1].time}else this.startKeyTime=this.endKeyTime=0},r.prototype.keyTypes=[],r.prototype.defaultKey={},r.prototype.play=function(e){this.currentTime=void 0!==e?e:0,this.isPlaying=!0,this.isPaused=!1,this.reset(),this.handler.play(this)},r.prototype.pause=function(){!0===this.isPaused?this.handler.play(this):this.handler.stop(this),this.isPaused=!this.isPaused},r.prototype.stop=function(){this.isPlaying=!1,this.isPaused=!1,this.handler.stop(this)},r.prototype.goto=function(e){this.isPlaying||this.play(),this.isPaused||this.pause();var t=e-this.currentTime;this.update(t)},r.prototype.reset=function(){for(var e=0,t=this.hierarchy.length;es.index;)s=a,a=this.getNextKeyWith(o,e,a.index+1);n.prevKey[o]=s,n.nextKey[o]=a}}this.setStartAndEndKeyTime()},r.prototype.getNextKeyWith=function(e,t,i){var r=this.data.hierarchy[t].keys;for(this.interpolationType===n.Y.CATMULLROM||this.interpolationType===n.Y.CATMULLROM_FORWARD?i=i0?i:0:i>=0?i:i+r.length;i>=0;i--)if(void 0!==r[i][e])return r[i];return this.data.hierarchy[t].keys[r.length-1]},r.prototype.isPlayingOutOfRange=function(){return!1===this.isPaused&&(this.currentTimethis.endKeyTime+this.delta)},r.prototype.resetIfLooped=function(){!0===this.loop&&this.currentTime>this.endKeyTime&&(this.currentTime%=this.endKeyTime,this.reset())}},93263:(e,t,i)=>{"use strict";i.d(t,{Y:()=>n});const n={LINEAR:0,CATMULLROM:1,CATMULLROM_FORWARD:2}},4369:(e,t,i)=>{"use strict";function n(){this.animations=[]}i.r(t),i.d(t,{KeyFrameAnimator:()=>m}),n.prototype.init=function(e){if(!0===e.initialized)return e;for(var t=0;t{this.nodeChildren.push(e)}),!0),r.enumNodeFragments(e.id,(e=>{this.nodeFragments.push(e),n=this.viewer.getFragmentProxy(this.viewer.model,e),n&&(this.fragPointers.push(n),n.setMaterial(this.viewer.matman().cloneMaterial(n.getMaterial(),this.viewer.model)))}),!0),this.nodeId=t,this.epsilon=.1}function f(e,t,i){var n=this;null===e&&(e=function(e,t,i){var r=this.getDocument(),o=n.container=r.createElement("div"),s=e.name;o.id=s,o.style.cursor="pointer",o.style.visibility=i;var a=r.createElement("div");a.id=s+"-txt",a.style.cssText="display: none;position: absolute;z-index: 1;",o.appendChild(a);var c=r.createElement("img"),h=e.custom&&e.custom.att&&1===e.custom.att;c.src=h?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABv1BMVEUAAAAAAAAAAAAAAAABAwEAAAAAAAAjSRkAAAAFDASJqnZhg1IqTyAjSRkpTx8hRxggRRcAAAAhRRcKFwgAAACau4R9mnFmiFUhSBgbOhMZNhIAAAAECQMgQxcAAAAAAAAAAAAHDwXB2q2jw4yfvoivyJ6fuI6mv5eSr4KAoWu2trZpiV3Nzc0wVSUhRxhNT01vb28AAAAgRBcAAAAAAAAAAAAhRxgeQBYAAAAAAAAAAAAfQRbP5MC0zqCqyJKpyJJBYje3z6WxyKOFpXF9nmkrTiG+wb5xkGVcf0xYfEg1WSpNTU0hRhgfQhYfQhZVVVVAQEAXMREcOhQcHBwSJw0AAAAAAAAWLxAVLQ8AAAAAAAAfQhYIEgYAAACbvn+DsGCGsmSUunaItGXc6dStypelxY2ZvX2Ntm2JtGnS48fB17G40aWNuWucxH6ny4mUvnPF27aPuHCEsGHV5czI3Lq52KGvzJqz1JmqyJOqzY6ew4OYwHiGs2OEsWHb29vL4LvM5bnD3q2+3KWkyoaLtWuKtmfOzs7IyMi21pyawXqPuG/g4ODX68fI4rTG4LCu0ZKszJKlx4qZwHuBnXR2iXENcZskAAAAXnRSTlMAEAIBCAsF6BUn+vPu7erjsZyBEwP99/TRk3JgRUQ1IxwO/v79/Pv6+fn09PPq08q7sqWDe2xrY01AMBj+/v7+/v37+fn59fXz8u/c1cbFxLWonZiIcm1lYVdSQT8de/EoFwAAAgVJREFUOMutklVz21AQRiNFlswYs+M6DTdN0kCDZWZmuAKDZFtgiO2YYm6TlOEHV53ptGs5j93Xc+a7e3d36P/W9prdZ/PZ17aPxphz3mR0x91G07wTG8TDo5R3HLGH3S6fGPdSo8Na/to6W2HZBEqwPCNULlu1BkFdQSyKx4qxOMoyDDJSRB/HnTcqWbSbTmVS6V3E57hvXicOBZd1gmfj6Z1kPrmTjrMMfRizumDA+k3UTcRSyWg0mkzFEgLNlU3rIIJcns0KqJjJq0I+U0SqUJlZJv8JugU3J/QnHEwu6MCMqPN1pq+H3sFxCgOC7RyT48Ev6qLUL/gmeJrJ/p0DzSnyxTtAGLMbv9dohv8zSbomSqUpOxB0AdNXsUbnGEEQmJzKq3JrLgCaJAzms5LI1enfVefEamc/YzYQYFB6/1xBUsQex3E9UZHkUvO6X48PwQjLTKEjVRVFqUqd8v6naQsMUCNcL8xTrVJZluXyl1K7OW1+7sL71x15cvVH43O7UGi3mmc8lkCE0ByMbvXazwueycbHxiXPrUdv3hLDGiF8au/d4sO7Novtnj9k0BO45uRGTp98f2JlK/RqYzN8TK8bGTjZLTXgfvDp6rMNA0ZADAOWHI6VTYwE4WAZjz/s3V5yvIxADosIPlh0BNXHSdA8LFIfDgE8WDg5hmmx9h/40fgXth2SDk3yjP4AAAAASUVORK5CYII=":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABvFBMVEUAAAAAAAADAAAAAAAAAAACAAAAAAAAAAC5PznHVE8BAAAAAADbc27NXVeUDQaZDQaRBwAAAAAAAACHBgDuhoHVa2W9RD2QCAKYCAGPBgB0BQAAAAAAAACMBgAAAAADAAD2jonWb2n2jYjYbWfmeXPNzc3RYFqzODKfFA1RUVGKBgCVBwBvb2+WBwCBBgCFBgCWBwCLBgAAAAAAAACMBgCTBwByBQCTBwBbBACEBgAAAAAAAAAoAgBSBADgeHOoOzXmfnnofnjieHPGvr63t7e0tLTidW/ebmnba2XWZWDAT0qRHBfBSkRNTU2aFxGOBgBYTEsAAACNBgBAQEAAAABbBQAcHBxyBQBKBAAAAABfBAAAAAAAAAAsAgAkAgCJBgDZRT3MOTHQPDTVQjrlUkrjUEjRPjbOOjP/bGTvXFTqV0/fTETNOjL5Zl7eS0PzYFjxXlbiT0fUQTn0e3T7aGDWXFXbSEDTRj/PQTrOPjbb29vgamTxY1zoVE3STETTQjvSPzfOzs7IyMj5g3zzaWLXY13XYVrsXlbbU0zg4OD8lZD4gXq0eHXqd3HscWv2b2jrZmDQZWDdWVLkV1C5y9+5AAAAYHRSTlMAAgUBDggMEeDsIBj+8NHJxpxAEP754tDDtIFsYDkvI/78+/j08/DfycfHxbuvr5mTjYN0bWxkWVZTTDUjEfz8+/n59fT08vHw8PDw5NzV0Mq5uLWrm5iLfX1hV0g/ODZEwKduAAACAklEQVQ4y62SVXPbQBzEa1mWZYaY49ihBhtmKjMzw92JLLBsyxxT2mCZvnCVmU59VpO37Ms97G929nb+p05WXUvTE5GJ6aWuY+yFEdoVdAZd9MjCEYi5J0L3FZutSqVZdIYiPWaj/85j2yszAACGVyq7Lo+RIMZtxRaQOZaTwZZSLbrGLR2+aX54twVykpgVpRzgYbVGz5twYMPTV2ZkKZMupDOSzAiwfNazgQesDO9VASemU6lUWuQAgnyNXsEiiBlbEwE2W9CBQpbVAfRraIZoA5ZosII6EpB6MYrVpLxOQejowKsBL9UGSK+zCnnsF4omB7wkBkQHylDZ+rcDROD3hYcYQE0NHQhQ4f8uCQVG/XF9isJKLtI1TYBQQAgdPlqJzYcWMYBYd58/YJACD6UgpsTVA+51AhvKGgt9zQGN1xN4Dajs/vbtmBXf2mIP3/jGqiW9Q0nlGtn8tXBSnwGPWHYP5PcbLMs2JHFn+6p7WQ/ARTie3/rZm9+pZ+rfP/fawi8dhOFgqLlLX87dHOz/1D9ou/vsrcNiNgBrZzbf338yOXZvbDL2xm4ljCdn6j794cpswr/62p+wWy2m/042oQeMxudedK8mSdzGAy4/9vlm/STRtjGRTz9u3nnge2U3+O2h4o9GfXG7lcLKGWZY8ycduG3sQJCk0Tb+w3S0/Qemc4+eJchuZgAAAABJRU5ErkJggg==",c.id=s+"-img",c.style.cssText="display: block;position: absolute;z-index: 1;",o.appendChild(c),t.api.container.appendChild(o),o.addEventListener("click",(function(){a.style.display="none"===a.style.display?"block":"none"}));var u=new l.SphereGeometry(.01),d=new l.MeshPhongMaterial({color:32512,opacity:.6,transparent:!0}),f=new l.Mesh(u,d);return f.visible=!1,void 0===t.overlayScenes.annotation&&t.createOverlayScene("annotation"),t.addOverlay("annotation",f),f}.call(this,t,i.viewer,"hidden")),h.Animation.call(this,e,t,i),this.id=t.name,this.text="",this.state="hidden",this.epsilon=.1,this.viewer.api.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,(function(t){n.updateText(e.position,n.text)}))}function p(e,t,i){this.viewer=i.viewer,null===e&&(e=this.createPolyline([])),h.Animation.call(this,e,t,i),this.epsilon=.1}function m(e,t){this.animations=[],this.viewer=e,this.setGlobalManager(e.globalManager),this.keys=[],this.isPlaying=!1,this.isPaused=!0,this.updateFlag=0,this.duration=t,this.currentTime=0,this.onPlayCallback=null,this.animationHandler=new n,this.areCameraAnimationsPaused=!1,this.UPDATE_SCENE=1,this.UPDATE_CAMERA=2,this.followCam=!0,this._speedMod=1,this._loops=!1}u.prototype=Object.create(h.Animation.prototype),u.prototype.constructor=u,u.prototype.keyTypes=["pos","up","target","fov","perspective"],u.prototype.defaultKey={pos:0,up:0,target:0,fov:0,perspective:0},u.prototype.setFollowCamera=function(e){this.followCam=e},u.prototype.update=(r=[],o=new l.Vector3,s=new l.Vector3,function(e){if(!1!==this.isPlaying&&(this.currentTime+=e*this.timeScale,this.resetIfLooped(),this.followCam&&!this.isPlayingOutOfRange())){for(var t=0,i=this.hierarchy.length;t=this.currentTime){for(d=this.data.hierarchy[t].keys[0],f=this.getNextKeyWith(u,t,1);f.timed.index;)d=f,f=this.getNextKeyWith(u,t,f.index+1);a.prevKey[u]=d,a.nextKey[u]=f}var p=d[u],m=f[u];if(f.time!==d.time&&void 0!==p&&void 0!==m){var g,v=(this.currentTime-d.time)/(f.time-d.time);if(v<0&&(v=0),v>1&&(v=1),"pos"===u)g=n.position;else if("up"===u)g=n.up;else if("target"===u)g=n.target;else{if("fov"===u){n.setFov(p+(m-p)*v);continue}if("perspective"===u){(v>.5?m:p)?n.toPerspective():n.toOrthographic();continue}}if(this.interpolationType===c.Y.LINEAR)s.x=p[0]+(m[0]-p[0])*v,s.y=p[1]+(m[1]-p[1])*v,s.z=p[2]+(m[2]-p[2])*v,g.copy(s);else{r[0]=this.getPrevKeyWith(u,t,d.index-1)[u],r[1]=p,r[2]=m,r[3]=this.getNextKeyWith(u,t,f.index+1)[u],v=.33*v+.33;var y=(0,h.interpolateCatmullRom)(r,v);if(s.x=y[0],s.y=y[1],s.z=y[2],g.copy(s),this.interpolationType===c.Y.CATMULLROM_FORWARD){var b=(0,h.interpolateCatmullRom)(r,1.01*v);o.set(b[0],b[1],b[2]),o.sub(g),o.y=0,o.normalize();var x=Math.atan2(o.x,o.z);n.rotation.set(0,x,0)}}}}n.matrixAutoUpdate=!0,n.matrixWorldNeedsUpdate=!0}n.lookAt(n.target),this.animator.updateFlag|=this.animator.UPDATE_CAMERA}}),d.prototype=Object.create(h.Animation.prototype),d.prototype.constructor=d,d.prototype.keyTypes=["vis","opa"],d.prototype.defaultKey={viz:1,opa:1},d.prototype.getPrevAndNextKeys=function(e,t){let i=this.data.hierarchy[e].keys[0],n=this.getNextKeyWith(t,e,1);for(;n.timei.index;)i=n,n=this.getNextKeyWith(t,e,n.index+1);return{prevKey:i,nextKey:n}},d.prototype.update=function(e){if(!1!==this.isPlaying&&(this.currentTime+=e*this.timeScale,this.resetIfLooped(),!this.isPlayingOutOfRange()))for(var t=0,i=this.hierarchy.length;t=this.currentTime){const{prevKey:e,nextKey:i}=this.getPrevAndNextKeys(t,"vis");r=e,o=i,n.prevKey.vis=r,n.nextKey.vis=o}if(a.time<=this.currentTime||s.time>=this.currentTime){const{prevKey:e,nextKey:i}=this.getPrevAndNextKeys(t,"opa");s=e,a=i,n.prevKey.opa=s,n.nextKey.opa=a}let e=r.vis,i=o.vis;if(void 0!==e&&void 0!==i&&r.time!==o.time){const t=Math.abs(this.currentTime-o.time)1&&(t=1);const n=e+(i-e)*t;for(let e=0;e0&&this.viewer.visibilityManager.setNodeOff(this.nodeId,!1,this.viewer.model,this.nodeChildren,this.nodeFragments)}}},f.prototype=Object.create(h.Animation.prototype),f.prototype.constructor=f,f.prototype.keyTypes=["pos","text","vis"],f.prototype.defaultKey={pos:0,text:"",vis:1},f.prototype.stop=function(){h.Animation.prototype.stop.call(this),this.container.parentNode.removeChild(this.container),this.viewer.removeOverlay("annotation",this.root),this.root=null},f.prototype.updateText=function(e,t){var i=function(e,t,i){var n=e.clone(),r=new l.Matrix4;return t.updateMatrixWorld(),r.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),n.applyProjection(r),{x:(n.x+1)*i.width/2+i.offsetLeft-12,y:(1-n.y)*i.height/2+i.offsetTop+12}}(e,this.viewer.camera,this.viewer.canvas),n=this.getDocument(),r=n.getElementById(this.id+"-txt");r&&(r.innerHTML=t,r.style.left=i.x+"px",r.style.top=i.y+"px",this.text=t),(r=n.getElementById(this.id+"-img"))&&(r.style.left=i.x+"px",r.style.top=i.y-24+"px")},f.prototype.update=function(){var e=[],t=new l.Vector3,i=new l.Vector3;return function(n){if(!1!==this.isPlaying&&(this.currentTime+=n*this.timeScale,this.resetIfLooped(),!this.isPlayingOutOfRange())){var r=this.getDocument();if(this.isPaused&&this.currentTime=this.currentTime){for(f=this.data.hierarchy[o].keys[0],p=this.getNextKeyWith(d,o,1);p.timef.index;)f=p,p=this.getNextKeyWith(d,o,p.index+1);l.prevKey[d]=f,l.nextKey[d]=p}var m=f[d],g=p[d];if(p.time!==f.time&&void 0!==m&&void 0!==g){var v=(this.currentTime-f.time)/(p.time-f.time);if(v<0&&(v=0),v>1&&(v=1),"pos"===d){if(this.interpolationType===c.Y.LINEAR)i.x=m[0]+(g[0]-m[0])*v,i.y=m[1]+(g[1]-m[1])*v,i.z=m[2]+(g[2]-m[2])*v,a.position.copy(i);else if(this.interpolationType===c.Y.CATMULLROM||this.interpolationType===c.Y.CATMULLROM_FORWARD){e[0]=this.getPrevKeyWith("pos",o,f.index-1).pos,e[1]=m,e[2]=g,e[3]=this.getNextKeyWith("pos",o,p.index+1).pos,v=.33*v+.33;var y=(0,h.interpolateCatmullRom)(e,v);if(i.x=y[0],i.y=y[1],i.z=y[2],a.position.copy(i),this.interpolationType===c.Y.CATMULLROM_FORWARD){var b=(0,h.interpolateCatmullRom)(e,1.01*v);t.set(b[0],b[1],b[2]),t.sub(vector),t.y=0,t.normalize();var x=Math.atan2(t.x,t.z);a.rotation.set(0,x,0)}}}else if("text"===d){var _=Math.abs(this.currentTime-p.time)=this.currentTime){for(a=this.data.hierarchy[i].keys[0],c=this.getNextKeyWith(s,i,1);c.timea.index;)a=c,c=this.getNextKeyWith(s,i,c.index+1);r.prevKey[s]=a,r.nextKey[s]=c}var h=a[s],u=c[s];if(c.time!==a.time&&void 0!==h&&void 0!==u){var d=(this.currentTime-a.time)/(c.time-a.time);if(d<0&&(d=0),d>1&&(d=1),"points"===s){var f=d<.5?h:u;this.viewer.removeOverlay("polyline",this.root),this.root=null;for(var p=[],m=0;me.setGlobalManager(this.globalManager))),t){for(var n=0,r=e.hierarchy.length;n0?this.currentTime/this.duration*100:0),this.currentTime>=this.duration&&(this._loops?this.play(0,this.onPlayCallback):this.pause()),t|=this.UPDATE_SCENE),this.updateFlag=0,t},m.prototype.play=function(e,t){if(this.onPlayCallback=t,this.currentTime>=this.duration&&this.goto(0),this.isPlaying)this.pause();else{for(var i=0;ie){i=t[n];break}return i<0?t[t.length-1]:i}(this.currentTime,this.keys);this.goto(e)},m.prototype.prev=function(){var e=function(e,t){for(var i=-1,n=t.length-1;n>-1;n--)if(t[n]{"use strict";i.r(t),i.d(t,{MeshAnimation:()=>d});var n,r,o,s,a,l,c=i(72091),h=i(93263),u=i(45775);function d(e,t,i){u.Animation.call(this,e,t,i),this.localMatrix=new c.Matrix4,this.root.getAnimTransform(),this.relativeTransform=!t.custom||!t.custom.transform||"abs"!==t.custom.transform}d.prototype=Object.create(u.Animation.prototype),d.prototype.constructor=d,d.prototype.keyTypes=["pos","rot","scl"],d.prototype.defaultKey={pos:0,rot:0,scl:0},d.prototype.update=(n=[],r=new c.Vector3,o=new c.Vector3,s=new c.Quaternion,a=new c.Matrix4,l=new c.Matrix4,function(e){if(!1!==this.isPlaying&&(this.currentTime+=e*this.timeScale,this.resetIfLooped(),!this.isPlayingOutOfRange()))for(var t=0,i=this.hierarchy.length;t=this.currentTime){for(m=this.data.hierarchy[t].keys[0],g=this.getNextKeyWith(p,t,1);g.timem.index;)m=g,g=this.getNextKeyWith(p,t,g.index+1);d.prevKey[p]=m,d.nextKey[p]=g}var v=m[p],y=g[p];if(g.time!==m.time&&void 0!==v&&void 0!==y){var b=(this.currentTime-m.time)/(g.time-m.time);if(b<0&&(b=0),b>1&&(b=1),"pos"===p)if(this.interpolationType===h.Y.LINEAR)o.x=v[0]+(y[0]-v[0])*b,o.y=v[1]+(y[1]-v[1])*b,o.z=v[2]+(y[2]-v[2])*b,c.position.copy(o);else{n[0]=this.getPrevKeyWith("pos",t,m.index-1).pos,n[1]=v,n[2]=y,n[3]=this.getNextKeyWith("pos",t,g.index+1).pos,b=.33*b+.33;var x=(0,u.interpolateCatmullRom)(n,b);if(o.x=x[0],o.y=x[1],o.z=x[2],c.position.copy(o),this.interpolationType===h.Y.CATMULLROM_FORWARD){var _=(0,u.interpolateCatmullRom)(n,1.01*b);r.set(_[0],_[1],_[2]),r.sub(vector),r.y=0,r.normalize();var E=Math.atan2(r.x,r.z);c.rotation.set(0,E,0)}}else"rot"===p?(s.slerpQuaternions(v,y,b),c.quaternion.copy(s)):"scl"===p&&(o.x=v[0]+(y[0]-v[0])*b,o.y=v[1]+(y[1]-v[1])*b,o.z=v[2]+(y[2]-v[2])*b,c.scale.copy(o))}}if(!this.relativeTransform){var S=a.compose(c.position,c.quaternion,c.scale),A=l;c.getOriginalWorldMatrix(A),A.invert(),a.multiplyMatrices(S,A).decompose(c.position,c.quaternion,c.scale)}c.updateAnimTransform()}})},56197:(e,t,i)=>{"use strict";i.r(t),i.d(t,{AggregatedView:()=>E});var n=i(8600),r=i(55280),o=i(6684),s=i(38842);const a=Autodesk.Viewing,l=a.Private,c={BimWalk:"Autodesk.BimWalk",Bookmarks:"Autodesk.AEC.CanvasBookmarkExtension",Levels:"Autodesk.AEC.LevelsExtension",CrossFade:"Autodesk.CrossFadeEffects",Hyperlinks:"Autodesk.AEC.HyperlinkExtension",Minimap:"Autodesk.AEC.Minimap3DExtension",DropMe:"Autodesk.AEC.DropMeExtension",ZoomWindow:"Autodesk.Viewing.ZoomWindow",FusionOrbit:"Autodesk.Viewing.FusionOrbit",Disciplines:"Autodesk.AEC.DisciplinesExtension",DiffTool:"Autodesk.DiffTool",ModelStructure:"Autodesk.ModelStructure",ModelAlignment:"Autodesk.ModelAlignment",SheetAlignment:"Autodesk.SheetAlignment",ModelSheetTransition:"Autodesk.ModelSheetTransition"},h={ALIGNMENT_SERVICE_FAILED:"alignmentServiceFailure",ENVIRONMENT_CHANGED:"environmentChanged"},u={LocalStorage:()=>new Autodesk.ModelAlignmentService.AlignmentServiceLS},d=[c.ModelAlignment,c.SheetAlignment],f=e=>{return e instanceof a.BubbleNode?e.getModelKey():e instanceof a.Model?null===(t=e.getDocumentNode())||void 0===t?void 0:t.getModelKey():"string"==typeof e?e:void console.error("makeKey: Input must be key, model, or BubbleNode");var t},p=e=>isFinite(e.x)&&isFinite(e.y)&&isFinite(e.z),m=e=>{let t=e.getUpVector();return t&&(new THREE.Vector3).fromArray(t)},g=e=>p(e.position)&&p(e.target)&&p(e.up)&&isFinite(e.orthoScale),v=(e,t,i)=>{let n=0;const r=new THREE.Vector3;for(let o=0;o50*a||n++}return n},y={enabled:!1,diffBubbles:void 0,primaryBubbles:void 0,diffBubbleLabel:void 0,primaryBubbleLabel:void 0,progressCallback:void 0,supportBubbles:void 0,refNames:void 0,customCompute:void 0},b=(e,t)=>{let i=e.getVisibleModels();i=i.filter((e=>{return t=e.getBoundingBox(),p(t.min)&&p(t.max);var t}));let n,r,o,s,a=e.impl.camera.clone(),l=new Autodesk.Viewing.Private.FrustumIntersector;const c=new THREE.Vector3;for(let e=0;e=o)&&(r=h,o=d,s=t)}r&&(r.pivot=r.target,r.worldup=n,r.fov=45,t&&t(r,s),e.autocam.sync(r),e.autocam.setHomeViewFrom(r))};class x{constructor(e){this.color=e,this.enabled=!0,this.active=!1}setEnabled(e,t){t!==this.enabled&&(this.enabled=t,this.active&&!t?(e.clearThemingColors(),this.active=!1):this.update(e))}update(e){if(this.active||!this.enabled)return;const t=e.myData.fragments.fragId2dbId;for(let i=0;i1&&void 0!==arguments[1]?arguments[1]:{};return t.useConsolidation=void 0===t.useConsolidation||t.useConsolidation,this.initViewerInstance(e,t),this.memTracker=new a.ModelMemoryTracker(this.viewer,t.memoryLimit),this.viewer.impl.showTransparencyWhenMoving(),t.useDynamicGlobalOffset&&(this.dynamicGlobalOffset=new o.DynamicGlobalOffset(this.viewer)),this.options=t,this._registerLmvEventListeners(),this._loadExtensions()}initViewerInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=t.viewerClass||(t.headlessViewer?a.Viewer3D:a.GuiViewer3D);let n=t.viewerConfig||{};n.disabledExtensions=n.disabledExtensions||{},n.disabledExtensions.hyperlink=!0,t.multiViewerFactory?this.viewer=t.multiViewerFactory.createViewer(e,t.viewerConfig,i):this.viewer=new i(e,t.viewerConfig),this.viewer.start(void 0,void 0,void 0,void 0,t.viewerStartOptions),t.propagateInputEventTypes&&(this.viewer.toolController.propagateInputEventTypes=t.propagateInputEventTypes,this.viewer.canvas.style.outline="none")}destroy(){var e;this.dynamicGlobalOffset=null,this.memTracker=null,this.modelItems=null,null===(e=this.viewer)||void 0===e||e.finish(),this.viewer=null,a.getGlobal().LMV_MAIN_VIEW=null}_onError(){console.error(...arguments)}reset(){this.hideAll(),this.pendingCamera=null,this.cameraInitialized=!1,this.resetOnNextModelAdd=!0,this._stopActiveTools(),this._unloadDiffTool(!0),this.refPoint=void 0,this.loadersInProgress={}}getModel(e){const t=this._getItem(e);return t&&t.model}getModelAndWait(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new Promise((i=>{const n=()=>{const t=this.getModel(e);if(t)return this.viewer.removeEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,n),this.onLoad.splice(this.onLoad.indexOf(n),1),i(t)};if(!(t&&!this.isVisible(e))){const t=this.getModel(e);if(t)return i(t)}this.viewer.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,n),this.onLoad.push(n)}))}isEmpty(){return!this.getVisibleNodes().length}_initForEnvironmentChange(e,t){if(this.areAllNodes2D()&&e.is3D()){let i;if(this.is3D=t,!t){const t=e=>e.visible&&e.node&&e.node.is2D();i=Object.values(this.modelItems).filter(t)[0],e=i.node}this._updateExtensions(e),this._updateRefPoint(e),t?(this.resetOnNextModelAdd=!0,this.resetTriggeringBubble=e):i.model&&(this._resetOnModeSwitch(i.model),this.viewer.impl.setUp2DMode(i.model,!1),this.viewer.getExtension("Autodesk.ViewCubeUi",(e=>e.displayViewCube(!1,!1)))),this.fireEvent({type:h.ENVIRONMENT_CHANGED,is3D:this.is3D})}}_needsReset(e){return!!this.resetOnNextModelAdd&&(!this.resetTriggeringBubble||this.resetTriggeringBubble===e)}async show(e,t){this.isEmpty()?this._initForFirstViewable(e):this._initForEnvironmentChange(e,!0);const i=e.getModelKey();let n,r=this.getModel(i);var o;r?(this.viewer.updateViewerStateForPdfReload(e),this.modelItems[i].visible=!0,this._showModel(r),n=Promise.resolve(r)):(n=null===(o=this.modelItems[i])||void 0===o?void 0:o.loadingPromise,n||(n=this.load(e,t)),this.modelItems[i].visible=!0);return this._updateModelTimestamps(),await this._consolidateVisibleModels(),n}hide(e){let t=this._getItem(e);t&&(!this.options.unloadUnfinishedModels||t.model&&t.model.isLoadDone()?t.model&&this.viewer.hideModel(t.model.id):this.unload(t.node),t.visible=!1,b(this.viewer,this.options.cameraValidator),this._updateUpVector(),this._cleanupModels(),this._initForEnvironmentChange(t.node,!1))}isVisible(e){const t=this._getItem(e);return t&&t.visible}hideAll(){for(let e in this.modelItems)this.hide(e)}getVisibleNodes(){let e=[];for(let t in this.modelItems){let i=this.modelItems[t];i.visible&&e.push(i.node)}return e}areAllNodes2D(){const e=this.getVisibleNodes();return!!e.length&&e.every((e=>!(e instanceof Autodesk.Viewing.BubbleNode)||e.is2D()))}isOtgManifestMissing(e){if(e.is2D())return!1;let t=e.getOtgGraphicsNode();if(t&&!t.error)return!1;if(t?this._onError(`Otg translation failed for viewable '${e.name()}'. Error:`,t.error):this._onError(`Otg node missing for viewable '${e.name()}'.`),this.onViewerNotification){const t=a.i18n.t("Model translation failed for view '%(viewableName)'",{viewableName:e.name()});this.onViewerNotification("error",t)}return!0}load(e){var t,i;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const r=f(e);let o=this.modelItems[r];if(o||(o={model:null,node:e,visible:!1,url:null,loadingPromise:null,error:!1},this.modelItems[r]=o),o.loadingPromise)return o.loadingPromise;if(o.model)return Promise.resolve(o.model);if(this.options.disableSvf&&this.isOtgManifestMissing(e))return o.error=!0,Promise.reject("OTG manifest missing");if(o.error)return Promise.reject("Model load failed already");if(e.is3D()){if(this.waitForFirstModel)return new Promise(((e,t)=>{this.loadPendingPromises[r]={resolve:e,reject:t}}));this.options.ignoreGlobalOffset||this.globalOffset||(this.waitForFirstModel=!0)}let s=e.getRootNode().getDocument();const l={globalOffset:this.globalOffset,applyRefPoint:!0,applyScaling:this.options.viewerUnits,isAEC:!0,loadAsHidden:!0,bubbleNode:e,disablePrecomputedNodeBoxes:!0,preserveView:!0,onFragmentListLoadProgress:()=>this._updateDiffLoadProgress(),disable3DModelLayers:!0,keepCurrentModels:!0,headlessViewer:this.options.headlessViewer,leafletOptions:{fitPaperSize:!0}},c=this._onModelLoaded.bind(this),h=t=>this._onModelLoadFailed(e,t),u=null===(t=(i=this.options).getCustomLoadOptions)||void 0===t?void 0:t.call(i,e);return u&&Object.assign(l,u),n&&Object.assign(l,n),l.bvhOptions=a.Viewer3D._getDefaultBVHOptions(Object.assign({useConsolidation:!0},l)),l.useConsolidation=!1,o.loadingPromise=new Promise(((t,i)=>{this._applyAlignmentService(e,l).then((()=>(this.viewer||i(),this.viewer.loadDocumentNode(s,e,l)))).then((e=>{this.viewer||i(),c(e),t(e)})).catch((e=>{h(e),i(e)}))})),o.loadingPromise}unloadUnderlayRaster(e){const t=this.viewer.getUnderlayRaster(e);t&&this.viewer.unloadModel(t)}unload(e){this.unloadUnderlayRaster(e),this.viewer.unloadDocumentNode(e);const t=this._getItem(e);t&&(t.loadingPromise&&this._onModelLoadEnded(t),t.model&&delete this.loadersInProgress[t.model.id]);let i=f(e);delete this.modelItems[i];const n=this.modelThemingStates[i];n&&(n.active=!1),this.onUnload.forEach((t=>t(e)))}unloadAll(e){let t=Object.keys(this.modelItems).slice();for(var i=0;i!this.isVisible(e)));let n={};e.forEach((e=>{n[e.getModelKey()]=!0}));this.getVisibleNodes().filter((e=>void 0===n[e.getModelKey()])).forEach((e=>{this.hide(e)}));const r=i.map((e=>this.show(e)));return this._setDiff(t),Promise.all(r)}getFloorSelector(){return this.levelsExtension&&this.levelsExtension.floorSelector}setBookmarks(e){this.bookmarks=e,this._updateBookmarks()}isLoadDone(){for(let e in this.modelItems){const t=this.modelItems[e],i=t&&t.model,n=!i&&!t.error,r=i&&!i.isLoadDone(),o=i&&i.getPropertyDb()&&!i.getPropertyDb().isLoadDone(),s=l.TextureLoader.requestsInProgress()>0;if(n||r||o||s)return!1}return!0}waitForLoadDone(){return new Promise((e=>{this.isLoadDone()&&e();const t=()=>{this.isLoadDone()&&(this.viewer.removeEventListener(a.GEOMETRY_LOADED_EVENT,t),this.viewer.removeEventListener(a.OBJECT_TREE_CREATED_EVENT,t),this.viewer.removeEventListener(a.TEXTURES_LOADED_EVENT,t),this.onUnload.splice(this.onUnload.indexOf(t),1),e())};this.viewer.addEventListener(a.GEOMETRY_LOADED_EVENT,t),this.viewer.addEventListener(a.OBJECT_TREE_CREATED_EVENT,t),this.viewer.addEventListener(a.TEXTURES_LOADED_EVENT,t),this.onUnload.push(t)}))}setAlignmentService(e){this.alignmentService=e,d.forEach((e=>this._connectModelAlignment(e)))}async fetchAlignments(e){if(!this.isUsingAlignmentService())return;const t=(async()=>{const t=await this.getAlignmentService();await t.fetchItems(e)})();return this.pendingAlignmentFetches.push(t),await t}fetchAlignmentsForNodes(e){const t=null==e?void 0:e.filter((e=>e.is3D())),i=null==t?void 0:t.map((e=>e.getRootNode().urn()));this.fetchAlignments(i)}static findDiffSupportModel(e){if(!e.is2D())return null;const t=e.data.phaseNames,i=Array.isArray(t)?t[0]:t;return i?e.getMasterView(i):(console.warn(`A sheet node must have a phase name. Missing for sheet: ${e.name}`),null)}static findDiffSupportModels(e){e.supportBubbles.diff=E.findDiffSupportModel(e.diffBubbles[0]),e.supportBubbles.primary=E.findDiffSupportModel(e.primaryBubbles[0])}updateHomeCamera(){b(this.viewer,this.options.cameraValidator)}_setDiff(e){if(e){Object.assign(this.diff,e,{enabled:!0});const t=e.supportBubbles;if(t)if(t.autoDetect&&E.findDiffSupportModels(e),t.diff&&t.primary)this.load(t.primary),this.load(t.diff);else{const t=e.diffBubbles&&e.diffBubbles[0];t&&t.is2D()&&console.warn("Could not find support models for 2D diff."),this.diff.supportBubbles=null}!e.empty&&e.progressCallback&&this._signalDiffLoadProgress(0,!0),this.diffStartTime=performance.now()}else Object.assign(this.diff,y);this.diffNeedsUpdate=!0,this._updateDiff()}_updateUpVector(){let e;if(this.areAllNodes2D())e=new THREE.Vector3(0,1,0);else{const t=e=>e.visible&&e.node&&e.node.is3D(),i=Object.values(this.modelItems).filter(t)[0];e=i&&i.model?m(i.model):new THREE.Vector3(0,0,1)}this.viewer.navigation.setWorldUpVector(e,!1,!0)}_showModel(e){if(e.is3d()&&!e.hasGeometry()){const t=e.getDocumentNode().getRootNode().children[0].name();return void console.warn("Ignored model with empty geometry: ",t)}this.viewer.showModel(e.id,!0),b(this.viewer,this.options.cameraValidator),this._updateUpVector()}_resetOnModeSwitch(e){this.viewer.getExtension(c.ZoomWindow)&&this.viewer.unloadExtension(c.ZoomWindow),this.options.headlessViewer||this.viewer.createUI(e,!0);const t=this.viewer.setNavigationLock(!1);this.viewer.activateDefaultNavigationTools(!this.is3D),this.viewer.setNavigationLock(t),this.viewer.navigation.setIs2D(!this.is3D),this._loadExtension(c.ZoomWindow).catch((e=>this._onError(e))),this._startBimWalkWhenReady()}_onModelAdded(e){const t=e.model;if(this.cameraInitialized||this._initCamera(t),t.getData().underlayRaster)return;t.is3d()&&this.options.useDynamicGlobalOffset&&(t.setGlobalOffset(this.viewer.impl.camera.globalOffset),this.viewer.impl.onModelTransformChanged(t));const i=e.model.getDocumentNode();if(this._needsReset(i)&&(this.resetTriggeringBubble=null,this.resetOnNextModelAdd=!1,this._resetOnModeSwitch(t)),(e=>{const t=e.getData(),i=t.loadOptions.bubbleNode;if(e.is3d()&&t.metadata.stats&&!t.metadata.stats.num_fragments){const e=i.name(),t=i.getRootNode().children[0].name();console.warn(`Empty View "${e}" in model "${t}".`)}})(t),i){const e=i.getModelKey();delete this.modelIsGhosted[e],this._updateGhosting()}}async _onGeometryLoaded(e){await this._consolidateVisibleModels(),this._updateDiff(),this.loadersInProgress[e.model.id]=100}_onExtensionLoaded(e){const t=e.extensionId;this._startBimWalkWhenReady(),t===c.Levels&&(this.levelsExtension=this.viewer.getExtension(c.Levels)),t===c.Bookmarks&&this._updateBookmarks(),d.includes(t)&&this.alignmentService&&this._connectModelAlignment(t)}_registerLmvEventListeners(){this.viewer.addEventListener(a.GEOMETRY_LOADED_EVENT,this._onGeometryLoaded.bind(this)),this.viewer.addEventListener(a.MODEL_ADDED_EVENT,this._onModelAdded.bind(this)),this.viewer.addEventListener(a.EXTENSION_LOADED_EVENT,this._onExtensionLoaded.bind(this)),this.viewer.addEventListener(a.PROGRESS_UPDATE_EVENT,this._onProgressUpdate.bind(this)),this.viewer.addEventListener(a.MODEL_ROOT_LOADED_EVENT,this._updateDiff.bind(this))}async _consolidateVisibleModels(){if(this._cleanupModels(),(0,r.isMobileDevice)()&&!this.viewer.impl.useDeferredConsolidation)return;let e=(0,n.getParameterByName)("useConsolidation");if("false"===e||!1===this.options.useConsolidation&&"true"!==e)return;if(this.viewer.impl.isWebGPU())return t="Consolidation is currently not supported for WebGPU",void(_.has(t)||(console.warn(t),_.add(t)));var t;const i=this.viewer.getVisibleModels();for(let e=0;e{const t=e.getDocumentNode(),i=this._getItem(t);i&&i.visible||this.unload(t)}))}_updateModelTimestamps(){let e=this.viewer.getVisibleModels().slice();const t=this._getDiffSupportModels();this.diff.enabled&&t&&(t.diff&&e.push(t.diff),t.primary&&e.push(t.primary)),this.memTracker.updateModelTimestamps(e)}_stopActiveTools(){const e=this.viewer.getExtension("Autodesk.Section");e&&e.isActive()&&e.enableSectionTool(!1),this.stopBimWalk();const t=!this.options.headlessViewer&&this.viewer.getPropertyPanel(!1);t&&t.isVisible()&&t.setVisible(!1)}_onModelLoaded(e){let t=this._getItem(e);t&&(e.is3d()&&(this.options.useDynamicGlobalOffset?e.setGlobalOffset(this.viewer.impl.camera.globalOffset):this.waitForFirstModel&&!this.options.ignoreGlobalOffset&&(this.globalOffset=(new THREE.Vector3).copy(e.myData.globalOffset),this._onGlobalOffsetChanged())),t.model=e,t.visible&&this._showModel(t.model),this._updateModelTimestamps(),this._updateDiffLoadProgress(),this._updateModelTheming(e),this._onModelLoadEnded(t))}_onModelLoadFailed(e,t){this._onError(`Failed to load model: ${e.name()}. Error code: ${t}`);const i=this._getItem(e);i&&(i.error=!0,this._onModelLoadEnded(i))}_onModelLoadEnded(e){e.loadingPromise=null;const t=e.node;t.is3D()&&this.waitForFirstModel&&(this.waitForFirstModel=!1,Object.keys(this.loadPendingPromises).forEach((e=>{var t;const i=null===(t=this.modelItems[e])||void 0===t?void 0:t.node;if(!i)return;const{resolve:n,reject:r}=this.loadPendingPromises[e];this.load(i).then((e=>{n(e)})).catch((e=>{r(e)}))})),this.loadPendingPromises={}),this.onLoad.forEach((e=>e(t)))}_initCamera(e,t){this.viewer.impl.setViewFromFile(e,!t),this.options.cameraValidator&&this.options.cameraValidator(this.viewer.impl.camera,e),this.viewer.impl.controls.recordHomeView(),this.cameraInitialized=!0,this.pendingCamera&&this._applyPendingCameraWhenReady()}_getItem(e){var t;let i=f(e);return null===(t=this.modelItems)||void 0===t?void 0:t[i]}_updateRefPoint(e){if(this.options.useDynamicGlobalOffset)return;if(!(this.isEmpty()||this.areAllNodes2D())||!e.is3D()||this.options.ignoreGlobalOffset)return;const t=e.getAecModelData();if(!t)return;let i=t.refPointTransformation;if(!i)return;const n={x:i[9],y:i[10],z:0};if(this.isUsingAlignmentService()){var r;const t=e.getRootNode().urn(),i=null===(r=this.alignmentService)||void 0===r?void 0:r.getTransform(t);if(void 0===i)return;i&&(n.x=i.elements[12],n.y=i.elements[13])}if(this.refPoint=n,this.options.viewerUnits){const e=Autodesk.Viewing.Private.convertUnits("ft",this.options.viewerUnits,1,1);this.refPoint.x*=e,this.refPoint.y*=e,this.refPoint.z*=e}const o=this.globalOffset&&THREE.Vector3.prototype.distanceToSquared.call(this.refPoint,this.globalOffset);(!this.globalOffset||o>4e6)&&(this.globalOffset=(new THREE.Vector3).copy(this.refPoint),this.unloadAll((e=>e.model&&e.model.is3d())),this._onGlobalOffsetChanged())}_onGlobalOffsetChanged(){const e=this.viewer.getExtension(c.Bookmarks);e&&e.resetGlobalOffset(this.globalOffset)}_getDefaultExtensions(){return[{name:c.CrossFade,getLoadingCondition:()=>!a.isMobileDevice()},{name:c.Levels,getOptions:()=>this.viewer.config},{name:c.ModelStructure,getOptions:()=>this.viewer.config},{name:c.Hyperlinks,getOptions:()=>({loadViewableCb:(e,t)=>{this.onHyperlink?this.onHyperlink(e,t):this.switchView([e])}})},{name:c.Minimap,getLoadingCondition:()=>!this.options.disableMinimap,getOptions:()=>({trackUsage:this._trackMinimapUsage?this._trackMinimapUsage.bind(this):void 0})},{name:c.Bookmarks,getLoadingCondition:()=>this.is3D,getOptions:()=>({globalOffset:this.globalOffset,onBookmark:(e,t)=>{this.onBookmark?this.onBookmark(e,t):this.switchView([e]),t.isPerspective&&this.startBimWalk()},clusterfck:this.options.clusterfck,clusteringThreshold:110})},{name:c.DropMe,getLoadingCondition:()=>!1===this.is3D,getOptions:()=>({enableGuidance:!0,onDrop:this._handleDropMe.bind(this),getTransformForNode:this._getTransformForNode.bind(this),getMain3DView:this._findMain3DView.bind(this),onHandleViewIn3D:this._handleViewIn3D.bind(this)})}]}async _loadExtensions(){this.extensions=this.options.extensions||this._getDefaultExtensions();const e=[];return this.extensions.forEach((t=>{t.getLoadingCondition&&!t.getLoadingCondition(this)||(e.push(this._loadExtension(t.name,t.getOptions&&t.getOptions(this),t.onLoadedCB)),this.extensionLoaded[t.name]=!0)})),Promise.all(e)}async _loadExtension(e,t,i){if(this.viewer.impl.isWebGPU()&&["Autodesk.AEC.LevelsExtension","Autodesk.CrossFadeEffects","Autodesk.AEC.Minimap3DExtension","Autodesk.SheetAlignment"].includes(e))return void console.warn("Skipped extension because it does not support WebGPU yet: ",e);const n=this.options.extensionOptions,r=n&&n[e],o=Object.assign({},t,r),s=this.viewer.loadExtension(e,o);return i&&s.then((e=>{i(this,e)})).catch((e=>{i(this,null,e)})),s}_updateExtensions(e){const t=(e,t,i,n,r)=>{const o=this.extensionLoaded[e];!o&&i?this._loadExtension(e,t,n).catch((e=>this._onError(e))):o&&!i&&(r&&r(this),this.viewer.unloadExtension(e)),this.extensionLoaded[e]=i};this.extensions.forEach((i=>{i.getLoadingCondition&&t(i.name,i.getOptions&&i.getOptions(this),i.getLoadingCondition(this,e),i.onLoadedCB,i.onBeforeUnloadCB)}))}_initForFirstViewable(e){this.is3D!==e.is3D()&&(this.resetOnNextModelAdd||(this.reset(),this.resetTriggeringBubble=e),this.is3D=e.is3D()),this._updateExtensions(e),this._updateRefPoint(e)}_updateBookmarks(){let e=this.viewer.getExtension(c.Bookmarks);e&&e.resetBookmarks(this.bookmarks)}_applyPendingCameraWhenReady(){if(!this.cameraInitialized)return;let e=this.pendingCamera;this.pendingCamera=null;let t=this.viewer.impl.camera;e.position&&t.position.copy(e.position),e.target&&t.target.copy(e.target),e.up&&t.up.copy(e.up),e.fov&&(t.fov=e.fov),void 0!==e.isPerspective&&(t.isPerspective=e.isPerspective);const i=this.globalOffset||this.viewer.model.getData().globalOffset;!this.is3D||this.options.ignoreGlobalOffset||e.ignoreGlobalOffset||(t.position.sub(i),t.target.sub(i)),this.viewer.impl.syncCamera()}_findMain3DView(e){const t=e.getMasterViews();if(t[0])return t[0];const i=null==e?void 0:e.getRootNode();if(!i)return;const n=null==i?void 0:i.search(a.BubbleNode.MODEL_NODE),r=n.filter((e=>e.name().toLowerCase().startsWith("{3d")))[0];return r||n[0]}_handleDropMe(e,t,i,n,r){if(this.onDrop)this.onDrop(e,t,i,n);else if(n){if(this.switchView(n),e&&t){let i={position:e,target:e.clone().add(t),isPerspective:!0,ignoreGlobalOffset:r};this.setCameraGlobal(i)}}else console.warn("DropMe handler: Document does not contain a 3D view to switch to")}async _handleViewIn3D(e,t,i,n){if(i&&!this.options.ignoreGlobalOffset){const i=this.globalOffset||this.viewer.model.getData().globalOffset;e=e.clone().add(i),t=t.clone().add(i)}let r={position:e,target:t,isPerspective:!0};this.setCameraGlobal(r);const o=await this.viewer.getExtensionAsync(c.BimWalk);o.activate(),o.disableGravityUntilNextMove(),n&&n()}_startBimWalkWhenReady(){if(!this.bimWalkStartPending)return;let e=!this.resetOnNextModelAdd,t=this.viewer.getExtension(c.BimWalk),i=this.viewer.getExtension(c.FusionOrbit);e&&t&&i&&(t.activate(),this.bimWalkStartPending=!1)}_unloadDiffTool(e){this.viewer.getExtension(c.DiffTool)&&(e&&(this.diffCache.length=0),this.viewer.unloadExtension(c.DiffTool))}_onProgressUpdate(e){e.model&&e.state===a.ProgressState.LOADING&&(this.loadersInProgress[e.model.id]=e.percent,this._updateDiffLoadProgress())}_getDiffSupportModels(){if(this.diff.supportBubbles)return{diff:this.getModel(this.diff.supportBubbles.diff),primary:this.getModel(this.diff.supportBubbles.primary)}}_diffSupportModelsReady(){const e=this._getDiffSupportModels(),t=e.diff&&e.diff.isLoadDone(),i=e.primary&&e.primary.isLoadDone();return t&&i}_updateGhosting(){let e={};this.diff.enabled&&this.diffBubbles&&(e=this.diffBubbles.forEach((t=>e[t.getModelKey()])));for(let t in this.modelItems){let i=this.getModel(t);if(!i)continue;let n=this.diff.enabled&&!e[t];n!=!!this.modelIsGhosted[t]&&(i.setAllVisibility(!n),n?this.modelIsGhosted[t]=!0:delete this.modelIsGhosted[t])}this.viewer.refresh(!0)}getModels(e){return e.map((e=>this.getModel(e)))}setModelTheming(e){e=e||{};const t=this.modelThemingStates;this.modelThemingStates={};for(let i in e){let n=t[i];const r=e[i],o=this.getModel(i);if(n){!n.color.equals(r)&&(n.color.copy(r),n.active=!1)}else n=new x(r);this.modelThemingStates[i]=n,o&&this._updateModelTheming(o)}for(let i in t){const n=t[i],r=!e[i],o=this.getModel(i);r&&n.active&&o&&this.viewer.clearThemingColors(o)}}_signalDiffLoadProgress(e,t){if(t||e!==this._lastDiffLoadPercent){const t=a.i18n.t("Loading Model for Change Visualization");this.diff.progressCallback(e,t),this._lastDiffLoadPercent=e}}_updateDiffLoadProgress(){if(!this.diffNeedsUpdate||!this.diff.enabled||this.diff.empty||!this.diff.progressCallback)return;const e=this.getModels(this.diff.diffBubbles),t=this.getModels(this.diff.primaryBubbles),i=e.concat(t),n=this._getDiffSupportModels();n&&i.push(n.diff,n.primary);const r=i.filter(Boolean).length;if(re+(0|this.loadersInProgress[t.id]),t=i.reduce(e,0),n=100*i.length,r=10+Math.floor(90*t/n);return void this._signalDiffLoadProgress(r)}const o=i.reduce(((e,t)=>e+t.getData().fragsLoadedNoGeom),0),s=i.reduce(((e,t)=>e+t.getData().metadata.stats.num_fragments),0),a=10+Math.floor(90*o/s);this._signalDiffLoadProgress(a)}_updateDiff(){if(!this.diffNeedsUpdate)return;if(this._updateGhosting(),this._updateDiffLoadProgress(),!this.diff.enabled)return this._unloadDiffTool(),void this._updateAllModelTheming();const e=this.getModels(this.diff.diffBubbles),t=this.getModels(this.diff.primaryBubbles);if(this.diff.customCompute){let i=t,n=e;const r=[this.diff.customCompute].flat();for(const e of r)[i,n]=e.init(i,n)}for(let i=0;i{this.diff.progressCallback&&(t!==Autodesk.DiffTool.DIFFTOOL_PROGRESS_STATES.LoadingPropDb?(100===e&&this.onDiffDone&&this.onDiffDone(),this.diff.progressCallback(e,a.i18n.t("Computing change visualization"))):this.diff.progressCallback(e,a.i18n.t("Loading element properties")))},excludeFromDiff:(e,t)=>this.levelsExtension&&!this.levelsExtension.floorSelector.isVisible(e,t),setNodesOff:e=>{const t=this.levelsExtension;t&&t.floorSelector._floorSelectorFilter.reApplyFilter(e)},hideModeSwitchButton:!0,externalUi:this.diff.externalUi,attachDetachViewerEventHandlers:this.diff.attachDetachViewerEventHandlers,onDiffModeChanged:this.diff.onDiffModeChanged,onInitialized:this.diff.onInitialized};this._loadExtension(c.DiffTool,n).catch((e=>this._onError(e)))}}_updateModelTheming(e){const t=f(e),i=this.modelThemingStates[t];if(!i)return;const n=!this.viewer.getExtension(c.DiffTool);i.setEnabled(e,n),i.update(e),this.viewer.impl.invalidate(!0)}_updateAllModelTheming(){for(let e in this.modelItems){let t=this.getModel(e);t&&this._updateModelTheming(t)}}async getAlignmentService(){return this.alignmentService||(this._alignmentServicePromise?await this._alignmentServicePromise:(this._alignmentServicePromise=this._initAlignmentService(),await this._alignmentServicePromise,this._alignmentServicePromise=null)),this.alignmentService}isUsingAlignmentService(){return this.options.createModelAlignmentService||this.alignmentService}async _initAlignmentService(){const e=this.options.createModelAlignmentService;if(!e)return;await this.viewer.loadExtension("Autodesk.ModelAlignmentService").then((async()=>{const t=await e();this.viewer&&this.setAlignmentService(t)}))}async _getTransformForNode(e){const t=await this.getAlignmentService();if(!t)return;await Promise.all(this.pendingAlignmentFetches);const i=e.getRootNode().urn(),n=e.is2D()?e.name():void 0;return await t.loadTransform(i,n)}async _applyAlignmentService(e,t){if(e.is2D())return;if(this.alignmentServiceFailed)return;const i=await this._getTransformForNode(e);this._checkAlignmentService()&&(!function(){l.analytics.track(...arguments)}("viewer.modelalignment.alignment_loaded",{hasAlignmentTransform:Boolean(i)}),i&&(t.applyRefPoint=!1,t.placementTransform=i,t.applyPlacementInModelUnits=!0))}_checkAlignmentService(){if(this.alignmentServiceFailed||!this.alignmentService)return!1;if(this.alignmentService.isWorking())return!0;const e=s.A.t("Failed to connect to alignment service: Model alignment support is temporarily unavaible. Models with alignment transforms may not appear correctly and alignment editing is disabled.");this.fireEvent({type:h.ALIGNMENT_SERVICE_FAILED,message:e}),l.logger.error("AggregatedView: Disabled alignment due to alignment service connection error."),this.alignmentServiceFailed=!0}_connectModelAlignment(e){const t=this.viewer.getExtension(e);t&&t.setAlignmentService(this.alignmentService)}}E.ExtNames=c,E.AlignmentServices=u,E.Events=h},65251:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CameraLS:()=>a});var n=i(26206);const r=e=>isFinite(e.x)&&isFinite(e.y)&&isFinite(e.z),o=e=>{const t=e.isPerspective||isFinite(e.orthoScale);return r(e.position)&&r(e.target)&&r(e.up)&&t};class s{constructor(){this.cacheObj={}}setItem(e,t){this.cacheObj[e]=t}getItem(e){return this.cacheObj[e]}}class a{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{useLocalStorage:!0};this.aggregatedView=e,this.options=t,this.key=void 0,this.options.useLocalStorage?this.cache=Autodesk.Viewing.Private.LocalStorage:this.cache=new s,this.unloadCb=this.saveCamera.bind(this),this.addWindowEventListener("beforeunload",this.unloadCb)}destroy(){this.unsetKey(),this.removeWindowEventListener("beforeunload",this.unloadCb)}setKey(e){this.key=e}unsetKey(){this.key=void 0}saveCamera(){if(!this.aggregatedView.cameraInitialized||!this.key)return;const e=this.aggregatedView.viewer.impl.camera;if(!o(e))return;const t=this.aggregatedView.isBimWalkActive(),i=this.aggregatedView.is3D?this.aggregatedView.globalOffset:void 0;this.saveStartCamera(this.key,this.aggregatedView.viewer.impl.camera,t,i)}saveStartCamera(e,t,i,n,r){const o=JSON.stringify({offset:n,position:t.position,target:t.target,up:t.up,orthoScale:t.orthoScale,isPerspective:t.isPerspective,fov:t.fov,startBimWalk:i,ignoreGlobalOffset:r});this.cache.setItem(e,o)}clearItem(e){this.cache.setItem(e)}loadCamera(){if(!this.key)return!1;let e;try{const t=this.cache.getItem(this.key);e=JSON.parse(t)}catch(e){}if(!(e&&e.position&&e.target&&e.up))return!1;const t=e=>new THREE.Vector3(parseFloat(e.x),parseFloat(e.y),parseFloat(e.z)),i={position:t(e.position),target:t(e.target),up:t(e.up),isPerspective:Boolean(e.isPerspective),fov:parseFloat(e.fov),ignoreGlobalOffset:Boolean(e.ignoreGlobalOffset)};if(e.orthoScale&&(i.orthoScale=parseFloat(e.orthoScale)),!o(i))return!1;const n=e.offset?t(e.offset):void 0;if(n){if(!r(n))return;i.position.add(n),i.target.add(n)}this.aggregatedView.setCameraGlobal(i),e.startBimWalk&&this.aggregatedView.startBimWalk()}}n.GlobalManagerMixin.call(a.prototype)},26940:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Document:()=>p});var n=i(99211),r=i(57480),o=i(8412),s=i(84045),a=i(55280),l=i(83081),c=i(11653),h=i(8600),u=(0,a.getGlobal)(),d=u;const f=Object.freeze({Raster:"Raster",Vector:"Vector"});function p(e,t,i){this.myPath=t,this.myData=e,e&&(this.docRoot=new n.BubbleNode(e),this.docRoot.setDocument(this)),this.myNumViews={},this.acmSessionId=i;var r=this;this.docRoot.traverse((function(e){if(e.isViewPreset()){const t=e.findParentGeom2Dor3D();if(t){let e=r.myNumViews[t.guid()]||0;r.myNumViews[t.guid()]=e+1}}}))}p.load=function(e,t,i,n){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};const l=p.getDocumentPath(e);let d,f;function m(t){let i=e.split(":");i=i[1];const n=(0,h.fromUrlSafeBase64)(i);for(let e=0;e-1)return!0;return!1}if(e.startsWith("urn")&&m(["urn:adsk.wipprodanz","urn:adsk.wipstganz"])||o.endpoint.getApiFlavor().match(/APAC/i)){const e=o.endpoint.getApiFlavor(),t=(0,o.getEnv)();null!==t.match(/prod/i)?o.endpoint.setEndpointAndApi("https://cdn-apac.derivative.autodesk.com",e):null!==t.match(/stag/i)&&o.endpoint.setEndpointAndApi("https://cdn-apac-stg.derivative.autodesk.com",e)}if(e.startsWith("urn")&&m(["urn:adsk.wipemea","urn:adsk.wipbimemea"])){var g=o.endpoint.getApiFlavor(),v=(0,o.getEnv)(),y=g===o.endpoint.ENDPOINT_API_DERIVATIVE_SERVICE_V2&&!v.endsWith("EU"),b=v.endsWith("US")&&g===o.endpoint.ENDPOINT_API_D3S,x=g===o.endpoint.ENDPOINT_API_DERIVATIVE_STREAMING&&!g.endsWith("_EU");if(g+="_EU",y)o.endpoint.setEndpointAndApi(null,g);else if(b){v=v.replace("US","EU"),(0,o.setEnv)(v);var _=c.EnvironmentConfigurations[v];o.endpoint.setEndpointAndApi(_.ROOT,g)}else x&&o.endpoint.setEndpointAndApi(null,g)}function E(e){(o.endpoint.isSVF2Backend()||o.endpoint.isOtgBackend())&&(d=d?e.urn+","+d:e.urn);const n=new p(e,l,d);f=n.getGlobalMessages();if(n.docRoot.findAllViewables().length>0)t&&t(n,f);else{const e=r.ErrorCodes.BAD_DATA_NO_VIEWABLE_CONTENT;i&&i(e,"No viewable content",f)}}function S(e,t,n){if(401===e&&void 0===u.LMV_THIRD_PARTY_COOKIE)u.LMV_THIRD_PARTY_COOKIE=!1,(0,c.refreshRequestHeader)(c.token.accessToken),A();else if(i){var o="Error: "+e+" ("+t+")",s=(0,r.getErrorCode)(e);i(s,o,e,t,n)}}function A(){const e=!n||(o.endpoint.isSVF2Backend()||o.endpoint.isOtgBackend())&&!n["x-ads-acm-scopes"];if(!d&&!e)return n.oauth2AccessToken||(n.oauth2AccessToken=c.token.accessToken),void s.ViewingService.getACMSession(o.endpoint.getApiEndpoint(),n,(function(e){d=e,a.queryParams=d?"acmsession="+d:"",o.endpoint.setAcmSession(d),s.ViewingService.getManifest(o.endpoint.initLoadContext(a),l,E,S)}),i);const t=o.endpoint.initLoadContext(a);s.ViewingService.getManifest(t,l,E,S)}A()},p.getDocumentPath=function(e){if(-1===e.indexOf("urn:")){if(-1!==e.indexOf("://"))return e;var t=e;return"undefined"!=typeof window?(0!==t.indexOf("/")&&(t="/"+t),d.location.protocol+"//"+d.location.host+t):t}return e},p.requestThumbnailWithSecurity=function(e,t){var i={responseType:"blob",skipAssetCallback:!0,size:e.width,guid:e.guid,acmsession:e.acmsession},n="urn:"+e.urn,r=void 0;if(!(0,a.getGlobal)().USE_OTG_DS_PROXY){var l=(0,o.getEnv)();r=c.EnvironmentConfigurations[l].UPSTREAM;const e=(0,c.getUpstreamApiData)(l,o.endpoint.getApiFlavor());i.apiData=e}s.ViewingService.getThumbnail(o.endpoint.initLoadContext({endpoint:r}),n,(function(e){t(null,e)}),(function(){t("error",null)}),i)},p.prototype.getAcmSessionId=function(e){return this.acmSessionId?p.getAcmSessionId(e,this.acmSessionId):""},p.getAcmSessionId=function(e,t){if(!e)return"";let i=e.indexOf("urn:adsk.fluent")>=0;return(0,a.getGlobal)().USE_OTG_DS_PROXY||i||!o.endpoint.isSVF2Backend()&&!o.endpoint.isOtgBackend()?t:t.split(",")[1]||""},p.prototype.getPdfRenderingMode=function(){return this._pdfRenderingMode||f.Vector},p.prototype.setPdfRenderingMode=function(e){this._pdfRenderingMode=e},p.prototype.getFullPath=function(e){if(!e)return e;var t=e;if((0,o.isOffline)())-1==t.indexOf((0,o.getOfflineResourcePrefix)())&&(t=decodeURIComponent((0,o.getOfflineResourcePrefix)())+t.substr(t.indexOf("/")));else if(0===e.indexOf("urn")){if(0===e.indexOf("urn:adsk.fluent")||!o.endpoint.isSVF2Backend()&&!o.endpoint.isOtgBackend())t=o.endpoint.getItemApi(null,e),o.endpoint.ENDPOINT_API_MODEL_DERIVATIVE_V2===o.endpoint.getApiFlavor()&&(t=decodeURIComponent(t));else{const i=(0,o.getEnv)(),n=c.EnvironmentConfigurations[i],r=(0,a.getGlobal)().USE_OTG_DS_PROXY?null:n.UPSTREAM,s=(0,c.getUpstreamApiData)(i,o.endpoint.getApiFlavor());t=o.endpoint.getItemApi(r,e,s)}}else 0===e.indexOf("$file$")&&(t=this.myPath.replace("/bubble.json",e.replace("$file$","")));return t},p.prototype.getThumbnailOptions=function(e,t,i){var n=t||200,r=i||200,o=e.urn||this.myData.urn;return{urn:o,width:n,height:r,guid:e.guid,acmsession:this.getAcmSessionId(o)}},p.prototype.getThumbnailPath=function(e,t,i){var n=this.getThumbnailOptions(e,t,i),r=o.endpoint.getThumbnailApi(null,n.urn)+"?width="+n.width+"&height="+n.height;n.guid&&(r+="&guid="+n.guid),n.acmsession&&(r+="&acmsession="+n.acmsession);var s=o.endpoint.getQueryParams();return s&&(r+="&"+s),r},p.prototype.getLeafletZipParams=function(e,t){for(var i,n,r=t.search({role:"leaflet-zip"},!1),o=0;oe)return i;i++}return l.logger.log("unexpected leaflet tileSize"),0}(e.tileSize),this.getLeafletZipParams(e,t),e.loadFromZip=e.zips&&e.zips[0].loadFromZip,e.zips&&(0,o.isOffline)()&&(0,a.isMobileDevice)()&&(e.zips=e.zips.slice(0,1),e.maxLevel=e.zips[0].zipMaxLevel)},p.prototype.derivePdfUrnHack=function(e,t){var i=e.parent.children.slice();i.sort(((e,t)=>e._raw().order-t._raw().order));let r;r=i.length<=75?i[i.length-1]:i[74];let o=r.search(n.BubbleNode.GEOMETRY_F2D_NODE)[0];if(o){var s=o.urn().indexOf("/"),a=o.urn().slice(0,s),l=e._raw().order,c=0|l%75,h=1+(0|l/75),u=a+`/output/${c}/${c}.pdf`;return t.page=h,t.isPdf=!0,console.log("pdf path",u),u}return null},p.prototype.getViewableUrn=function(e,t){let i;if(e instanceof n.BubbleNode)i=e;else{let t=this.docRoot.search(e);i=t.length>0?t[0]:new n.BubbleNode(e)}const r=()=>{const e=i.search(n.BubbleNode.GEOMETRY_F2D_NODE);if(e.length)return e[0].urn()},o=()=>{if(i.isRevitPdf()){const e=r();if(e)return e}var e=!0;const o=JSON.parse(localStorage.getItem("Autodesk.Viewing.Private.GuiViewer3D.SavedSettings.AEC"));o&&(e=o[Autodesk.Viewing.Private.Prefs2D.VECTOR_VIEWING]??!0);var s="true"===(0,h.getParameterByName)("vectorPdf")||(0,a.getGlobal)().LMV_VECTOR_PDF||this.myData&&this.myData.isVectorPDF||!!i.data.isVectorPDF,l="false"===(0,h.getParameterByName)("vectorPdf")||(0,a.getGlobal)().LMV_RASTER_PDF;s?e=!0:l&&(e=!1);var c=i.search(n.BubbleNode.PDF_PAGE_NODE),u=i.search(n.BubbleNode.LEAFLET_NODE);if(e&&u.length>0&&t&&(this.getLeafletParams(t,i,u[0]._raw()),t.tempRasterPath=u[0].urn()),e&&c.length)return t&&(t.isPdf=!0,t.page=c[0].data.page||1),this.setPdfRenderingMode(f.Vector),c[0].urn();if(u.length>0&&t){if(s){var d=this.derivePdfUrnHack(i,t);if(d)return this.setPdfRenderingMode(f.Vector),d}return this.getLeafletParams(t,i,u[0]._raw()),this.setPdfRenderingMode(f.Raster),u[0].urn()}};if(i.isGeometry()){if(i.is3D())return i.getViewableRootPath();if(i.is2D()){const e=o()||(()=>{const e=i.search(n.BubbleNode.IMAGE_NODE);if(e.length)return e[0].urn()})()||r();if(e)return e}}else if(i.isViewPreset()){var s=this.getViewGeometry(i,!0);if(s)return this.getViewableUrn(s,t)}return i.is3DTilesFormat()?this.myPath:""},p.prototype.getViewablePath=function(e,t){var i=this.getViewableUrn(e,t);return i?this.getFullPath(i):""},p.prototype.downloadAecModelData=function(e){const t=e?t=>{try{e(t)}catch(e){console.error("Document.downloadAecModelData() onFinished handler crashed",e)}return t}:e=>e;if(this.downloadAecModelDataPromise)return this.downloadAecModelDataPromise.then(t),this.downloadAecModelDataPromise;var i=this.docRoot.findViewableParent(),n=i&&i.data.aec_model_data;if(n)return t(n),Promise.resolve(n);var r=this.docRoot.search({role:"Autodesk.AEC.ModelData"})[0];if(!r)return t(),Promise.resolve(null);let a=r.getViewableRootPath();const l=this.getFullPath(a),h={headers:{}},u=this.getAcmSessionId(l);return-1!==l.indexOf(".api.autodesk.com")&&c.token.accessToken&&(h.headers.Authorization="Bearer "+c.token.accessToken),u&&(h.queryParams="acmsession="+u),this.downloadAecModelDataPromise=new Promise((e=>{var t=t=>{r.findViewableParent().data.aec_model_data=t,e(t)};s.ViewingService.getItem(o.endpoint.initLoadContext(h),l,(e=>t(e)),(()=>t()),{responseType:"json"})})).then((e=>(delete this.downloadAecModelDataPromise,e))).then(t),this.downloadAecModelDataPromise},p.getAecModelData=function(e){if(Array.isArray(e)){let t=new Map,i=e.map((e=>{let i=e.getDocument(),n=t.get(i);if(n)return n;{let e=i.downloadAecModelData();return t[i]=e,e}}));return Promise.all(i)}return e.getDocument().downloadAecModelData()},p.prototype.getRoot=function(){return this.docRoot},p.prototype.getPath=function(){return this.myPath},p.prototype.getViewGeometry=function(e){return e.findParentGeom2Dor3D()},p.prototype.getNumViews=function(e){var t=e.guid;return e instanceof n.BubbleNode&&(t=e.guid()),this.myNumViews[t]||0},p.prototype.getMessages=function(e,t){var i=[];if(!e)return i;for(var n=e;n&&(!t||n.parent);)n._raw().messages&&(i=i.concat(n._raw().messages)),n=n.parent;return i},p.prototype.getGlobalMessages=function(){var e=[],t=0,i=0;this.getRoot().traverse((function(n){var r=n._raw().messages||[];r.filter((function(e){return"error"===e.type})).length>0&&(t+=1),"inprogress"===n._raw().status&&(i+=1),e=e.concat(r)}));var n="translated";n=t>0?"failed":n,n=i>0?"processing":n;for(var r=e.length;r--;e[r].$translation=n);return e}},6684:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DynamicGlobalOffset:()=>a});const n=Autodesk.Viewing.Private;let r=null,o=null,s=null;class a{constructor(e){this.viewer=e,this.enabled=!1,this.onCameraChanged=this.onCameraChanged.bind(this);this.maxDistSq=1e8,this.setActive(!0)}setActive(e){e!=this.enabled&&(this.enabled=e,e?this.viewer.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,this.onCameraChanged):this.viewer.removeEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,this.onCameraChanged))}static updateModelMatrix(e,t,i){r=r||new n.LmvMatrix4(!0),o=o||new n.LmvMatrix4(!0),s=s||new n.LmvMatrix4(!0);const a=e.myData.placementWithOffset?r.copy(e.myData.placementWithOffset).invert():r.identity(),l=t?o.copy(t):o.identity();i&&(l.elements[12]-=i.x,l.elements[13]-=i.y,l.elements[14]-=i.z);const c=s.multiplyMatrices(l,a);e.setModelTransform(c)}onCameraChanged(){if(this.viewer.impl.is2d)return;if(this.blockEvents)return;const e=this.viewer.toolController.getTool("orbit");if(null!=e&&e.isDragging)return;if(this.viewer.impl.camera.position.lengthSq(){t.setGlobalOffset(e),this.viewer.impl.onModelTransformChanged(t)})),this.viewer.impl.camera.setGlobalOffset(e),this.viewer.impl.syncCamera(),this.viewer.autocam&&this.viewer.autocam.onGlobalOffsetChanged(e),this.viewer.autocam.sync(this.viewer.impl.camera)}}},25004:(e,t,i)=>{"use strict";i.r(t),i.d(t,{EventDispatcher:()=>n});let n=function(){};n.prototype={constructor:n,apply:function(e){e.addEventListener=n.prototype.addEventListener,e.hasEventListener=n.prototype.hasEventListener,e.removeEventListener=n.prototype.removeEventListener,e.clearListeners=n.prototype.clearListeners,e.fireEvent=n.prototype.fireEvent,e.dispatchEvent=n.prototype.fireEvent,e.debugEvents=n.prototype.debugEvents},addEventListener:function(e,t,i){if(e){void 0===this.listeners&&(this.listeners={}),void 0===this.listeners[e]&&(this.listeners[e]=[]);for(var n=i&&i.priority||0,r=this.listeners[e].length,o=this.listeners[e].length-1;o>=0&&n>this.listeners[e][o].priority;o--)r--;this.listeners[e].splice(r,0,{callbackFn:t,once:!!i&&!!i.once,priority:n})}},hasEventListener:function(e,t){if(!e)return!1;if(void 0===this.listeners)return!1;var i=this.listeners[e];if(!i||0===i.length)return!1;for(var n=0,r=i.length;n{"use strict";var t=e.exports;t.ESCAPE_EVENT="escape",t.PROGRESS_UPDATE_EVENT="progress",t.FULLSCREEN_MODE_EVENT="fullScreenMode",t.NAVIGATION_MODE_CHANGED_EVENT="navmode",t.VIEWER_STATE_RESTORED_EVENT="viewerStateRestored",t.VIEWER_RESIZE_EVENT="viewerResize",t.VIEWER_INITIALIZED="viewerInitialized",t.VIEWER_UNINITIALIZED="viewerUninitialized",t.LOADER_LOAD_FILE_EVENT="loaderLoadFile",t.LOADER_LOAD_ERROR_EVENT="loaderLoadError",t.LOADER_REPAINT_REQUEST_EVENT="loaderRepaint",t.MODEL_ROOT_LOADED_EVENT="svfLoaded",t.GEOMETRY_LOADED_EVENT="geometryLoaded",t.TEXTURES_LOADED_EVENT="texturesLoaded",t.OBJECT_TREE_CREATED_EVENT="propertyDbLoaded",t.OBJECT_TREE_UNAVAILABLE_EVENT="propertyDbUnavailable",t.OBJECT_TREE_LOAD_PROGRESS_EVENT="propertyDbLoadProgress",t.MODEL_UNLOADED_EVENT="modelUnloaded",t.BEFORE_MODEL_UNLOAD_EVENT="beforeModelUnload",t.MODEL_ADDED_EVENT="modelAdded",t.MODEL_REMOVED_EVENT="modelRemoved",t.MODEL_LAYERS_LOADED_EVENT="modelLayersLoaded",t.MODEL_TRANSFORM_CHANGED_EVENT="modelTransformChanged",t.MODEL_PLACEMENT_CHANGED_EVENT="placementTransformChanged",t.MODEL_VIEWPORT_BOUNDS_CHANGED_EVENT="viewportBoundsChanged",t.MODEL_FRAGMENT_BOUNDING_BOXES_SET_EVENT="fragmentBoundingBoxesSet",t.EXTENSION_PRE_LOADED_EVENT="extensionPreLoaded",t.EXTENSION_LOADED_EVENT="extensionLoaded",t.EXTENSION_PRE_UNLOADED_EVENT="extensionPreUnloaded",t.EXTENSION_UNLOADED_EVENT="extensionUnloaded",t.EXTENSION_PRE_ACTIVATED_EVENT="extensionPreActivated",t.EXTENSION_ACTIVATED_EVENT="extensionActivated",t.EXTENSION_PRE_DEACTIVATED_EVENT="extensionPreDeactivated",t.EXTENSION_DEACTIVATED_EVENT="extensionDeactivated",t.SELECTION_CHANGED_EVENT="selection",t.AGGREGATE_SELECTION_CHANGED_EVENT="aggregateSelection",t.ISOLATE_EVENT="isolate",t.AGGREGATE_ISOLATION_CHANGED_EVENT="aggregateIsolation",t.HIDE_EVENT="hide",t.AGGREGATE_HIDDEN_CHANGED_EVENT="aggregateHidden",t.SHOW_EVENT="show",t.SHOW_PROPERTIES_EVENT="showProperties",t.SHOW_ALL_EVENT="showAll",t.HIDE_ALL_EVENT="hideAll",t.CAMERA_CHANGE_EVENT="cameraChanged",t.EXPLODE_CHANGE_EVENT="explodeChanged",t.FIT_TO_VIEW_EVENT="fitToView",t.AGGREGATE_FIT_TO_VIEW_EVENT="aggregateFitToView",t.CUTPLANES_CHANGE_EVENT="cutplanesChanged",t.TOOL_CHANGE_EVENT="toolChanged",t.RENDER_OPTION_CHANGED_EVENT="renderOptionChanged",t.FINAL_FRAME_RENDERED_CHANGED_EVENT="finalFrameRenderedChanged",t.RENDER_PRESENTED_EVENT="renderPresented",t.LAYER_VISIBILITY_CHANGED_EVENT="layerVisibility",t.PREF_CHANGED_EVENT="PrefChanged",t.PREF_RESET_EVENT="PrefReset",t.RESTORE_DEFAULT_SETTINGS_EVENT="restoreDefaultSettings",t.ANIMATION_READY_EVENT="animationReady",t.CAMERA_TRANSITION_COMPLETED="cameraTransitionCompleted",t.HYPERLINK_EVENT="hyperlink",t.HYPERLINK_NAVIGATE="hyperlink_navigate",t.LOAD_GEOMETRY_EVENT="load_geometry",t.LOAD_MISSING_GEOMETRY="loadMissingGeometry",t.WEBGL_CONTEXT_LOST_EVENT="webglcontextlost",t.WEBGL_CONTEXT_RESTORED_EVENT="webglcontextrestored",t.CANCEL_LEAFLET_SCREENSHOT="cancelLeafletScreenshot",t.SET_VIEW_EVENT="setView",t.RENDER_FIRST_PIXEL="renderFirstPixel",t.PROFILE_CHANGE_EVENT="profileChanged",t.RENDER_SCENE_PART="renderScenePart",t.OBJECT_UNDER_MOUSE_CHANGED="hoverObjectChanged",t.ANIM_ENDED="animEnded",t.TRANSITION_STARTED="transitionStarted",t.TRANSITION_ENDED="transitionEnded",t.FRAGMENTS_LOADED_EVENT="fragmentsLoaded",t.FRAGMENTS_UNLOADED_EVENT="fragmentsUnloaded",t.SCENE_UPDATED_EVENT="sceneUpdated",t.REFRESH_CUSTOM_PROPERTIES="refreshCustomProperties",t.REFRESH_CUSTOM_PROPERTIES_VALUES="refreshCustomPropertiesValues"},24840:(e,t,i)=>{"use strict";i.r(t),i.d(t,{EventUtils:()=>s});var n=i(55280);let r=!1,o=!1;class s{static isRightClick(e){if(!(e instanceof a(e).MouseEvent))return!1;let t=e.button;"buttons"in e&&(!o||1&e.buttons?2===t&&1&e.buttons&&(t=0,o=!0):(o=!1,t=0));return t===(r?0:2)}static isMiddleClick(e){return e instanceof a(e).MouseEvent&&1===e.button}static setUseLeftHandedInput(e){r=e}static async waitUntilTransitionEnded(e){if(e.navigation.getRequestTransition()||e.navigation.getTransitionActive())return new Promise((t=>{setTimeout((()=>{e.navigation.getRequestTransition()||e.navigation.getTransitionActive()?e.addEventListener(Autodesk.Viewing.CAMERA_TRANSITION_COMPLETED,t,{once:!0}):t()}))}))}static async waitUntilGeometryLoaded(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.model;if(!t||!t.isLoadDone())return new Promise((i=>{const n=r=>{t&&t!==r.model||(i(),e.removeEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT,n))};e.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT,n)}))}static async waitUntilModelAdded(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.model;if(!t)return new Promise((i=>{const n=r=>{t&&t!==r.model||(i(),e.removeEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,n))};e.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,n)}))}}function a(e){const t=e.target&&e.target.ownerDocument;return t?t.defaultView||t.parentWindow:(0,n.getGlobal)()}Autodesk.Viewing.isRightClick=s.isRightClick,Autodesk.Viewing.isMiddleClick=s.isMiddleClick},82712:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Extension:()=>o});var n=i(16271),r=i(26206),o=function(e,t){this.viewer=e,r.GlobalManagerMixin.call(this),this.setGlobalManager(e.globalManager),this.options=t||{},this.id="",this.modes=[],this.mode="",this.name="",this.activeStatus=!1};o.prototype.load=function(){return!0},o.prototype.unload=function(){return!0},o.prototype.activate=function(e){return!0},o.prototype.deactivate=function(){return!0},o.prototype.setActive=function(e,t){e?this.activate(t):this.deactivate()},o.prototype.getName=function(){return this.name},o.prototype.getModes=function(){return this.modes},o.prototype.isActive=function(e){return e?this.activeStatus&&this.mode===e:this.activeStatus},o.prototype.getState=function(e){},o.prototype.restoreState=function(e,t){return!0},o.prototype.extendLocalization=function(e){return(0,n.extendLocalization)(e)},o.prototype.getCache=function(){this.viewer.extensionCache||(this.viewer.extensionCache={});var e=this.viewer.extensionCache[this.id];return e||(e=this.viewer.extensionCache[this.id]={}),e},o.prototype.onToolbarCreated=function(e){},"undefined"!=typeof Autodesk&&(Autodesk.Viewing.Extension=o)},55270:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ExtensionMixin:()=>c,theExtensionManager:()=>l});var n=i(83081),r=i(20268),o=i(19556),s=i(85403);const a=Autodesk.Viewing;const l=new class{constructor(){this.registeredExtensions=new Map}registerExtension(e,t){if(this.registeredExtensions.has(e)){const i=this.registeredExtensions.get(e);if(i.EXTENSION_CLASS)return!1;i.EXTENSION_CLASS=t}else this.registeredExtensions.set(e,{EXTENSION_CLASS:t});return!0}getExtensionClass(e){return this.registeredExtensions.has(e)?this.registeredExtensions.get(e).EXTENSION_CLASS:null}unregisterExtension(e){return!!this.registeredExtensions.has(e)&&(this.registeredExtensions.delete(e),!0)}registerExternalExtension(e,t,i){return!this.registeredExtensions.has(e)&&(this.registeredExtensions.set(e,{EXTENSION_CLASS:null,externalPathOrCallback:t,dependencies:i}),!0)}getExternalPath(e){return this.registeredExtensions.has(e)?this.registeredExtensions.get(e).externalPathOrCallback:null}getRegisteredExtensions(){return Array.from(this.registeredExtensions).map((e=>{let[t,i]=e;return{id:t,inMemory:!!i.EXTENSION_CLASS,isAsync:!!i.externalPathOrCallback}}))}downloadExtension(e){if(!this.registeredExtensions.has(e))return Promise.reject("Extension not found: "+e+". Has it been registered(1)?");const t=this.registeredExtensions.get(e);if(!t.externalPathOrCallback)return Promise.reject("Extension not found: "+e+". Has it been registered(2)?");if(t.downloadPromise)return t.downloadPromise;const i=(t.dependencies||[]).map((e=>this.downloadExtension(e))),n=Promise.all(i);return t.downloadPromise=n.then((()=>"string"==typeof t.externalPathOrCallback?r.theResourceLoader.loadScript(t.externalPathOrCallback,e):t.externalPathOrCallback())).then((()=>{if(delete t.downloadPromise,!t.EXTENSION_CLASS)throw new Error("Extension not found: "+e+". Has it been registered(3)?");return t.EXTENSION_CLASS})),t.downloadPromise}popuplateOptions(e){this.registeredExtensions.forEach((t=>{t.EXTENSION_CLASS.populateDefaultOptions(e)}))}isDownloading(e){return!!this.registeredExtensions.has(e)&&!!this.registeredExtensions.get(e).downloadPromise}isAvailable(e){return!!this.getExtensionClass(e)}},c=function(){};c.prototype={loadExtension:function(e,t){return this.loadedExtensions=this.loadedExtensions||{},l.isAvailable(e)?this.loadExtensionLocal(e,t):(this.loadExtensionPromises=this.loadExtensionPromises||{},e in this.loadExtensionPromises||(this.loadExtensionPromises[e]=l.downloadExtension(e).then((()=>{if(delete this.loadExtensionPromises[e],this.loadedExtensions){if(this.cancelledExtensions&&e in this.cancelledExtensions)throw delete this.cancelledExtensions[e],new Error(`Abort loadExtension('${e}') - extension has been unloaded`);return this.loadExtensionLocal(e,t)}n.logger.info(`Abort loadExtension('${e}') - teardown in progress`)}))),this.loadExtensionPromises[e])},getExtension:function(e,t){var i=this.loadedExtensions&&e in this.loadedExtensions?this.loadedExtensions[e]:null;return i&&t&&t(i),i},getExtensionAsync:function(e){let t=this.getExtension(e);return t?Promise.resolve(t):new Promise((i=>{this.addEventListener(o.EXTENSION_LOADED_EVENT,(function n(r){r.extensionId===e&&(this.removeEventListener(o.EXTENSION_LOADED_EVENT,n),t=this.getExtension(e),i(t))}))}))},unloadExtension:function(e){if(this.cancelledExtensions=this.cancelledExtensions||{},l.isDownloading(e))return this.cancelledExtensions[e]=!0,!1;let t=!1;const i=this.getExtension(e);return i?(t=i.unload(),n.logger.info("Extension unloaded: "+e),delete this.loadedExtensions[e],s.analytics.track("viewer.extensionManager.extensionUnloaded",{extensionId:e}),this.dispatchEvent({type:o.EXTENSION_UNLOADED_EVENT,extensionId:e})):n.logger.warn("Extension not found: "+e),t},loadExtensionLocal:function(e,t){const i=l.getExtensionClass(e);if(!i)return Promise.reject("Extension not found : "+e);let r=this.getExtension(e);if(r)return Promise.resolve(r);if(this.loadingExtensions&&e in this.loadingExtensions)return this.loadingExtensions[e];r=function(e){function t(t,i,n){const r=e[t];r?e[t]=function(){i&&i.call(e,...arguments);const t=r.call(e,...arguments);return n&&n.call(e,...arguments),t}:console.warn(t," not implemented in ",e)}return t("load",(function(){this.viewer.dispatchEvent({type:a.EXTENSION_PRE_LOADED_EVENT,extensionId:this.id})})),t("unload",(function(){this.viewer.dispatchEvent({type:a.EXTENSION_PRE_UNLOADED_EVENT,extensionId:this.id})})),t("activate",(function(e){this.viewer.dispatchEvent({type:a.EXTENSION_PRE_ACTIVATED_EVENT,extensionId:this.id,mode:e})}),(function(e){this.viewer.dispatchEvent({type:a.EXTENSION_ACTIVATED_EVENT,extensionId:this.id,mode:e}),s.analytics.track("viewer.extension.activate",{extensionId:this.id,mode:e})})),t("deactivate",(function(){this.viewer.dispatchEvent({type:a.EXTENSION_PRE_DEACTIVATED_EVENT,extensionId:this.id})}),(function(){this.viewer.dispatchEvent({type:a.EXTENSION_DEACTIVATED_EVENT,extensionId:this.id}),s.analytics.track("viewer.extension.deactivate",{extensionId:this.id})})),e}(new i(this,t)),r.id=e;const c=()=>Promise.reject("Extension failed to .load() : "+e),h=r.load();if(!h)return c();const u=()=>(this.loadedExtensions[e]=r,this.onPostExtensionLoad(r),n.logger.info("Extension loaded: "+e),s.analytics.track("viewer.extensionManager.extensionLoaded",{extensionId:e}),setImmediate((()=>{this.getExtension(e)&&this.dispatchEvent({type:o.EXTENSION_LOADED_EVENT,extensionId:e})})),Promise.resolve(r));return"function"==typeof h.then?(this.loadingExtensions=this.loadingExtensions||{},this.loadingExtensions[e]=h.then((e=>e?u():c())).finally((()=>{delete this.loadingExtensions[e]})),this.loadingExtensions[e]):u()},onPostExtensionLoad:function(e){},forEachExtension:function(e){const t=this.loadedExtensions||{};for(let i in t)Object.prototype.hasOwnProperty.call(t,i)&&e(t[i])},apply:function(e){var t=c.prototype;e.loadExtension=t.loadExtension,e.getExtension=t.getExtension,e.getExtensionAsync=t.getExtensionAsync,e.unloadExtension=t.unloadExtension,e.loadExtensionLocal=t.loadExtensionLocal,e.forEachExtension=t.forEachExtension,e.onPostExtensionLoad=t.onPostExtensionLoad}}},19948:(e,t,i)=>{"use strict";i.r(t),i.d(t,{FeatureFlags:()=>s,InternalFeatureFlags:()=>l,PublicFeatureFlags:()=>a});var n=i(35922),r=i(61183),o=i(11743);class s{static#e=new Map;static#t=!1;static _add(e,t){this.#t?console.warn("Feature flags cannot be added after initialization."):this.#e.has(e)?console.warn(`Feature flag '${e}' already exists.`):this.#e.set(e,{value:t,initializationCB:void 0,changeListener:void 0})}static _registerInitializationCallback(e,t){const i=this.#e.get(e);void 0!==i?i.initializationCB=t:console.warn(`Feature flag '${e}' not found; callback registration is skipped.`)}static _registerChangeListener(e,t){const i=this.#e.get(e);void 0!==i?i.changeListener=t:console.warn(`Feature flag '${e}' not found; callback registration is skipped.`)}static set(e,t){const i=this.#e.get(e);if(this.#t)console.warn(`Feature flag '${e}' is immutable and cannot be modified after initialization.`);else if(void 0===i)console.warn(`Feature flag '${e}' not found; modification is skipped.`);else{const e=i.value!==t;i.value!==t&&(i.value=t),void 0!==i.changeListener&&e&&i.changeListener(i.value)}}static isEnabled(e){const t=this.#e.get(e);return null==t?void 0:t.value}static _setInitializationData(e,t){const i=this.#e.get(e);void 0!==i?this.#t?console.warn(`Feature flag '${e}' has already been initialized. Ignoring initialization data.`):i.initializationData=t:console.warn(`Feature flag '${e}' not found; modification is skipped.`)}static async _initialize(){if(this.#t)return;this.#t=!0;const e=new o.Profile(Autodesk.Viewing.ProfileSettings.Default),t=new r.Preferences;e.apply(t);const i=new Array;for(const[,e]of this.#e){Object.freeze(e);const n=e.initializationCB;n&&i.push(n(e.value,{preferences:t,customInitializationData:e.initializationData}))}return Promise.all(i)}static print(){console.log("Feature Flags:"+(0===this.#e.size?" none":""));for(const[e,{value:t}]of this.#e)Object.values(l).includes(e)||console.log(` - ${e}: ${t}`)}}const a=Object.freeze({LargeModelExperienceOptOut:"HIDE_LARGE_MODEL_EXPERIENCE"});s._add(a.LargeModelExperienceOptOut,!1),s._registerInitializationCallback(a.LargeModelExperienceOptOut,((e,t)=>{var i;if(!e&&((null===(i=t.customInitializationData)||void 0===i?void 0:i.overridePreferenceValue)??t.preferences.get(n.Prefs3D.LARGE_MODEL_EXPERIENCE)))return Autodesk.Viewing.Private.useHLOD()}));const l=Object.freeze({OutOfCoreGpuMemoryManagement:"OUT_OF_CORE_GPU_MEMORY_MANAGEMENT",WebGPUBackend:"ENABLE_WEBGPU"});s._add(l.WebGPUBackend,!1),s._registerInitializationCallback(l.WebGPUBackend,(async(e,t)=>{var i;if(e&&((null===(i=t.customInitializationData)||void 0===i?void 0:i.overridePreferenceValue)??t.preferences.get(n.Prefs.WEBGPU)))return await Autodesk.Viewing.Private.useWebGPU()})),s._add(l.OutOfCoreGpuMemoryManagement,!1),s._registerInitializationCallback(l.OutOfCoreGpuMemoryManagement,((e,t)=>{var i;e&&((null===(i=t.customInitializationData)||void 0===i?void 0:i.overridePreferenceValue)??t.preferences.get(n.Prefs3D.OUT_OF_CORE_GPU_MEMORY_MANAGEMENT))&&Autodesk.Viewing.Private.enableOutOfCoreTileManager()}))},93228:(e,t,i)=>{"use strict";function n(e){this.viewer=e}i.r(t),i.d(t,{FileLoader:()=>n}),n.prototype.constructor=n,n.prototype.loadFile=function(e,t,i,n){return!1},n.prototype.is3d=function(){return!1}},54393:(e,t,i)=>{"use strict";i.r(t),i.d(t,{FileLoaderManager:()=>r});const n={};let r={registerFileLoader:function(e,t,i,r){return n[e]?n[e].loader===i&&(n[e].count++,!0):(n[e]={loader:i,extensions:t,mimeType:r,count:1},!0)},getFileLoader:function(e){return n[e]?n[e].loader:null},getFileLoaderForExtension:function(e,t){e=e?e.toLowerCase():"";const i=new Array;for(const t in n){const r=n[t];if(r)for(let t=0;t1)for(let e of i)if(e.acceptsMimeType&&e.acceptsMimeType(t))return e;return i[0]},unregisterFileLoader:function(e){return!!n[e]&&(n[e].count--,0===n[e].count&&delete n[e],!0)}}},8811:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GlobalManager:()=>r});const n=Autodesk.Viewing;class r{constructor(){this._window={inner:null,registeredEventListeners:new Map},this._document={inner:null,registeredEventListeners:new Map},this._window.inner=n.getGlobal(),this._document.inner=this._window.inner.document,this.addWindowEventListener=s.bind(this._window),this.removeWindowEventListener=a.bind(this._window),this.addDocumentEventListener=s.bind(this._document),this.removeDocumentEventListener=a.bind(this._document)}getWindow(){return this._window.inner}getDocument(){return this._document.inner}setWindow(e){if(e&&e!==this._window.inner){for(let[t,i]of this._window.registeredEventListeners.entries())for(let[n,r]of i.entries())e.addEventListener(t,n,...r),this._window.inner.removeEventListener(t,n,...r);for(let[t,i]of this._document.registeredEventListeners.entries())for(let[n,r]of i.entries())e.document.addEventListener(t,n,...r),this._document.inner.removeEventListener(t,n,...r);this._window.inner=e,this._document.inner=e.document}}}function o(e){return!!e.opener}function s(e,t){for(var i=arguments.length,n=new Array(i>2?i-2:0),r=2;r2?i-2:0),r=2;r{"use strict";i.r(t),i.d(t,{GlobalManagerMixin:()=>o});var n=i(8811);const r=new n.GlobalManager;function o(){this.globalManager=r,this.setGlobalManager=function(e){this.globalManager=e,this.onSetGlobalManager(this.globalManager)},this.onSetGlobalManager=function(e){},this.getWindow=function(){return this.globalManager.getWindow()},this.getDocument=function(){return this.globalManager.getDocument()},this.setWindow=function(e){return this.globalManager.setWindow(e)},this.addWindowEventListener=function(e,t){for(var i=arguments.length,n=new Array(i>2?i-2:0),r=2;r2?i-2:0),r=2;r2?i-2:0),r=2;r2?i-2:0),r=2;r{"use strict";i.r(t),i.d(t,{BackgroundPresets:()=>a,DefaultLightPreset:()=>r,DefaultLightPreset2d:()=>o,DefaultToneMapMethod:()=>s,LightPresets:()=>c,copyLightPreset:()=>u});var n=i(55280);let r=1,o=0,s=1,a={"Fusion Grey":[230,230,230,150,150,150],"Sky Blue":[226,244,255,156,172,180],Snow:[181,186,199,181,186,199],Midnight:[41,76,120,1,2,3],White:[255,255,255,255,255,255],AutoCADModel:[30,40,48,30,40,48],"Dark Grey":[51,51,51,51,51,51],"Dark Sky":[51,51,51,51,51,51],"Infinity Pool":[255,255,255,255,255,255],Tranquility:[0,84,166,0,84,166],"Grey Room":[129,129,129,129,129,129],"Photo Booth":[237,237,237,237,237,237],"RaaS SBS":[1,1,1,90,90,90],Plaza:[79,102,130,79,102,130],Field:[202,226,252,202,201,190],Boardwalk:[216,230,248,230,228,220],Custom:[230,230,230,150,150,150]};var l=a;let c=[{name:"Simple Grey",path:null,tonemap:0,E_bias:0,directLightColor:[1,.84,.67],ambientColor:[.2,.225,.25],lightMultiplier:1,bgColorGradient:l["Fusion Grey"],darkerFade:!1,rotation:0},{name:"Sharp Highlights",path:"SharpHighlights",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[.5,.5,.5],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[.5,-.2,-.06],bgColorGradient:l["Photo Booth"],darkerFade:!0,rotation:0},{name:"Dark Sky",path:"DarkSky",type:"logluv",tonemap:s,E_bias:-1,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:1,lightDirection:[.1,-.55,-1],bgColorGradient:l["Dark Sky"],darkerFade:!1,rotation:0},{name:"Grey Room",path:"GreyRoom",type:"logluv",tonemap:s,E_bias:-1,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:.5,lightDirection:[.1,-.55,-1],bgColorGradient:l["Grey Room"],darkerFade:!0,rotation:0},{name:"Photo Booth",path:"PhotoBooth",type:"logluv",tonemap:s,E_bias:0,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:.5,lightDirection:[.1,-.55,-1],bgColorGradient:l["Photo Booth"],darkerFade:!0,rotation:0},{name:"Tranquility",path:"TranquilityBlue",type:"logluv",tonemap:s,E_bias:-1,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:.5,lightDirection:[.1,-.55,-1],bgColorGradient:l.Tranquility,darkerFade:!1,rotation:0},{name:"Infinity Pool",path:"InfinityPool",type:"logluv",tonemap:s,E_bias:-1,directLightColor:[1,.84,.67],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:.5,lightDirection:[.1,-.55,-1],bgColorGradient:l["Infinity Pool"],darkerFade:!1,rotation:0},{name:"Simple White",path:null,tonemap:0,E_bias:0,directLightColor:[1,1,1],ambientColor:[.25,.25,.25],lightMultiplier:1,bgColorGradient:l.White,saoRadius:.06,saoIntensity:.15,darkerFade:!0,rotation:0},{name:"Riverbank",path:"riverbank",type:"logluv",tonemap:s,E_bias:-5.7,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Sky Blue"],darkerFade:!1,rotation:0},{name:"Contrast",path:"IDViz",type:"logluv",tonemap:s,E_bias:0,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l.Midnight,darkerFade:!1,rotation:0},{name:"Rim Highlights",path:"RimHighlights",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[.5,.5,.5],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[.35,-.35,-.5],bgColorGradient:l["Photo Booth"],darkerFade:!0,rotation:0},{name:"Cool Light",path:"CoolLight",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[-0,-.15,-.5],bgColorGradient:l["Fusion Grey"],darkerFade:!0,rotation:0},{name:"Warm Light",path:"WarmLight",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[-0,-.15,-.5],bgColorGradient:l["Fusion Grey"],darkerFade:!0,rotation:0},{name:"Soft Light",path:"SoftLight",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[-.5,-.5,0],bgColorGradient:l["Fusion Grey"],darkerFade:!0,rotation:0},{name:"Grid Light",path:"GridLight",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[-.5,-.6,0],bgColorGradient:l["Fusion Grey"],darkerFade:!0,rotation:0},{name:"Plaza",path:"Plaza",type:"logluv",tonemap:s,E_bias:-14,directLightColor:[.9,.9,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[-.2,-.18,.72],bgColorGradient:l.Plaza,darkerFade:!1,rotation:0},{name:"Snow Field",path:"SnowField",type:"logluv",tonemap:s,E_bias:-10.461343,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[0,-1,0],bgColorGradient:l.Snow,darkerFade:!1,rotation:0},{name:"Field",path:"field",type:"logluv",tonemap:s,E_bias:-2.9,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l.Field,useIrradianceAsBackground:!0,darkerFade:!0,rotation:0},{name:"Boardwalk",path:"boardwalk",type:"logluv",tonemap:s,E_bias:-7,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l.Boardwalk,useIrradianceAsBackground:!0,darkerFade:!1,rotation:0},{name:"Flat Shading",path:null,tonemap:0,E_bias:0,directLightColor:[0,0,0],ambientColor:[0,0,0],lightMultiplier:0,bgColorGradient:l["Fusion Grey"],darkerFade:!1,rotation:0}],h=[{name:"Harbor",path:"Harbor",type:"logluv",tonemap:s,E_bias:1.9,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Sky Blue"],useIrradianceAsBackground:!0,saoIntensity:.5,darkerFade:!1,rotation:0},{name:"Night",path:"Night",type:"logluv",tonemap:1,E_bias:4,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l.Midnight,useIrradianceAsBackground:!1,darkerFade:!1,rotation:0},{name:"Parking",path:"Parking",type:"logluv",tonemap:s,E_bias:2.8,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Sky Blue"],useIrradianceAsBackground:!1,saoIntensity:.5,darkerFade:!1,rotation:0},{name:"River Road",path:"RiverRoad",type:"logluv",tonemap:s,E_bias:0,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Fusion Grey"],useIrradianceAsBackground:!1,saoIntensity:.7,darkerFade:!1,rotation:0},{name:"Crossroads",path:"crossroads",type:"logluv",tonemap:s,E_bias:-5.5,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Sky Blue"],useIrradianceAsBackground:!0,darkerFade:!0,rotation:0},{name:"Seaport",path:"seaport",type:"logluv",tonemap:s,E_bias:-6.5,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Sky Blue"],useIrradianceAsBackground:!0,darkerFade:!1,rotation:0},{name:"Glacier",path:"glacier",type:"logluv",tonemap:s,E_bias:0,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l.Midnight,darkerFade:!1,rotation:0},{name:"RaaS Test Env",path:"Reflection",type:"logluv",tonemap:2,E_bias:-1.5,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["RaaS SBS"],darkerFade:!1,rotation:0},{name:"City Night",path:"CityNight",type:"logluv",tonemap:s,E_bias:1.6,directLightColor:[1,1,1],lightMultiplier:.2,bgColorGradient:l.Midnight,useIrradianceAsBackground:!1,darkerFade:!1,rotation:0}];function u(e,t){Object.assign(t,e),t.name=e.name+" (copy)"}(0,n.getGlobal)().ENABLE_DEBUG&&Array.prototype.push.apply(c,h)},94661:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LocalStorage:()=>a});var n,r=i(83081),o=(0,i(55280).getGlobal)();function s(){this.isSupported()||(this._data={})}s.prototype.getItem=function(e){return this.isSupported()?o.localStorage.getItem(e):Object.prototype.hasOwnProperty.call(this._data,e)?this._data[e]:null},s.prototype.setItem=function(e,t){if(this.isSupported())try{o.localStorage.setItem(e,t)}catch(e){r.logger.debug("avp.LocalStorage: Failed to setItem()")}else this._data[e]=String(t)},s.prototype.removeItem=function(e){this.isSupported()?o.localStorage.removeItem(e):delete this._data[e]},s.prototype.clear=function(){this.isSupported()?o.localStorage.clear():this._data={}},s.prototype.isSupported=function(){return void 0===n&&(n=(()=>{if("undefined"==typeof window)return!1;try{const e="lmv_viewer_test_localStorage",t=o.localStorage;return!!t&&(t.setItem(e,"1"),t.removeItem(e),!0)}catch(e){return!1}})()),n},s.prototype.getAllKeys=function(){return n?Object.keys(o.localStorage):Object.keys(this._data)};const a=new s},63764:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Model:()=>v});var n=i(25004),r=i(84045),o=i(55280),s=i(37365),a=i(54561),l=i(9478),c=i(42525),h=i(63841),u=i(27623),d=i(33398),f=i(18211);const p=f.hp.from&&f.hp.alloc&&f.hp.allocUnsafe&&f.hp.allocUnsafeSlow?f.hp.from:e=>new f.hp(e);let m=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];"undefined"!=typeof Int32Array&&(m=new Int32Array(m));const g=function(e,t){const i=(e,i)=>t(e,i)>>>0;return i.signed=t,i.unsigned=i,i.model=e,i}("crc-32",(function(e,t){f.hp.isBuffer(e)||(e=p(e));let i=0===t?0:~t;for(let t=0;t>>8}return~i}));class v extends l.RenderModel{myData;topology=null;topologyPromise=null;svfUUID=null;defaultCameraHash=null;loader=void 0;constructor(e){super(e),this.myData=e,n.EventDispatcher.prototype.apply(this);const t={};t.isSVF2=this.isSVF2(),t.isOTG=this.isOTG(),t.is2d=this.is2d(),super.setModelFormat(t)}initialize(){super.initialize();const e=new c.ModelIteratorLinear(this);this.addTraversalController("Linear",e)}getInstanceTree(){return this.myData?this.myData.instanceTree:null}getFuzzyBox(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t=Boolean(e.ignoreTransforms),i=this.getFragmentList();if(!i||this.is2d())return this.getBoundingBox(t);var n=null;if(t){var r=new Array(6);const e=this.getData().placementWithOffset,t=e?e.clone().invert():void 0;n=function(e,n){i.getOriginalWorldBounds(e,r),n.min.fromArray(r),n.max.fromArray(r,3),t&&n.applyMatrix4(t)}}else n=function(e,t){i.getWorldBounds(e,t)};var o=e.center||function(){var t=new THREE.Box3,r=new THREE.Vector3,o=new THREE.Vector3,s=new THREE.Vector3,a=0;function l(i){if(!e.allowlist||e.allowlist.includes(i)){n(i,t),t.getCenter(r);var l=t.getSize(o).length();s.add(r.multiplyScalar(l)),a+=l}}for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:void 0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;function i(e,t,i,n){const r=(e+t+i+(n??"")).toUpperCase();return`p${g(r).toString(16).padStart(8,"0")}`}const n=this.getPropertyDb();if(void 0===n||!0!==n.isLoadDone())return;let r=await n.executeUserFunction("function userFunction(pdb) {\n const properties = new Set();\n pdb.enumAttributes((i, attribute, raw) => {\n properties.add([ attribute.name, attribute.category, attribute.dataType, attribute.dataTypeContext ]);\n });\n return Array.from(properties); }");void 0!==e&&e instanceof RegExp&&(r=r.filter((t=>e.test(t[0])))),void 0!==t&&t instanceof RegExp&&(r=r.filter((e=>t.test(e[1]))));for(const e of r){const t=i(e[0],e[1],e[2],e[3]);e.unshift(t),e.pop(),e.pop()}return r}getProperties(e,t,i){var n=this.getPropertyDb();!n||e<=0?i&&i():n.getProperties(e,t,i)}getProperties2(e,t,i,n){var r=this.getPropertyDb();!r||e<=0?i&&i():r.getProperties2(e,t,i,n)}getBulkProperties(e,t,i,n){Array.isArray(t)&&(t={propFilter:t});var r=(t=t||{}).propFilter||null,o=t.ignoreHidden||!1,s=this.getPropertyDb();s?s.getBulkProperties(e,r,i,n,o):n&&n()}getBulkProperties2(e,t,i,n){var r=this.getPropertyDb();r?r.getBulkProperties2(e,t,i,n):n&&n()}getPropertySetAsync(e,t){return new Promise(((i,n)=>{this.getPropertySet(e,i,n,t)}))}getPropertySet(e,t,i,n){var r=this.getPropertyDb();r||i&&i("Properties failed to load."),r.getPropertySet(e,n,(e=>{t(new d.PropertySet(e))}),i)}getExternalIdMapping(e,t){var i=this.getPropertyDb();i?i.getExternalIdMapping(e,t):t&&t()}getLayerToNodeIdMapping(e,t){var i=this.getPropertyDb();i?i.getLayerToNodeIdMapping(e,t):t&&t()}getObjectTree(e,t){const i=this.getData().instanceTree;if(i)e(i);else{var n=this.getPropertyDb();n?n.getObjectTree(e,t):t&&t()}}isObjectTreeLoaded(){var e=this.getPropertyDb();return!!e&&e.isObjectTreeLoaded()}search(e,t,i,n){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{searchHidden:!1};var o=this.getPropertyDb();o?o.searchProperties(e,n,t,i,r):i&&i()}findProperty(e){var t=this.getPropertyDb();return t?t.findProperty(e):Promise.reject("Model doesn't have any properties.")}static#i(e){var t=.001,i=e;if(Math.abs(i[0])t)for(var n=0;n<4;n++){var r=i[n];i[n]=i[n+4],i[n+4]=r}else for(let e=0;e<4;e++){const t=i[e];i[e]=i[e+8],i[e+8]=t}if(Math.abs(i[5])=t;for(var u=0,d=i.length;u=t)&&(c-t)*(s-l)>=(l-e)*(a-c)==o&&(h=!h),r=o,s=l,a=c;return h}static#r(e,t,i,n){for(var r=!1,o=0;oi)return Promise.reject({error:"topology-too-big",limitMB:i,topologyMB:t.topologySizeMB});if(!this.topologyPromise){var n=this;this.topologyPromise=new Promise((function(e,t){n.loader.fetchTopologyFile(n.getData().topologyPath,(function(i){i&&i.topology?(n.topology=i.topology,e(i.topology)):t(i)}))}))}return this.topologyPromise}hasGeometry(){var e=this.getData();return!!e&&(!!e.isLeaflet||(!!e.isSceneBuilder||e.fragments.length>0))}getFragmentPointer(e){return e?new a.FragmentPointer(this.getFragmentList(),e):null}clone(){const e=new v(this.myData);return e.topology=this.topology,e.topologyPromise=this.topologyPromise,e.svfUUID=this.svfUUID,e.defaultCameraHash=this.defaultCameraHash,e.loader=this.loader,e.setInnerAttributes(this.getInnerAttributes()),e}getSeedUrn(){var e;return(null===(e=this.loader)||void 0===e?void 0:e.svfUrn)||""}isNodeExists(e){let t;const i=this.getInstanceTree();if(i)i.enumNodeChildren(e,(function(e){i.enumNodeFragments(e,(function(){t=!0}))}),!0);else{var n;null!==(n=this.getFragmentList().fragments.dbId2fragId)&&void 0!==n&&n[e]&&(t=!0)}return!!t}getModelKey(){const e=this.getDocumentNode();return e?e.getModelKey():this.getData().urn}dtor(){super.dtor(),this.#o()}#o(){const e=this.getInstanceTree();null==e||e.dtor(),this.myData=null,this.topology=null,this.topologyPromise=null}setFragmentBoundingBoxes(e,t){const i=this.getFragmentList().fragments,n=i.boxes,r=e.length/t;for(let i=0,o=0,s=0;i{"use strict";i.r(t),i.d(t,{ModelLayers:()=>s});var n=i(83081),r=i(19556),o={name:"root",id:"root",isLayer:!1,children:[],childCount:0};function s(e){this.viewer=e,this.matman=e.matman(),this.model=null,this.root=null,this.initialized=!1,this.layerToIndex={},this.indexToLayer=[null],this.nodeToLayer=[]}var a=s.prototype;function l(e,t){var i=e.model,n=e.indexToLayer;if(i.is2d()){if(!i.getData().layerCount)return;var r=[];for(var o in e.layerToIndex)r.push(e.layerToIndex[o]);e.matman.setLayerVisible(r,t,i.id),e.viewer.invalidate(!0)}else{var s=[],a=t?e.viewer.visibilityManager.show:e.viewer.visibilityManager.hide;c(e,(function(e,r){n[r].visible!==t&&(s.push(e),1024===s.length&&(a(s,i),s.length=0))})),s.length>0&&a(s,i)}for(var l=n.length,h=1;h1&&void 0!==arguments[1]&&arguments[1];if(!this.initialized&&(e.is2d()||!t)){var i=function(t){if(t){var i=this.model.getData().instanceTree;t.children=t.children||[];var r=function(e){if(!e)return[];var t=[],i=0;d(e,(e=>{t.push(e),e.isLayer&&(i=Math.max(i,0|e.index))}));for(var n=0;n{e&&!e.visible&&this.setLayerVisible(e.layer,!1)})),this.viewer.api.dispatchEvent({type:r.MODEL_LAYERS_LOADED_EVENT,model:e,root:t})}.bind(this);this.model=e,(e.is2d()?function(e){var t=e.getData(),i=o;t&&t.layersRoot&&(i=t.layersRoot);return Promise.resolve(i)}(e):function(e){if(e.getData().loadOptions.skipPropertyDb)return Promise.resolve(null);var t=e.getPropertyDb();if(!t||e.getData().loadOptions.disable3DModelLayers)return Promise.resolve(o);return t.findLayers()}(e)).then((function(e){i(e),s(e)})).catch((function(e){n.logger.warn(e),s(o)}))}},a.removeModel=function(e){this.model===e&&(this.model=null,this.root=null,this.initialized=!1,this.layerToIndex={},this.indexToLayer=[null],this.nodeToLayer=[])},a.getRoot=function(){return this.initialized||n.logger.warn("Autodesk.Viewing.ModelLayers.getRoot couldn't peform action, layers are still being loaded"),this.root},a.showAllLayers=function(){this.initialized?l(this,!0):n.logger.warn("Autodesk.Viewing.ModelLayers.showAllLayers couldn't peform action, layers are still being loaded")},a.hideAllLayers=function(){this.initialized?l(this,!1):n.logger.warn("Autodesk.Viewing.ModelLayers.hideAllLayers couldn't peform action, layers are still being loaded")},a.isLayerVisible=function(e){if(!this.initialized)return n.logger.warn("Autodesk.Viewing.ModelLayers.isLayerVisible couldn't peform action, layers are still being loaded"),!1;let t=h(this,e);const i=this.indexToLayer[t];if(u(i)){const e=i.layer.children;for(var r=0;r{i.push(e.index)}))}}var s=this.model,a=this.indexToLayer;if(s.is2d())this.matman.setLayerVisible(i,t,s.id),this.viewer.invalidate(!0);else{var l=a.map((function(e){return!(null!==e&&-1!==i.indexOf(e.layer.index)&&e.visible!==t)})),d=[],f=t?this.viewer.visibilityManager.show:this.viewer.visibilityManager.hide;c(this,(function(e,t){l[t]||(d.push(e),1024===d.length&&(f(d,s),d.length=0))})),d.length>0&&f(d,s)}var p=i.length;for(let e=0;e=i.length)return!1;var o=i[r].visible_layers,s={};if(o&&0{"use strict";i.r(t),i.d(t,{ModelMemoryTracker:()=>u,estimateMemUsage:()=>h});var n=i(57872);function r(e){return e&&e.byteLength||0}function o(e){return r(e.boxes)+r(e.transforms)+r(e.fragId2dbId)+r(e.geomDataIndexes)+r(e.materials)}function s(e){return r(e.geomids)+r(e.materialids)+r(e.vizflags)+(e.boxes!==e.fragments.boxes?r(e.boxes):0)+(e.transforms!==e.fragments.transforms?r(e.transforms):0)}function a(e){return r(e.nodes.nodesRaw?e.nodes.nodesRaw:e.nodes)+r(e.primitives)}var l=!1;function c(e){for(var t,i=Autodesk.Viewing.Private,n=0,c=0;c=this.getMemLimit()},this.getMemLimit=function(){return void 0!==o?o:n.MODEL_MEMORY_LIMIT},this.setMemLimit=function(e){o=e},this.cleanup=function(e){var t=e||i.impl.unloadModel.bind(i.impl);if(this.memoryExceeded()){for(var n=function(){for(var e=i.impl.modelQueue().getHiddenModels(),t=[],n=0;n{"use strict";i.r(t),i.d(t,{OverlayManager:()=>n});class n{constructor(e){this.impl=e}dtor(){this.impl=null}addScene(e){return!!e&&(Object.prototype.hasOwnProperty.call(this.impl.overlayScenes,e)||this.impl.createOverlayScene(e),!0)}removeScene(e){return!!e&&(this.impl.removeOverlayScene(e),!0)}clearScene(e){this.impl.clearOverlay(e)}hasScene(e){return!!e&&Object.prototype.hasOwnProperty.call(this.impl.overlayScenes,e)}setSceneHiddenFromMainRender(e,t){this.impl.overlayScenes[e].hiddenFromMainRender=t}addMesh(e,t){return!!(e&&t&&Object.prototype.hasOwnProperty.call(this.impl.overlayScenes,t))&&(e=Array.isArray(e)?e:[e],this.impl.addMultipleOverlays(t,e),!0)}removeMesh(e,t){return!!(e&&t&&Object.prototype.hasOwnProperty.call(this.impl.overlayScenes,t))&&(e=Array.isArray(e)?e:[e],this.impl.removeMultipleOverlays(t,e),!0)}hasMesh(e,t){var i=this.impl.overlayScenes[t];if(!i)return!1;var n=i.scene.children;for(let t=0,i=n.length;t{"use strict";i.r(t),i.d(t,{Prefs:()=>o,Prefs2D:()=>r,Prefs3D:()=>n,VIEW_TYPES:()=>s});const n={VIEW_CUBE:"viewCube",VIEW_CUBE_COMPASS:"viewCubeCompass",VIEW_TYPE:"viewType",ALWAYS_USE_PIVOT:"alwaysUsePivot",ZOOM_TOWARDS_PIVOT:"zoomTowardsPivot",SELECTION_SETS_PIVOT:"selectionSetsPivot",REVERSE_HORIZONTAL_LOOK_DIRECTION:"reverseHorizontalLookDirection",REVERSE_VERTICAL_LOOK_DIRECTION:"reverseVerticalLookDirection",ORBIT_PAST_WORLD_POLES:"orbitPastWorldPoles",CLICK_TO_SET_COI:"clickToSetCOI",GHOSTING:"ghosting",OPTIMIZE_NAVIGATION:"optimizeNavigation",AMBIENT_SHADOWS:"ambientShadows",ANTIALIASING:"antialiasing",GROUND_SHADOW:"groundShadow",GROUND_REFLECTION:"groundReflection",LINE_RENDERING:"lineRendering",EDGE_RENDERING:"edgeRendering",LIGHT_PRESET:"lightPreset",ENV_MAP_BACKGROUND:"envMapBackground",FIRST_PERSON_TOOL_POPUP:"firstPersonToolPopup",BIM_WALK_TOOL_POPUP:"bimWalkToolPopup",BIM_WALK_NAVIGATOR_TYPE:"bimWalkNavigatorType",BIM_WALK_GRAVITY:"bimWalkGravity",DEFAULT_NAVIGATION_TOOL_3D:"defaultNavigationTool3D",SELECTION_MODE:"selectionMode",ENABLE_CUSTOM_ORBIT_TOOL_CURSOR:"enableCustomOrbitToolCursor",EXPLODE_STRATEGY:"explodeStrategy",FORCE_DOUBLE_SIDED:"forceDoubleSided",DISPLAY_SECTION_HATCHES:"displaySectionHatches",LARGE_MODEL_EXPERIENCE:"largeModelExperienceBeta",OUT_OF_CORE_GPU_MEMORY_MANAGEMENT:"outOfCoreGpuMemoryManagementBeta"},r={GRAYSCALE:"grayscale",SWAP_BLACK_AND_WHITE:"swapBlackAndWhite",LOADING_ANIMATION:"loadingAnimation",FORCE_PDF_CALIBRATION:"forcePDFCalibration",FORCE_LEAFLET_CALIBRATION:"forceLeafletCalibration",DISABLE_PDF_HIGHLIGHT:"disablePdfHighlight",USE_PDF_VIEWPORT_INFO:"usePdfViewportInfo",VECTOR_VIEWING:"vectorViewing"},o={WEBGPU:"webgpu",PROGRESSIVE_RENDERING:"progressiveRendering",OPEN_PROPERTIES_ON_SELECT:"openPropertiesOnSelect",POINT_RENDERING:"pointRendering",BACKGROUND_COLOR_PRESET:"backgroundColorPreset",REVERSE_MOUSE_ZOOM_DIR:"reverseMouseZoomDir",LEFT_HANDED_MOUSE_SETUP:"leftHandedMouseSetup",FUSION_ORBIT:"fusionOrbit",FUSION_ORBIT_CONSTRAINED:"fusionOrbitConstrained",WHEEL_SETS_PIVOT:"wheelSetsPivot",RESTORE_SESSION_MEASUREMENTS:"restoreMeasurements",DISPLAY_UNITS:"displayUnits",DISPLAY_UNITS_PRECISION:"displayUnitsPrecision",KEY_MAP_CMD:"keyMapCmd",ZOOM_DRAG_SPEED:"zoomDragSpeed",ZOOM_SCROLL_SPEED:"zoomScrollSpeed"},s={DEFAULT:0,ORTHOGRAPHIC:1,PERSPECTIVE:2,PERSPECTIVE_ORTHO_FACES:3}},61183:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Preferences:()=>l});var n=i(19556),r=i(83081),o=i(26206),s=i(26477),a=i(94661);class l{constructor(e){this.options={},this.storageCache={},"string"==typeof e&&(this.options={prefix:e}),this.options={...e},this.options.prefix||(this.options.prefix="Autodesk.Viewing.Preferences."),Object.prototype.hasOwnProperty.call(this.options,"localStorage")||(this.options.localStorage=!0),this.defaults={},this.callbacks={},this.tags={},this.useLocalStorage=this.options.localStorage&&a.LocalStorage.isSupported();return new Proxy(this,{get:function(e,t){return t in e?e[t]:e.storageCache[t]}})}setWebStorageKey(e){this.storageKey=e}_getPrefixedStorageKey(e,t){return t??this.hasTag(e,"shared-storage")?"___Shared":this.getLocalStoragePrefix()+this.storageKey}webStorage(e,t,i){if(this.useLocalStorage){if(this.hasTag(e,"no-storage"))return;const n=this._getPrefixedStorageKey(e,i);let o=a.LocalStorage.getItem(n);if(o=JSON.parse(o||"{}"),void 0!==t)t instanceof s.EnumType&&(t=t.toString()),o[e]=t,a.LocalStorage.setItem(n,JSON.stringify(o));else if(void 0!==(t=o[e]))try{"__enum"===(t=JSON.parse(t)).type&&(t=s.EnumType.deSerialize(t))}catch(e){r.logger.log("Preferences: Cannot deserialize value ="+t),t=void 0}return t}}getPrefFromLocalStorage(e){return this.webStorage(e)}setPrefInLocalStorage(e,t){return this.webStorage(e,t)}addPref(e,t,i){if("string"!=typeof e||"function"==typeof this.storageCache[e])return void r.logger.log("Preferences: invalid name="+e);t instanceof s.EnumType&&(t=t.clone()),this.tags[e]={},i&&(this.tags[e]["shared-storage"]=!0);const n=this.webStorage(e);this.storageCache[e]=void 0!==n?n:t}load(e){for(var t in this.defaults=e,this.defaults)Object.prototype.hasOwnProperty.call(this.defaults,t)&&this.addPref(t,this.defaults[t])}addTags(e,t){if(!t||!e)return!1;t=Array.isArray(t)?t:[t];for(var i=0;i"object"==typeof e?JSON.stringify(e):e;return i(e)===i(t)}if(!o(this.get(e),r)){this.storageCache[e]instanceof s.EnumType?this.storageCache[e].value=r:t instanceof s.EnumType?this.storageCache[e]=t.clone():this.storageCache[e]=r;const a=this.defaults[e]instanceof s.EnumType?this.defaults[e].value:this.defaults[e];return o(this.get(e),a)?this.deleteFromWebStorage(e):this.webStorage(e,this.storageCache[e]),(void 0===i||i)&&this.dispatchEvent(e,n.PREF_CHANGED_EVENT),!0}return!1}dispatchEvent(e,t){}addListeners(e,t,i){this.callbacks[e]||(this.callbacks[e]=[]),i||(i=t),this.callbacks[e].push({changed:t,reset:i})}removeListeners(e,t,i){if(void 0!==this.callbacks[e])if(t||i){i||(i=t);for(let n=0;n{"use strict";i.r(t),i.d(t,{Profile:()=>o});var n=i(35922),r=i(94661);function o(e){if(!e)return;const t=Autodesk.Viewing,i=t.ProfileSettings.Default;let o=[];if(this.name=Object.prototype.hasOwnProperty.call(e,"name")?e.name:"Custom",this.label=e.label,this.description=e.description,this.storageVersion="2.0",this.persistent=Array.isArray(e.persistent)?e.persistent:i.persistent,this.sharedStorage=Array.isArray(e.sharedStorage)?e.sharedStorage:i.sharedStorage,this.settings=Object.assign({},i.settings),Object.prototype.hasOwnProperty.call(e,"settings")){const t=e.settings;o=Object.keys(t),this.settings=Object.assign(this.settings,t)}let s=[],a=[];if(Object.prototype.hasOwnProperty.call(e,"extensions")){const t=e.extensions.load,i=e.extensions.unload;s=t?t.slice():s,a=i?i.slice():a}this.extensions={load:s,unload:a},this.apply=function(e){let i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!e)return!1;const s=e.getLocalStoragePrefix()+"StorageVersion",a="Autodesk.Viewing.ProfileName";!e.useLocalStorage||r.LocalStorage.getItem(s)||!r.LocalStorage.getItem(a)||(()=>{const t={},i=r.LocalStorage.getItem(a),n=e.getLocalStoragePrefix();for(let e of r.LocalStorage.getAllKeys())if(-1!==e.indexOf(n))try{t[e.split(".").pop()]=JSON.parse(r.LocalStorage.getItem(e)),r.LocalStorage.removeItem(e)}catch{console.log(`Cound't convert preference to new format: ${e}`)}r.LocalStorage.setItem(n+i,JSON.stringify(t)),r.LocalStorage.removeItem(a)})();const l=e.getLocalStoragePrefix()+"StorageVersion";r.LocalStorage.setItem(l,this.storageVersion);const c=e.getLocalStoragePrefix()+"CurrentProfile";r.LocalStorage.setItem(c,this.name),e.setWebStorageKey(this.name);const h=this.settings,u=[t.ProfileSettings.Default.name,t.ProfileSettings.AEC.name],d=Object.values(n.Prefs3D),f=Object.values(n.Prefs2D);for(let t in h)if(Object.prototype.hasOwnProperty.call(h,t)){var p,m,g;const n=h[t],r=-1!==o.indexOf(t)&&-1===u.indexOf(this.name)?["ignore-producer"]:[];-1!==d.indexOf(t)?r.push("3d"):-1!==f.indexOf(t)?r.push("2d"):(r.push("2d"),r.push("3d"));let s=(null===(p=this.sharedStorage)||void 0===p||null===(m=(g=p).indexOf)||void 0===m?void 0:m.call(g,t))>=0;s&&r.push("shared-storage"),-1!==this.persistent.indexOf(t)||s||r.push("no-storage");const a=e.webStorage(t,void 0,s),l=e.get(t);if(void 0!==a){a!=l&&(e.add(t,a,r,!0),e.setDefault(t,n));continue}if(void 0!==l){e.addTags(t,r),l!==n&&i&&e.set(t,n);continue}e.add(t,n,r,!0)}return!0}}},53625:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ProfileManager:()=>o});var n=i(83081),r=i(11743);class o{constructor(){this.registered={};const e=Autodesk.Viewing.ProfileSettings;this.PROFILE_DEFAULT=new r.Profile(e.Default),this.registerProfile("default",this.PROFILE_DEFAULT),this.PROFILE_AEC=new r.Profile(e.AEC),this.registerProfile("rvt",this.PROFILE_AEC),this.registerProfile("ifc",this.PROFILE_AEC),this.PROFILE_NAVIS=new r.Profile(e.Navis),this.registerProfile("nwc",this.PROFILE_NAVIS),this.registerProfile("nwd",this.PROFILE_NAVIS),this.PROFILE_FLUENT=new r.Profile(e.Fluent),this.registerProfile("fluent",this.PROFILE_FLUENT)}registerProfile(e,t){t?(e=e||"default",this.registered[e]=t instanceof r.Profile?t:new r.Profile(t)):n.logger.log("ProfileManager: missing profileSettings when registering a profile.")}unregisterProfile(e){e?delete this.registered[e]:n.logger.log("ProfileManager: missing fileExt when unregistering a profile.")}getProfiles(){return Object.assign({},this.registered)}getProfileOrDefault(e){if(!e)return n.logger.log("ProfileManager: missing fileExt for getProfile. Returning the default Profile."),this.registered.default;const t=this.registered[e];return t||(n.logger.log(`ProfileManager: No profile registered for ${e}. Returning the default Profile.`),this.registered.default)}}},26477:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DefaultSettings:()=>u,EnumType:()=>c,ProfileSettings:()=>v});var n=i(35922),r=i(83081),o=i(63430),s=i(55280),a=i(97005),l=i(13202);class c{constructor(e,t){if(!Array.isArray(e)||0===e.length)throw new Error(`Invalid ${e}`);this.values=new Set(e),this.current=e.includes(t)?t:e[0]}get value(){return this.current}set value(e){this.values.has(e)&&(this.current=e)}clone(){return c.deSerialize(JSON.parse(this.toString()))}toString(){return JSON.stringify({type:"__enum",values:Array.from(this.values),current:this.current})}static deSerialize(e){if("__enum"===e.type)return new c(e.values,e.current)}}const h={};h[n.Prefs3D.AMBIENT_SHADOWS]=!0,h[n.Prefs3D.ANTIALIASING]=!(0,s.isMobileDevice)(),h[n.Prefs3D.GROUND_SHADOW]=!0,h[n.Prefs3D.GROUND_REFLECTION]=!1,h[n.Prefs3D.GHOSTING]=!0,h[n.Prefs3D.VIEW_CUBE]=!(0,s.isMobileDevice)(),h[n.Prefs3D.VIEW_CUBE_COMPASS]=!1,h[n.Prefs3D.VIEW_TYPE]=n.VIEW_TYPES.DEFAULT,h[n.Prefs3D.LINE_RENDERING]=!0,h[n.Prefs3D.LIGHT_PRESET]=a.DefaultLightPreset,h[n.Prefs3D.EDGE_RENDERING]=!1,h[n.Prefs3D.REVERSE_HORIZONTAL_LOOK_DIRECTION]=!1,h[n.Prefs3D.REVERSE_VERTICAL_LOOK_DIRECTION]=!1,h[n.Prefs3D.ALWAYS_USE_PIVOT]=!1,h[n.Prefs3D.ZOOM_TOWARDS_PIVOT]=!1,h[n.Prefs3D.ORBIT_PAST_WORLD_POLES]=!0,h[n.Prefs3D.CLICK_TO_SET_COI]=!1,h[n.Prefs3D.OPTIMIZE_NAVIGATION]=(0,s.isMobileDevice)(),h[n.Prefs3D.ENV_MAP_BACKGROUND]=!1,h[n.Prefs3D.FIRST_PERSON_TOOL_POPUP]=!0,h[n.Prefs3D.BIM_WALK_TOOL_POPUP]=!0,h[n.Prefs3D.BIM_WALK_NAVIGATOR_TYPE]="default",h[n.Prefs3D.BIM_WALK_GRAVITY]=!0,h[n.Prefs3D.DEFAULT_NAVIGATION_TOOL_3D]="default",h[n.Prefs3D.SELECTION_MODE]=o.SelectionMode.LEAF_OBJECT,h[n.Prefs3D.ENABLE_CUSTOM_ORBIT_TOOL_CURSOR]=!0,h[n.Prefs3D.EXPLODE_STRATEGY]="hierarchy",h[n.Prefs3D.SELECTION_SETS_PIVOT]=!1,h[n.Prefs3D.FORCE_DOUBLE_SIDED]=!1,h[n.Prefs3D.DISPLAY_SECTION_HATCHES]=!0,h[n.Prefs3D.LARGE_MODEL_EXPERIENCE]=!1,h[n.Prefs3D.OUT_OF_CORE_GPU_MEMORY_MANAGEMENT]=!1,h[n.Prefs2D.GRAYSCALE]=!1,h[n.Prefs2D.SWAP_BLACK_AND_WHITE]=!1,h[n.Prefs2D.LOADING_ANIMATION]=!1,h[n.Prefs2D.FORCE_PDF_CALIBRATION]=!1,h[n.Prefs2D.FORCE_LEAFLET_CALIBRATION]=!0,h[n.Prefs2D.DISABLE_PDF_HIGHLIGHT]=!1,h[n.Prefs2D.USE_PDF_VIEWPORT_INFO]=!1,h[n.Prefs2D.VECTOR_VIEWING]=!0,h[n.Prefs.WEBGPU]=!1,h[n.Prefs.PROGRESSIVE_RENDERING]=!0,h[n.Prefs.OPEN_PROPERTIES_ON_SELECT]=!1,h[n.Prefs.POINT_RENDERING]=!0,h[n.Prefs.BACKGROUND_COLOR_PRESET]=null,h[n.Prefs.REVERSE_MOUSE_ZOOM_DIR]=!1,h[n.Prefs.LEFT_HANDED_MOUSE_SETUP]=!1,h[n.Prefs.FUSION_ORBIT]=!0,h[n.Prefs.FUSION_ORBIT_CONSTRAINED]=!0,h[n.Prefs.WHEEL_SETS_PIVOT]=!1,h[n.Prefs.RESTORE_SESSION_MEASUREMENTS]=!0,h[n.Prefs.DISPLAY_UNITS]=new c(l.displayUnitsEnum),h[n.Prefs.DISPLAY_UNITS_PRECISION]=new c(l.displayUnitsPrecisionEnum),h[n.Prefs.KEY_MAP_CMD]=!0;const u=h,d={name:"Default",label:"Manufacturing (Default)",description:"Default Viewer settings"};d.settings=h,d.persistent=[n.Prefs3D.ALWAYS_USE_PIVOT,n.Prefs3D.ZOOM_TOWARDS_PIVOT,n.Prefs3D.REVERSE_HORIZONTAL_LOOK_DIRECTION,n.Prefs3D.REVERSE_VERTICAL_LOOK_DIRECTION,n.Prefs3D.ORBIT_PAST_WORLD_POLES,n.Prefs3D.CLICK_TO_SET_COI,n.Prefs3D.GHOSTING,n.Prefs3D.OPTIMIZE_NAVIGATION,n.Prefs3D.AMBIENT_SHADOWS,n.Prefs3D.ANTIALIASING,n.Prefs3D.GROUND_SHADOW,n.Prefs3D.GROUND_REFLECTION,n.Prefs3D.FIRST_PERSON_TOOL_POPUP,n.Prefs3D.BIM_WALK_TOOL_POPUP,n.Prefs3D.BIM_WALK_GRAVITY,n.Prefs3D.VIEW_TYPE,n.Prefs3D.SELECTION_MODE,n.Prefs2D.SWAP_BLACK_AND_WHITE,n.Prefs2D.VECTOR_VIEWING,n.Prefs2D.LOADING_ANIMATION,n.Prefs.OPEN_PROPERTIES_ON_SELECT,n.Prefs.REVERSE_MOUSE_ZOOM_DIR,n.Prefs.LEFT_HANDED_MOUSE_SETUP,n.Prefs.WHEEL_SETS_PIVOT,n.Prefs.KEY_MAP_CMD,n.Prefs.DISPLAY_UNITS,n.Prefs.DISPLAY_UNITS_PRECISION],d.sharedStorage=[n.Prefs3D.LARGE_MODEL_EXPERIENCE,n.Prefs3D.OUT_OF_CORE_GPU_MEMORY_MANAGEMENT,n.Prefs.WEBGPU],d.extensions={load:[],unload:[]};const f=g(d);f.name="AEC",f.label="Construction (AEC)",f.description="A common set of preferences designed for the Construction industry",f.settings[n.Prefs.REVERSE_MOUSE_ZOOM_DIR]=!0,f.settings[n.Prefs2D.VECTOR_VIEWING]=!0,f.settings[n.Prefs3D.EDGE_RENDERING]=!(0,s.isMobileDevice)(),f.settings[n.Prefs3D.LIGHT_PRESET]=(0,s.getGlobal)().DefaultLightPresetAec||"Boardwalk",f.settings[n.Prefs3D.ENV_MAP_BACKGROUND]=!0,f.settings[n.Prefs3D.VIEW_CUBE_COMPASS]=!0,f.settings[n.Prefs3D.SELECTION_SETS_PIVOT]=!0,f.extensions={load:[],unload:[]};const p=g(f);p.name="Fluent",p.label="Design Collaboration",p.description="User experience that matches Design Collaboration",p.settings[n.Prefs.WHEEL_SETS_PIVOT]=!0,p.settings[n.Prefs.RESTORE_SESSION_MEASUREMENTS]=!1,p.settings[n.Prefs2D.FORCE_PDF_CALIBRATION]=!0,p.settings[n.Prefs3D.ALWAYS_USE_PIVOT]=!0,p.settings[n.Prefs3D.ENABLE_CUSTOM_ORBIT_TOOL_CURSOR]=!1,p.extensions={load:[],unload:[]},p.persistent.splice(p.persistent.indexOf(n.Prefs3D.VIEW_TYPE),1);const m=g(f);function g(e){var t;e||(r.logger.log("ProfileSettings.clone: missing profileSettings, using DefaultProfileSettings..."),e=d);const i={};return i.settings=Object.assign({},e.settings),i.extensions={},Object.prototype.hasOwnProperty.call(e,"extensions")?(i.extensions.load=Object.prototype.hasOwnProperty.call(e.extensions,"load")?e.extensions.load.slice():[],i.extensions.unload=Object.prototype.hasOwnProperty.call(e.extensions,"unload")?e.extensions.unload.slice():[]):i.extensions={load:[],unload:[]},i.persistent=e.persistent.slice(),i.sharedStorage=null===(t=e.sharedStorage)||void 0===t?void 0:t.slice(),i}m.name="Navis",m.label="Navisworks",m.description="Provides a user experience similar to Autodesk Navisworks desktop application",m.settings[n.Prefs3D.BIM_WALK_TOOL_POPUP]=!1,m.settings[n.Prefs3D.BIM_WALK_NAVIGATOR_TYPE]="aec",m.settings[n.Prefs3D.DEFAULT_NAVIGATION_TOOL_3D]="extractor_defined";const v={Default:d,AEC:f,Fluent:p,Navis:m,clone:g}},28441:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ProgressState:()=>n});let n={ROOT_LOADED:0,LOADING:1,RENDERING:2,OPTIMIZING:3}},33398:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PropertySet:()=>r});var n=i(8022);class r{constructor(e){this.map=e}forEach(e){if(e)for(let t in this.map){if("__selected_dbIds__"===t)continue;e(t,this.map[t])}}getAggregation(e){if(!e)return null;if("string"==typeof e&&(e=this.map[e]),0===e.length)return null;const t=e[0].type;if(!(0,n.hA)(t))return null;const i={average:0,count:0,max:0,median:0,min:0,mode:[],range:0,sum:0},r=e.map((e=>Number(e.displayValue)));r.sort(((e,t)=>e-t));const o={};let s=0,a=0;r.forEach((e=>{a+=e,Object.prototype.hasOwnProperty.call(o,e)?o[e]++:o[e]=1,s=Math.max(s,o[e]),i.sum+=e})),i.count=r.length,i.average=a/i.count,i.max=r[i.count-1],i.min=r[0];const l=Math.ceil(i.count/2);i.median=i.count%2&&i.count>1?(r[l]+r[l-1])/2:r[l-1];for(let e in o)o[e]===s&&i.mode.push(Number(e));return i.range=i.max-i.min,i.sum=function(e,t){var i=t.displayValue.toString().split(".");if(1===i.length)return e;const n=e.toString().split(".");if(1===n.length)return e;const r=n[1];let o=i[1];if(r===o)return e;o=o.match(/\d+/);const s=o&&o[0]&&o[0].length||t.precision||0;return Number(e.toFixed(s))}(i.sum,e[0]),i}getValue2PropertiesMap(e){if(!e)return null;if("string"==typeof e&&(e=this.map[e]),!e||0===e.length)return null;const t={};return e.forEach((e=>{Object.prototype.hasOwnProperty.call(t,e.displayValue)||(t[e.displayValue]=[]),t[e.displayValue].push(e.parentName)})),t}getValidIds(e,t){const i=Object.keys(this.map),n=[];for(let r=0;r=2&&e[0]===t){n.push(o);continue}}}return n}getDbIds(){return this.map.__selected_dbIds__}getVisibleKeys(){const e=[];return this.forEach(((t,i)=>{i[0].hidden||e.push(t)})),e}getKeysWithCategories(){const e=[];return this.forEach(((t,i)=>{const n=!!i[0].hidden;i[0].displayCategory&&!n&&e.push(t)})),e}merge(e){if(!(e instanceof r))return this;const t=e.map;for(let e in t){const i=t[e];if(!Object.prototype.hasOwnProperty.call(this.map,e)){this.map[e]=i;continue}const n=this.map[e];if("__selected_dbIds__"!==e)for(let e=0;e{"use strict";i.r(t),i.d(t,{AppScreenModeDelegate:()=>u,ApplicationScreenModeDelegate:()=>d,NullScreenModeDelegate:()=>f,ScreenMode:()=>c,ScreenModeDelegate:()=>h,ScreenModeMixin:()=>p});var n=i(55280),r=i(19556),o=i(83081),s=["fullscreenchange","mozfullscreenchange","webkitfullscreenchange","MSFullscreenChange"];function a(e,t){for(var i=0;i{"use strict";i.r(t),i.d(t,{ScreenShot:()=>x});var n=i(57872),r=i(4897),o=i(88190),s=i(55280),a=i(8879),l=i(68747),c=i(12153),h=i(24528),u=i(72091),d=i(19556),f=i(71211);const p=(e,t,i,d,p)=>{let m=p.getMaterials(),g=p.glrenderer(),v=p.renderer(),y=p.modelQueue(),b=[],x=(d=d||{}).models||y.getModels();for(let e=0;e0;let w,T;E.reset(_,S,A),E.areaCullThreshold=n.PIXEL_CULLING_THRESHOLD,g.pushViewport(),g.setPixelRatio(1),d.renderContext?w=d.renderContext:(w=new o.RenderContext,w.init(g,e,t,{offscreen:!0})),p.isSheetRendererNeeded()&&(T=d.sheetRenderer?d.sheetRenderer:new f.A(p,w,g,m)),m.addOverrideMaterial("normalsMaterial_screenshot",w.getDepthMaterial()),m.addOverrideMaterial("edgeMaterial_screenshot",w.getEdgeMaterial());let M=d.renderConfig||v.getConfig();w.applyConfig(M),w.beginScene(p.scene,_,p.noLights,!0),g.popViewport(),g.setPixelRatio();let C,P=0,D={stop:()=>{C&&((0,s.getGlobal)().clearTimeout(C),R())},finished:()=>!!C},L=-1,I=[];for(let e=0;e{I.forEach((e=>e.iter.unregisterView(e.viewId))),I.length=0};let O=d.fragOptions,N=O?[]:void 0;const F=e=>{if(!(!!O&&e instanceof a.RenderBatch))return;let t=e.frags;e.forEachNoMesh((function(e,i){N[i]=t.vizflags[e];let n=O.isFragOff&&O.isFragOff(e);void 0!==n&&t.setFlagFragment(e,l.MeshFlags.MESH_HIDE,n);let r=O.isFragVisible&&O.isFragVisible(e);void 0!==r&&t.setFlagFragment(e,l.MeshFlags.MESH_VISIBLE,r)}))},U=e=>{if(!(!!O&&e instanceof a.RenderBatch))return;let t=e.frags;e.forEachNoMesh((function(e,i){let n=N[i],r=!!(n&l.MeshFlags.MESH_HIDE),o=!!(n&l.MeshFlags.MESH_VISIBLE);t.setFlagFragment(e,l.MeshFlags.MESH_HIDE,r),t.setFlagFragment(e,l.MeshFlags.MESH_VISIBLE,o)}))},B=(()=>{let e;if(d.models){e=new u.Box3;for(let t=0;t{d.excludeThemingColors&&e instanceof a.RenderBatch&&(e.frags.is2d||(V=e.frags.db2ThemingColor,e.frags.db2ThemingColor=k))},z=e=>{V&&(e.frags.db2ThemingColor=V,V=null)};let H=new u.Vector4(0,0,-1,-1e20),W=[],j=null;const q=()=>{if(!(()=>{let e=!0;for(let t=0;t{j=m.getCutPlanes();let e=j.length;if(W.length!==e){W.length=e;for(let t=0;t{var i;return t.id===(null===(i=e.frags)||void 0===i?void 0:i.modelId)}));if(null!=t&&t.is2d()){const e=t.getModelToViewerTransform(),i=e?e.getMaxScaleOnAxis():1;if(!p.is2d||1!==i){const e=t.getVisibleBounds(),n=w.settings.deviceWidth,r=w.settings.deviceHeight,o=c.SceneMath.getPixelsPerUnit(_,!0,e,r,null,e);m.updatePixelScaleForModel(t,o,n,r,i,_)}}if(F(e),G(e),e instanceof a.RenderBatch&&e.applyVisibility(h.RenderFlags.RENDER_NORMAL,E),T&&e.frags.is2d?T.renderScenePart(e,!0,!0,!1,w):(w.renderScenePart(e,!0,!0,!1,!1),(e.frags&&!e.frags.areAllVisible()&&p.showGhosting||O)&&(e instanceof a.RenderBatch&&e.applyVisibility(h.RenderFlags.RENDER_HIDDEN,E),v.setEdgeColor(p.edgeColorGhosted),e.overrideMaterial=p.fadeMaterial,w.renderScenePart(e,!0,!0,!1,!1),v.setEdgeColor(p.edgeColorMain),e.overrideMaterial=null)),z(e),U(e),P++,performance.now()-n>20)break}if(g.popViewport(),g.setPixelRatio(),m.updatePixelScale(r,v.settings.deviceWidth,v.settings.deviceHeight,_),d.excludeCutPlanes&&v.toggleTwoSided(m.setCutPlanes(j)),d.afterRender&&d.afterRender(),P===b.length?(()=>{R();let e=w.getColorTarget();if(M.aoEnabled||M.antialias)M.aoEnabled&&w.computeSSAO(),e=w.getNamedTarget("overlay"),w.getBlendPass().uniforms.tOverlay.value=null,w.setOffscreenTarget(e),w.presentBuffer();else{let e=p.lightsOn?p.lights:p.no_lights;if(d.overlayScenes){const t=d.overlayScenes??p.overlayScenes;w.renderOverlays(t,e)}}if(d.returnAsTarget){const t=d.extraTargets?d.extraTargets.map((e=>w.getNamedTarget(e))):void 0;return void i(w,e,_,T,t)}var t;d.sheetRenderer||(null===(t=T)||void 0===t||t.destroy(),T=null),w.targetToCanvas(e).canvas.toBlob((function(e){let t=(0,s.getGlobal)().URL.createObjectURL(e);i&&(i(t),d.renderContext||w.cleanup())}))})():C=(0,s.getGlobal)().setTimeout(q,0),d.onProgress){let e=Math.floor(100*P/b.length);e!==L&&(L=e,d.onProgress(e))}};return q(),D},m=(e,t,i,n,r)=>{var{fullPage:o,bounds:a,getCropBounds:l,margin:c,overlayRenderer:h,overlayRendererExtraOptions:d}=r;o&&(a=e.impl.getVisibleBounds());const f=e.impl.getCanvasBoundingClientRect().width;let m=e.navigation.getCamera();a&&(m=b(e,a,c));const y=g(e,m);try{if(o){const e=y.getSize(new u.Vector3),n=f/Math.max(e.x,e.y);t=Math.floor(t*n),i=Math.floor(i*n)}const r=r=>{if(o){const e=t/f;y.min.x*=e,y.min.y*=e,y.max.x*=e,y.max.y*=e,v(r,y,n)}else if(l){const t=l(e,m,a);v(r,t,n)}else r.toBlob((e=>{const r=(0,s.getGlobal)().URL.createObjectURL(e);n(r,t,i)}))},c=e.impl.selector.getSelection();return e.clearSelection(),p(t,i,((n,o,s)=>{if(e.impl.selector.setSelection(c),h){h(e,{width:t,height:i,ctx:n,target:o,screenshotCamera:s,onRenderDone:r},d)}else{const{canvas:e}=n.targetToCanvas(o);r(e)}}),{returnAsTarget:!0,camera:m},e.impl)}catch(e){console.error("getScreenShot error: "+e),n(null)}},g=(e,t)=>{const i=e.impl.getVisibleBounds(void 0,void 0,void 0,!0),n=e.worldToClient(i.min,t),r=e.worldToClient(i.max,t);return(new u.Box3).setFromPoints([n,r])},v=(e,t,i)=>{const n=(0,s.getGlobal)().document.createElement("canvas"),r=n.getContext("2d"),o=t.getSize(new u.Vector3),a=Math.min(Math.floor(o.x),e.width),l=Math.min(Math.floor(o.y),e.height);n.width=a,n.height=l;const c=Math.max(Math.floor(t.min.x),0),h=Math.max(Math.floor(t.min.y),0),d=a,f=l;r.drawImage(e,c,h,d,f,0,0,a,l),n.toBlob((e=>{var t=(0,s.getGlobal)().URL.createObjectURL(e);i(t,a,l)}),"image/png")},y=(e,t,i,n)=>{const r=(0,s.getGlobal)().document.createElement("canvas"),o=r.getContext("2d"),a=new Image;r.width=t,r.height=i,a.src=e,a.onload=function(){o.drawImage(a,0,0,t,i);const e=r.toDataURL("image/png");n(e)}},b=(e,t,i)=>{i=i||e.navigation.FIT_TO_VIEW_HORIZONTAL_MARGIN;const n={horizontal:e.navigation.FIT_TO_VIEW_HORIZONTAL_MARGIN,vertical:e.navigation.FIT_TO_VIEW_VERTICAL_MARGIN};e.navigation.FIT_TO_VIEW_HORIZONTAL_MARGIN=i,e.navigation.FIT_TO_VIEW_VERTICAL_MARGIN=i;const r=e.getState({viewport:!0});e.navigation.fitBounds(!0,t,!1,!0);const o=e.navigation.getCamera().clone();return e.restoreState(r,void 0,!0),e.navigation.FIT_TO_VIEW_HORIZONTAL_MARGIN=n.horizontal,e.navigation.FIT_TO_VIEW_VERTICAL_MARGIN=n.vertical,e.impl.updateNearFarValues(o,t),o};let x={getScreenShotLegacy:function(e,t,i,n,r){var o=e.impl,a=o.renderer(),l=a.settings.logicalWidth,c=a.settings.logicalHeight,h=o.progressiveRender,f=o.glrenderer().getPixelRatio();t&&i||(t=l,i=c),o.progressiveRender=!1,o.resize(t/f,i/f,!0),o.tick(performance.now());var p=new u.WebGLRenderTarget(t,i,{minFilter:u.LinearFilter,magFilter:u.LinearFilter,format:u.RGBFormat,type:u.UnsignedByteType});const m=a.getOffscreenTarget();function g(){var e=a.targetToCanvas(p||a.getColorTarget());function t(){o.progressiveRender=h,o.resize(l,c,!0),e.canvas.toBlob((function(e){var t=(0,s.getGlobal)().URL.createObjectURL(e);n?n(t):(0,s.getGlobal)().open(t)}),"image/png")}p&&(p.dispose(),p=void 0,o.glrenderer().setRenderTarget(null)),r?r(e.ctx,t):t()}if(a.setOffscreenTarget(p),a.presentBuffer(),a.setOffscreenTarget(m),e.model.isLeaflet()){var v=!1;const t=function(){v=!0,o.progressiveRender=h,o.resize(l,c,!0),p&&p.dispose()};e.addEventListener(d.CANCEL_LEAFLET_SCREENSHOT,t,{once:!0}),o.invalidate(!0),e.model.getIterator().callWhenRefined((function(){v||(e.removeEventListener(d.CANCEL_LEAFLET_SCREENSHOT,t),g())}))}else g()},getScreenShot:p,getScreenShotWithBounds:m,getScreenShotAtScreenSize:(e,t,i)=>{const n=e.impl.getCanvasBoundingClientRect(),r=Math.floor(n.width),o=Math.floor(n.height);m(e,r,o,((e,i,n)=>{e?y(e,i,n,(e=>{t(e,i,n)})):t(null)}),i)},getSceneClientBounds:g,cropImage:v,blobToImage:y,makeBoundsSquare:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=e.getSize(new u.Vector3),n=Math.max(i.x,i.y,t);e.expandByVector(new u.Vector3((n-i.x)/2,(n-i.y)/2,0))},getCameraWithFitBounds:b}},82976:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Thumbnails:()=>l});var n=i(94661),r=i(8412),o=i(84045),s=i(55280),a=i(11653);let l={getUrlForBubbleNode:function(e,t){if(!e)return Promise.reject(new Error("Missing instance of BubbleNode"));var i=e.findParentGeom2Dor3D();if(!i)return Promise.reject(new Error("No thumbnail available."));const l=(t=t||{}).size||200,c=e.getRootNode();return(c.data.isVectorPDF||i.data.isVectorPDF)&&c.data.getPDF?new Promise((t=>{let i=e.data,r=c.data.getPDF(),o=l,a=l,h=`${i.guid}/thumbnail/${o}x${a}`;!function(e,t,i,r,o,a){var l=n.LocalStorage.getItem(o);l?a(l):e.getPage(t).then((e=>{var t=(0,s.getGlobal)().document.createElement("canvas");t.width=i,t.height=r;var l=t.getContext("2d"),c={scale:1},h=e.getViewport(c),u=Math.min(t.width/h.width,t.height/h.height);e.render({canvasContext:l,viewport:e.getViewport({scale:u})}).promise.then((()=>{e.cleanup(),t.toBlob((e=>{var t=new FileReader;t.readAsDataURL(e),t.onloadend=function(){n.LocalStorage.setItem(o,t.result),a(t.result)}}),"image/png")}))}))}(r,i.page,o,a,h,t)})):new Promise(((t,i)=>{var n={urn:c.urn(),width:l,height:l,guid:encodeURIComponent(e.guid()),acmsession:r.endpoint.getAcmSession()},h={responseType:"blob",skipAssetCallback:!0,size:l,guid:n.guid,acmsession:n.acmSession};let u="urn:"+n.urn;e.data.thumbnailUrn&&(u=c.getDocument().getFullPath(e.data.thumbnailUrn));var d=void 0;if(!(0,s.getGlobal)().USE_OTG_DS_PROXY){var f=(0,r.getEnv)();d=a.EnvironmentConfigurations[f].UPSTREAM;const e=(0,a.getUpstreamApiData)(f,r.endpoint.getApiFlavor());h.apiData=e}o.ViewingService.getThumbnail((0,r.initLoadContext)({endpoint:d}),u,(e=>{var i=new FileReader;i.onload=e=>{var i=e.target.result;t(i)},i.readAsDataURL(e)}),(()=>{i(new Error("Thumbnail is unavailable."))}),h)}))}}},91735:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Viewer3D:()=>ee,waitForCompleteLoad:()=>te});var n=i(72091),r=i(55280),o=i(83081),s=i(11743),a=i(35922),l=i(26477),c=i(13202),h=i(53625),u=i(8600),d=i(57872),f=i(57480),p=i(25004),m=i(24840),g=i(92037),v=i(55270),y=i(75109),b=i(17016),x=i(83464),_=i(40723),E=i(68793),S=i(55855),A=i(38842),w=i(19556),T=i(54393),M=i(13e3),C=i(21174),P=i(23261),D=i(43719),L=i(55066),I=i(99211),R=i(32431),O=i(49930),N=i(26206);const F=416,U=1e3;class B{constructor(e){this.viewer=e,this.setGlobalManager(this.viewer.globalManager),this.domElement=null,this._step=this._step.bind(this),this._maskId="mask"+Date.now()}createDom(e){const t=this.getDocument();this.domElement=t.createElement("div"),this.domElement.className="forge-spinner",this._initTransform="translate(-50%, -50%) scale(0.5)",this.domElement.style.transform=this._initTransform.slice();var i=this._createSvgElement("svg");i.setAttribute("width","242"),i.setAttribute("height","242"),i.setAttribute("viewBox","0 0 72 72"),i.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),this.domElement.appendChild(i);var n=this._createWheelPointData(10,72,6.75);this._createMask(n);var r=this._createSvgElement("polygon");r.setAttribute("mask",`url(#${this._maskId})`),i.appendChild(r),this._addPoints(n.outerPoints,r),this._createSegments(n);var o=t.createElement("img");return o.src=Autodesk.Viewing.Private.getResourceUrl("res/ui/powered-by-autodesk-blk-rgb.png"),this._onResize=this._onResize.bind(this),o.onload=()=>{this._onResize(),this._initResize=!0,this.viewer.addEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this._onResize)},this.domElement.appendChild(o),e&&e.appendChild(this.domElement),this.domElement.style.display="none",this.domElement}_createSvgElement(e){return this.getDocument().createElementNS("http://www.w3.org/2000/svg",e)}_getSvg(){return null==this?void 0:this.domElement.getElementsByTagNameNS("http://www.w3.org/2000/svg","svg")[0]}_createMask(e){const t=this._getSvg(),i=this._createSvgElement("defs"),n=this._createSvgElement("mask");n.id=this._maskId,i.appendChild(n),t.appendChild(i);const r=this._createSvgElement("polygon");r.style.opacity=.15,r.style.fill="#FFF",n.appendChild(r),this._addPoints(e.outerPoints,r);const o=this._createSvgElement("polygon");n.appendChild(o),this._addPoints(e.innerPoints,o)}_step(e){this.startTime||(this.startTime=e);const t=(e-this.startTime)%U;this._setSegmentOpacities(t);const i=this.getWindow();this._animId=i.requestAnimationFrame(this._step)}_stop(){if(this._animId){this.getWindow().cancelAnimationFrame(this._animId),this._animId=null}}_setSegmentOpacities(e){this.segments.forEach(((t,i)=>{const n=Math.abs(i-this.segments.length)-1;t.style.opacity=this._getSegmentOpacity(n,e)}))}_getSegmentOpacity(e,t){const i=e*(U/this.segments.length);return i+F>U&&ti+F?0:Math.abs((t-i)/F-1)}_getSegments(){return Array.from(this.domElement.querySelectorAll(".segment"))}_addPoints(e,t){for(let i of e){const e=this._getSvg().createSVGPoint();e.x=i[0],e.y=i[1],t.points.appendItem(e)}}_createWheelPointData(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;const n=t/2,r=t/2,o=t/2,s={outerPoints:[],innerPoints:[]};for(let t=1;t<=e;t++)s.outerPoints.push([r+n*Math.cos(2*t*Math.PI/e),o+n*Math.sin(2*t*Math.PI/e)]),s.innerPoints.push([r+(n-i)*Math.cos(2*t*Math.PI/e),o+(n-i)*Math.sin(2*t*Math.PI/e)]);return s}_createSegments(e){const{outerPoints:t,innerPoints:i}=e,n=this._getSvg(),r=(e,t)=>{var i=this._createSvgElement("polygon");i.classList.add("segment"),i.classList.add(t),this._addPoints(e,i),n.appendChild(i)};for(let e=t.length-1;e>=0;--e){let n=t[e],o=t[e-1],s=i[e],a=i[e-1];0===e&&(o=t[t.length-1],a=i[t.length-1]),r([n,o,s],"light-blue"),r([s,a,o],"dark-blue")}}_fadeOut(){let e=1;const t=setInterval((()=>{var i;null!==(i=this.domElement)&&void 0!==i&&i.style?(e<=.1&&(clearInterval(t),this.domElement.style.display="none"),this.domElement.style.opacity=e,e-=.1*e):clearInterval(t)}),1)}show(){this.domElement&&(this.domElement.style.display="block",this.domElement.style.opacity=1,this.segments=this._getSegments(),this._step(1))}hide(){if(this.domElement){this._hide=e=>{this._stop(),e.model.is3d()?this._fadeOut():(this.domElement.style.opacity=0,this.domElement.style.display="none")};var e=this.viewer.impl.modelQueue().getModels();0===e.length?this.viewer.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,this._hide,{once:!0}):this._hide({model:e[0]})}}destroy(){var e;this._stop(),null!==(e=this.domElement)&&void 0!==e&&e.parentElement&&this.domElement.parentElement.removeChild(this.domElement),this.domElement=null,this.viewer.removeEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this._onResize)}_onResize(){var e;if(this._initResize)return void(this._initResize=!1);const t=this.domElement;if(!t)return;if("none"==t.style.display)return;const i=t.parentElement;if(!i)return;const n=i.getBoundingClientRect(),r=t.getBoundingClientRect(),o=Math.max(r.width/n.width,(r.height+350)/n.height),s=null===(e=this.domElement)||void 0===e||null===(e=e.style)||void 0===e?void 0:e.transform;if(s)if(o>.8){const e=/[-+]?scale\(\d*\.\d+|\d+\)/,t=e.exec(s);if(t.length>0){const i=t[0].split("scale(")[1],n=Number((i/o).toFixed(4)),r=s.replace(e,`scale(${n}`);r!=this.domElement.style.transform&&n<=.5&&n>.2&&(this.domElement.style.transform=r)}}else this.domElement.style.transform!=this._initTransform&&(this.domElement.style.transform=this._initTransform)}}N.GlobalManagerMixin.call(B.prototype);class k{constructor(){this.domElement=null}createDom(e){var t=this.getDocument(),i=t.createElement("div");i.className="spinner",e&&e.appendChild(i);for(var n=1;n<=3;n++){var r=t.createElement("div");r.className="bounce"+n,i.appendChild(r)}return this.domElement=i,this.hide(),i}show(){this.domElement&&(this.domElement.style.display="block")}hide(){this.domElement&&(this.domElement.style.display="None")}destroy(){this.domElement=null}}N.GlobalManagerMixin.call(k.prototype);var V=i(12153),G=i(18817);const z=Object.freeze({pdf:"Autodesk.PDF",scalaris:"Autodesk.Scalaris",dwf:"Autodesk.DWF",dwfx:"Autodesk.DWF",rcp:"Autodesk.ReCap",gltf:"Autodesk.glTF",glb:"Autodesk.glTF"});var H=i(13002),W=i(8811),j=i(97005),q=i(1979),X=i(85403),Y=i(8412);var K=i(61183);class Q extends K.Preferences{constructor(e,t){super(t),this.viewer=e,this.setGlobalManager(e.globalManager),e.addEventListener(w.PREF_CHANGED_EVENT,(e=>{var t=this.callbacks[e.name];t&&t.forEach((t=>{var i=t.changed;i&&"function"==typeof i&&i(e.value)}))})),e.addEventListener(w.PREF_RESET_EVENT,(e=>{var t=this.callbacks[e.name];t&&t.forEach((t=>{var i=t.reset;i&&"function"==typeof i&&i(e.value)}))}));const i={[a.Prefs3D.VIEW_CUBE]:function(t){e.getExtension("Autodesk.ViewCubeUi",(function(e){e.displayViewCube(t)}))},[a.Prefs3D.ALWAYS_USE_PIVOT]:e.setUsePivotAlways.bind(e),[a.Prefs3D.ORBIT_PAST_WORLD_POLES]:e.setOrbitPastWorldPoles.bind(e),[a.Prefs3D.ZOOM_TOWARDS_PIVOT]:e.setZoomTowardsPivot.bind(e),[a.Prefs.REVERSE_MOUSE_ZOOM_DIR]:e.setReverseZoomDirection.bind(e),[a.Prefs.LEFT_HANDED_MOUSE_SETUP]:e.setUseLeftHandedInput.bind(e),[a.Prefs3D.CLICK_TO_SET_COI]:e.setClickToSetCOI.bind(e),[a.Prefs.ZOOM_DRAG_SPEED]:function(t){var i;const n=e.toolController.getTool("dolly");null==n||null===(i=n.setDollyDragScale)||void 0===i||i.call(n,t)},[a.Prefs.ZOOM_SCROLL_SPEED]:t=>{var i;const n=e.toolController.getTool("dolly");null==n||null===(i=n.setDollyScrollScale)||void 0===i||i.call(n,t)},[a.Prefs3D.ANTIALIASING]:t=>e.setQualityLevel(this.get("ambientShadows"),t),[a.Prefs3D.AMBIENT_SHADOWS]:t=>e.setQualityLevel(t,e.prefs.get("antialiasing")),[a.Prefs3D.GROUND_SHADOW]:e.setGroundShadow.bind(e),[a.Prefs3D.GROUND_REFLECTION]:e.setGroundReflection.bind(e),[a.Prefs2D.SWAP_BLACK_AND_WHITE]:e.setSwapBlackAndWhite.bind(e),[a.Prefs3D.OPTIMIZE_NAVIGATION]:e.setOptimizeNavigation.bind(e),[a.Prefs.PROGRESSIVE_RENDERING]:e.setProgressiveRendering.bind(e),[a.Prefs.GHOSTING]:e.setGhosting.bind(e),[a.Prefs3D.LINE_RENDERING]:t=>e.hideLines(!t),[a.Prefs.POINT_RENDERING]:t=>e.hidePoints(!t),[a.Prefs3D.EDGE_RENDERING]:e.setDisplayEdges.bind(e),[a.Prefs3D.ENV_MAP_BACKGROUND]:e.setEnvMapBackground.bind(e),[a.Prefs3D.LIGHT_PRESET]:e.setLightPreset.bind(e)};Object.keys(i).forEach((e=>{this.addListeners(e,i[e])}))}dispatchEvent(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:w.PREF_CHANGED_EVENT;const i=this.get(e);this.viewer.dispatchEvent({type:t,name:e,value:i})}}const Z=Autodesk.Viewing;var $=0;const J=["markups-svg","pushpin-container"];function ee(e,t){if(this.setGlobalManager(new W.GlobalManager),e){if(this.clientContainer=e,this.container=this.getDocument().createElement("div"),this.container.classList.add("adsk-viewing-viewer"),this.container.style.height="100%",this.container.style.width="100%",this.container.style.overflow="hidden",this.container.classList.add((0,r.isTouchDevice)()?"touch":"notouch"),this.clientContainer.appendChild(this.container),this.config=t||{},this.contextMenu=null,this.contextMenuCallbacks={},this.started=!1,this.theme=this.config.theme||"dark-theme",this.container.classList.add(this.theme),this.containerLayerOrder=this.config.containerLayerOrder||J,(0,r.isChrome)()&&this.container.classList.add("quality-text"),"CANVAS"===this.container.nodeName)throw"Viewer must be initialized on a div [temporary]";if(this.canvasWrap=this.getDocument().createElement("div"),this.canvasWrap.classList.add("canvas-wrap"),this.canvas=this.getDocument().createElement("canvas"),this.canvas.tabIndex=0,this.canvas.setAttribute("data-viewer-canvas","true"),this.canvasWrap.appendChild(this.canvas),this.container.appendChild(this.canvasWrap),!(0,r.isPhoneFormFactor)()&&!Z.Private.DISABLE_FORGE_LOGO&&!Z.Private.DISABLE_FORGE_CANVAS_LOGO){const e=this.getDocument();this._forgeLogo=e.createElement("div"),this._forgeLogo.classList.add("forge-logo-canvas");const t=e.createElement("img");t.src=Autodesk.Viewing.Private.getResourceUrl("res/ui/powered-by-autodesk-oneline-blk-rgb.png"),this._forgeLogo.appendChild(t),this._forgeLogo.style.display="none",this.container.appendChild(this._forgeLogo)}this.canvas.viewer=this}var i=t&&t.localStoragePrefix||"Autodesk.Viewing.Private.GuiViewer3D.SavedSettings.";i.endsWith(".")||(i+=".");var n={prefix:i,localStorage:!(0,r.isNodeJS)()};this._displayEdges=null,this._setDoubleSided=null,this.prefs=new Q(this,n),this.profile=null,this.profileManager=new h.ProfileManager,this._hotkeyManager=new y.HotkeyManager,this.extensionCache=null,this.running=!1,this._pushedTool="",this._defaultNavigationTool="",this.id=$++,this.impl=new L.Viewer3DImpl(this.canvas,this),this.overlays=new H.OverlayManager(this.impl),this._loadingSpinner=Z.Private.DISABLE_FORGE_LOGO?new k:new B(this),this._loadingSpinner.setGlobalManager(this.globalManager),this.trackADPTimer=[],this._curAvDocument=null,this._curManifest=null,this._curOptions=null,this._isPdfModelWithVectorAndRasterRepr=!1}function te(e,t){return new Promise(((i,n)=>{var r=0;function o(t){2===r&&i({viewer:e,model:t})}e.addEventListener(w.GEOMETRY_LOADED_EVENT,(function i(s){s.model.getData().loadOptions.bubbleNode===e._curOptions.bubbleNode&&(e.removeEventListener(w.GEOMETRY_LOADED_EVENT,i),r++,t.skipPropertyDb?o(s.model):s.model.getProperties(1,(()=>o(s.model)),(e=>n(e))))})),e.addEventListener(w.TEXTURES_LOADED_EVENT,(function t(i){i.model.getData().loadOptions.bubbleNode===e._curOptions.bubbleNode&&(e.removeEventListener(w.TEXTURES_LOADED_EVENT,t),r++,o(i.model))}))}))}p.EventDispatcher.prototype.apply(ee.prototype),g.ScreenModeMixin.prototype.apply(ee.prototype),v.ExtensionMixin.prototype.apply(ee.prototype),N.GlobalManagerMixin.call(ee.prototype),ee.prototype.constructor=ee,Object.defineProperty(ee.prototype,"model",{get:function(){var e;return null===(e=this.impl)||void 0===e?void 0:e.model},set:function(){throw"Do not set viewer.model"}}),ee.ViewerCount=0,ee.kDefaultCanvasConfig={click:{onObject:["selectOnly"],offObject:["deselectAll"]},clickAlt:{onObject:["setCOI"],offObject:["setCOI"]},clickCtrl:{onObject:["selectToggle"]},clickShift:{onObject:["selectToggle"]},disableSpinner:!1,disableMouseWheel:!1,disableTwoFingerSwipe:!1},Object.defineProperty(ee.prototype,"scene",{get:function(){return this.impl.scene},set:function(){throw"Do not set viewer.scene"}}),Object.defineProperty(ee.prototype,"sceneAfter",{get:function(){return this.impl.sceneAfter},set:function(){throw"Do not set viewer.sceneAfter"}}),ee.createHeadlessViewer=function(){var e=new ee;return e.impl.initialize(),e.impl.setLightPreset(0),e},ee._getDefaultBVHOptions=function(e){let t;return d.USE_HLOD?t={consolidation:{frags_per_leaf_node:65535,frags_per_inner_node:65535,frags_per_leaf_node_transparent:512,frags_per_inner_node_transparent:0,max_polys_per_node:3e6,max_size_ratio:6,sortFuncType:Z.Private.BVHSortFuncType.DIAMETER,per_tile_consolidation:!0,max_drawcalls_per_node:30,want_sort:!0},isWeakDevice:(0,r.isMobileDevice)()}:e.useConsolidation&&(t={},R.Consolidation.applyBVHDefaults(t)),t},ee.prototype.start=function(e,t,i,n,r){if(this.started)return 0;this.started=!0;var o=this,s=o.initialize(r);return 0!==s?(n&&setTimeout((function(){n(s)}),0),s):(setTimeout((function(){o.setUp(o.config)}),0),e&&this.loadModel(e,t,i,n),0)},ee.prototype.startWithDocumentNode=function(e,t,i){var n=this;return new Promise((function(r,o){if(n.started)return 0;n.started=!0;var s=n.initialize();0===s?(setTimeout((function(){n.setUp(n.config)}),0),n.loadDocumentNode(e,t,i).then(r).catch(o)):setTimeout((function(){o(s)}),0)}))},ee.prototype.registerUniversalHotkeys=function(){var e,t,i,n=this;e=function(){return n.navigation.setRequestFitToView(!0),X.analytics.track("viewer.fit_to_view",{from:"Keyboard"}),!0},n._hotkeyManager.pushHotkeys("Autodesk.FitToView",[{keycodes:[O.KeyCode.f],onPress:e}]),e=function(){return n.navigation.setRequestHomeView(!0),!0},n._hotkeyManager.pushHotkeys("Autodesk.Home",[{keycodes:[O.KeyCode.h],onPress:e},{keycodes:[O.KeyCode.HOME],onPress:e}]),t=function(){return n.objectContextMenu&&n.objectContextMenu.hide()||n.dispatchEvent({type:w.ESCAPE_EVENT}),!0},n._hotkeyManager.pushHotkeys("Autodesk.Escape",[{keycodes:[O.KeyCode.ESCAPE],onRelease:t}]),e=function(){return i=n.getActiveNavigationTool(),n.setActiveNavigationTool("pan")},t=function(){return n.setActiveNavigationTool(i)};var r=[{keycodes:[O.KeyCode.SHIFT],onPress:e,onRelease:t},{keycodes:[O.KeyCode.SPACE],onPress:e,onRelease:t}];n._hotkeyManager.pushHotkeys("Autodesk.Pan",r,{tryUntilSuccess:!0})},ee.prototype.createControls=function(){var e=this,t=e.impl;return e.navigation=new b.Navigation(t.camera),e.__initAutoCam(t),e.utilities=new _.ViewingUtilities(t,e.autocam,e.navigation),e.clickHandler=new E.DefaultHandler(t,e.navigation,e.utilities),e.toolController=new x.ToolController(t,e,e.autocam,e.utilities,e.clickHandler),e.toolController.registerTool(new S.GestureHandler(e)),e.toolController.registerTool(e._hotkeyManager),e.toolController.activateTool(e._hotkeyManager.getName()),e.registerUniversalHotkeys(),e.toolController.registerTool(new P.OrbitDollyPanTool(t,e,this.config.navToolsConfig),(e=>{e||this.setActiveNavigationTool()})),e.toolController.setModalityMap({section:{explode:!1,pan:!1,dolly:!1},explode:{section:!1,pan:!1,dolly:!1},measure:{"box-selection":!1},calibration:{"box-selection":!1},orbit:{},dolly:{},pan:{},fov:{},bimwalk:{},"box-selection":{measure:!1,calibration:!1}}),e.toolController},ee.prototype.initialize=function(e){this.setScreenModeDelegate(this.config?this.config.screenModeDelegate:void 0);var t=this.getDimensions();if(this.canvas.width=t.width,this.canvas.height=t.height,(0,r.isIOSDevice)()&&this.getWindow().devicePixelRatio&&(this.canvas.width/=this.getWindow().devicePixelRatio,this.canvas.height/=this.getWindow().devicePixelRatio),this.impl.initialize(e),!this.impl.glrenderer()){var i=function(){if(Z.getGlobal().WebGLRenderingContext){for(var e=Z.getGlobal().document.createElement("canvas"),t=["webgl","experimental-webgl","moz-webgl","webkit-3d"],i=!1,n=0;n<4;n++)try{if((i=e.getContext(t[n]))&&"function"==typeof i.getParameter)return 1}catch(e){}return 0}return-1}();if(i<=0)return-1===i?f.ErrorCodes.BROWSER_WEBGL_NOT_SUPPORTED:f.ErrorCodes.BROWSER_WEBGL_DISABLED}var n,o=this;(0,r.isIOSDevice)()?this.onResizeCallback=function(){clearTimeout(n),n=setTimeout(o.resize.bind(o),500)}:this.onResizeCallback=function(){var e=o.impl.camera.clientWidth,t=o.impl.camera.clientHeight,i=o.container.clientWidth,n=o.container.clientHeight;e===i&&t===n||o.resize()};this.addWindowEventListener("resize",this.onResizeCallback),this.onPixelRatioChanged=()=>{var e;if(null===(e=o.impl)||void 0===e||!e.glrenderer())return;const t=o.getWindow().devicePixelRatio;matchMedia(`(resolution: ${t}dppx)`).addEventListener("change",o.onPixelRatioChanged,{once:!0}),o.impl.glrenderer().setPixelRatio(t),o.resize()},this.onPixelRatioChanged(),this.onScrollCallback=function(){o.impl.canvasBoundingclientRectDirty=!0},this.addWindowEventListener("scroll",this.onScrollCallback),this.initContextMenu(),this.localize(),this.impl.controls=this.createControls(),this.initializePrefListeners(),this.setDefaultNavigationTool("orbit"),this.impl.controls&&this.impl.controls.setAutocam(this.autocam);var s=this.config&&this.config.canvasConfig?this.config.canvasConfig:ee.kDefaultCanvasConfig;this.setCanvasClickBehavior(s),s.disableSpinner||(this.loadSpinner=this._loadingSpinner.createDom(this.container)),this.viewerState=new C.ViewerState(this),this.config&&Object.prototype.hasOwnProperty.call(this.config,"startOnInitialize")&&!this.config.startOnInitialize||this.run();const a=Z.getGlobal();return a.NOP_VIEWER||(a.NOP_VIEWER=this),a.NOP_VIEWERS=a.NOP_VIEWERS||[],a.NOP_VIEWERS.push(this),this.addEventListener(w.MODEL_ADDED_EVENT,(function(e){o.onModelAdded(e.model,e.preserveTools)})),this.addEventListener(w.GEOMETRY_LOADED_EVENT,(function(e){var t;e.model.is2d()&&!e.model.isLeaflet()&&o.navigation.setMinimumLineWidth(null===(t=e.model.loader)||void 0===t||null===(t=t.svf)||void 0===t?void 0:t.minLineWidth);const i=e.model.getGeometryList();e.model.hasEdges=!1;for(let t=0;t<(null==i?void 0:i.getCount());t++){const n=i.getGeometry(t);if(n&&(n.isLine||n.iblines)){e.model.hasEdges=!0;break}}})),this.addEventListener(w.FRAGMENTS_LOADED_EVENT,(async function(e){(e.model.isConsolidated()||e.model.isConsolidating())&&(e.model.unconsolidate(!0,!0),await this.impl.consolidateModel(e.model)),this.impl.invalidate(!0,!0)})),this.addEventListener(w.FRAGMENTS_UNLOADED_EVENT,(async function(e){e.model.isConsolidated()||e.model.isConsolidating()?(e.model.unconsolidate(!0,!0),await this.impl.consolidateModel(e.model)):e.model.chooseMemoryTypes(),this.impl.invalidate(!0,!0)})),this.dispatchEvent(w.VIEWER_INITIALIZED),this.trackADPSettingsOptions(),this.trackADPExtensionsLoaded(),ee.ViewerCount++,0},ee.prototype.setUp=function(e){var t;if(this.config=e||{},this.config.extensions=this.config.extensions||[],Array.isArray(this.config.extensions))for(var i=this.config.extensions,n=0;n0&&void 0!==arguments[0])||arguments[0];if(this.clearSelection(),this.removeEventListener(w.AGGREGATE_SELECTION_CHANGED_EVENT,this._onAggregatedSelectionChanged),this.loadedExtensions){for(var t in this.loadedExtensions)try{this.unloadExtension(t)}catch(e){o.logger.error("Failed to unload extension: "+t,e,(0,f.errorCodeString)(f.ErrorCodes.VIEWER_INTERNAL_ERROR)),o.logger.track({category:"error_unload_extension",extensionId:t,error_message:e.message,call_stack:e.stack})}this.loadedExtensions=null}for(this.toolController&&(this.toolController.enableMouseButtons(!1),this.toolController.deactivateTool("gestures")),o.logger.reportRuntimeStats(!0),this._loadingSpinner.show(),this.liveReviewClient&&(this.liveReviewClient.destroy(),this.liveReviewClient=null);this.trackADPTimer.length>0;)clearTimeout(this.trackADPTimer.pop());e&&this.impl.unloadCurrentModel(),this.impl.setCutPlaneSet("__set_view",void 0)},ee.prototype._onAggregatedSelectionChanged=function(){if(this.navigation.getSelectionSetsPivot()){const e=this.impl.selector.getAggregateSelection();if(e.length){const t=this.impl.get3DBounds(e);this.utilities.setPivotPoint(t.getCenter(new n.Vector3),!0,!0),this.utilities.pivotActive(this.navigation.getPivotSetFlag(),!0)}}},ee.prototype.run=function(){this.running||(this.resize(),this.running=!0,this.impl.run())},ee.prototype.localize=function(){A.A.localize()},ee.prototype.__initAutoCam=function(e){var t=this,i=e.camera;i.pivot||(i.pivot=new n.Vector3(0,0,0)),i.target||(i.target=new n.Vector3(0,0,0)),i.worldup||(i.worldup=i.up.clone()),t.autocamCamera=i.clone(),t.autocamCamera.target=i.target.clone(),t.autocamCamera.pivot=i.pivot.clone(),t.autocamCamera.worldup=i.worldup.clone(),t.autocam=new D.Autocam(t.autocamCamera,t.navigation,t.canvas),t.autocam.setGlobalManager(this.globalManager),t.autocam.registerCallbackCameraChanged((function(e){t.autocamCamera.isPerspective!==i.isPerspective&&(t.autocamCamera.isPerspective?t.navigation.toPerspective():t.navigation.toOrthographic()),t.navigation.setVerticalFov(t.autocamCamera.fov,!1),t.navigation.setView(t.autocamCamera.position,t.autocamCamera.target),t.navigation.setPivotPoint(t.autocamCamera.pivot),t.navigation.setCameraUpVector(t.autocamCamera.up),e&&t.navigation.setWorldUpVector(t.autocamCamera.worldup),t.impl.syncCamera(e)})),t.autocam.registerCallbackPivotDisplay((function(e){t.utilities?t.utilities.pivotActive(e,!1):t.impl.controls.pivotActive(e,!1)})),t.autocam.registerCallbackTransitionCompleted((function(){t.fireEvent({type:w.CAMERA_TRANSITION_COMPLETED})})),t.addEventListener("cameraChanged",(function(e){var i=e.camera;t.autocam.sync(i)})),t.autocam.sync(i)},ee.prototype.uninitialize=function(){var e;this.removeWindowEventListener("resize",this.onResizeCallback,!1),this.onResizeCallback=null,this.removeWindowEventListener("scroll",this.onScrollCallback),this.onScrollCallback=null,this.canvas?this.canvas.removeEventListener("mousedown",this.onMouseDown):this.container&&this.container.removeEventListener("mousedown",this.onMouseDown),this.onMouseDown=null,this.canvas?this.canvas.removeEventListener("mouseup",this.onMouseUp):this.container&&this.container.removeEventListener("mouseup",this.onMouseUp),this.onMouseUp=null,this.canvas.parentNode.removeChild(this.canvas),this.canvas.viewer=null,L.InitParametersSetting.canvas===this.canvas&&(L.InitParametersSetting.canvas=null),this.canvas=null,this.canvasWrap=null,this.viewerState=null,o.logger.reportRuntimeStats(),o.logger.track({category:"viewer_destroy"},!0),this.toolController&&(this.toolController.uninitialize(),this.toolController=null,this.clickHandler=null,this.utilities=null),this.navigation&&(this.navigation.uninitialize(),this.navigation=null),this.impl&&(this.impl.dtor(),this.impl=null),this.overlays&&(this.overlays.dtor(),this.overlays=null),this.loadSpinner=null,this._loadingSpinner.destroy(),this._loadingSpinner=null,this.prefs&&this.prefs.clearListeners(),this.prefs=null,this.profile=null,this.profileManager=null,this.autocam.dtor(),this.autocam=null,this.autocamCamera=null,this._hotkeyManager.popHotkeys("Autodesk.FitToView"),this._hotkeyManager.popHotkeys("Autodesk.Home"),this._hotkeyManager.popHotkeys("Autodesk.Escape"),this._hotkeyManager.popHotkeys("Autodesk.Pan"),this._hotkeyManager.popHotkeys("Autodesk.Orbit"),this._hotkeyManager=null,ee.ViewerCount--,0===ee.ViewerCount&&(0,M.clearPropertyWorkerCache)(),this.onDefaultContextMenu&&(this.container.removeEventListener("contextmenu",this.onDefaultContextMenu,!1),this.onDefaultContextMenu=null),this.screenModeDelegate&&(this.screenModeDelegate.uninitialize(),this.screenModeDelegate=null),this._displayEdges&&(this.removeEventListener(w.GEOMETRY_LOADED_EVENT,this._displayEdges),this._displayEdges=null),this._setDoubleSided&&(this.removeEventListener(w.MODEL_ADDED_EVENT,this._setDoubleSided),this._setDoubleSided=null),this.extensionCache=null,this.clientContainer=null,this.config=null,this.contextMenu=null,this.contextMenuCallbacks=null,this.container&&this.container.parentNode&&this.container.parentNode.removeChild(this.container),this.container=null,this._forgeLogo=null,this.dispatchEvent(w.VIEWER_UNINITIALIZED),this.listeners={};const t=Z.getGlobal();t.NOP_VIEWER===this&&(t.NOP_VIEWER=null);const i=null===(e=t.NOP_VIEWERS)||void 0===e?void 0:e.indexOf(this);-1!==i&&(t.NOP_VIEWERS.splice(i,1),0===t.NOP_VIEWERS.length&&(t.NOP_VIEWERS=null)),o.logger.log("viewer destroy")},ee.prototype.finish=function(){this.tearDown(),this.uninitialize()},ee.prototype.setLoadHeuristics=function(e){var t=e.bubbleNode;if(t){var i=t.findViewableParent();if(i){var n=i.name();e.fileExt=n.slice(n.length-3).toLowerCase();void 0===e.isAEC&&-1!==["rvt","nwd","nwc","ifc"].indexOf(e.fileExt)&&(e.isAEC=!0)}}if(e.isAEC){if(void 0===e.useConsolidation){let t=(0,u.getParameterByName)("useConsolidation")||"";e.useConsolidation="true"===t||"false"!==t&&void 0}void 0===e.useConsolidation&&(e.useConsolidation=!(0,r.isMobileDevice)()&&!(0,r.isNodeJS)()),void 0===e.createWireframe&&(e.createWireframe=!(0,r.isMobileDevice)()),void 0===e.disablePrecomputedNodeBoxes&&(e.disablePrecomputedNodeBoxes=!0)}else void 0===e.createWireframe&&(e.createWireframe=!(0,r.isMobileDevice)()&&this.prefs.get("edgeRendering"));e.bvhOptions||(e.bvhOptions=ee._getDefaultBVHOptions(e))},ee.prototype.trackADPSettingsOptions=function(){var e=this;this.trackADPTimer.push(setTimeout((function(){if(e.prefs){var t={category:"settingOptionsStatus",switchSheetColorWhiteToBlack:e.prefs.get("swapBlackAndWhite"),leftHandedMouseSetup:e.prefs.get("leftHandedMouseSetup"),openPropertiesOnSelect:e.prefs.get("openPropertiesOnSelect"),orbitPastWorldPoles:e.prefs.get("orbitPastWorldPoles"),reverseMouseZoomDirection:e.prefs.get("reverseMouseZoomDir"),fusionStyleOrbit:e.prefs.get("fusionOrbit"),setPivotWithLeftMouseButton:e.prefs.get("clickToSetCOI"),zoomTowardPivot:e.prefs.get("zoomTowardsPivot"),viewCubeActsOnPivot:e.prefs.get("alwaysUsePivot"),showViewCube:e.prefs.get("viewCube"),environmentImageVisible:e.prefs.get("envMapBackground"),displayEdges:e.prefs.get("edgeRendering"),displayPoints:e.prefs.get("pointRendering"),displayLines:e.prefs.get("lineRendering"),ghostHiddenObjects:e.prefs.get("ghosting"),groundReflection:e.prefs.get("groundReflection"),groundShadow:e.prefs.get("groundShadow"),ambientShadows:e.prefs.get("ambientShadows"),antiAliasing:e.prefs.get("antialiasing"),progressiveModelDisplay:e.prefs.get("progressiveRendering"),smoothNavigation:e.prefs.get("optimizeNavigation")};o.logger.track(t)}}),3e4))},ee.prototype.trackADPExtensionsLoaded=function(){var e=this,t={category:"loaded_extensions"};this.trackADPTimer.push(setTimeout((function(){if(e.loadedExtensions)for(var i in e.loadedExtensions)t[i]=i;o.logger.track(t)}),3e4))},ee.prototype.activateDefaultNavigationTools=function(e){if(!(0,r.isNodeJS)()){var t=e?"pan":"orbit";this.setDefaultNavigationTool(t),this.setActiveNavigationTool(t),this.toolController&&(this.toolController.enableMouseButtons(!0),this.toolController.activateTool("gestures"))}},ee.prototype.registerDimensionSpecificHotkeys=function(e){if(this._hotkeyManager)if(e)this._hotkeyManager.popHotkeys("Autodesk.Orbit");else{var t,i=this,n=[{keycodes:[O.KeyCode.ALT],onPress:function(){return t=i.getActiveNavigationTool(),i.setActiveNavigationTool("orbit")},onRelease:function(){return i.setActiveNavigationTool(t)}}];this._hotkeyManager.pushHotkeys("Autodesk.Orbit",n,{tryUntilSuccess:!0})}},ee.prototype.onModelAdded=function(e,t){var i;e.is2d()&&!e.isLeaflet()&&this.navigation.setMinimumLineWidth(null===(i=e.loader)||void 0===i||null===(i=i.svf)||void 0===i?void 0:i.minLineWidth);1===this.impl.modelQueue().getModels().length&&this.initializeFirstModelPresets(e,t)},ee.prototype.initializeFirstModelPresets=function(e,t,i){if(e.is2d()&&this.activateLayerState("Initial"),i||e.getData().loadOptions.preserveView||(this.setActiveNavigationTool(),this.impl.setViewFromFile(e,!0),this.toolController.recordHomeView()),this.registerDimensionSpecificHotkeys(e.is2d()),t||this.activateDefaultNavigationTools(e.is2d()),this.navigation.setIs2D(this.impl.modelQueue().areAll2D()),e.isLeaflet()){var n=e.getData();this.navigation.setConstraints2D(n.bbox,n.maxPixelPerUnit)}else this.navigation.setConstraints2D()},ee.prototype.loadModel=async function(e,t,i,n,s){var h,d,p=this,m=p.impl._reserveLoadingFile();if(void 0===(t=t||{}).skipPropertyDb){var g=(0,u.getParameterByName)("skipPropertyDb")||"";t.skipPropertyDb="true"===g||"false"!==g&&void 0}function v(e,t,i){p._loadingSpinner.hide(),n&&n(e,t,i)}var y=e.toLowerCase().match(/\.([a-z0-9]+)(\?|$)/),b=y?y[1]:null,x=this.config&&this.config.loaderExtensions&&this.config.loaderExtensions[b]||b in z&&z[b];if(x&&!this.isExtensionLoaded(x))try{await this.loadExtension(x,this.config)}catch(e){return p.impl._removeLoadingFile(m),n&&n(f.ErrorCodes.VIEWER_INTERNAL_ERROR,e.toString()),!1}let _;if(_=t&&t.fileLoader?t.fileLoader:T.FileLoaderManager.getFileLoaderForExtension(b,t.mimeType),!_)return p.impl._removeLoadingFile(m),o.logger.error("File extension not supported:"+b,(0,f.errorCodeString)(f.ErrorCodes.UNSUPORTED_FILE_EXTENSION)),v(f.ErrorCodes.UNSUPORTED_FILE_EXTENSION,"File extension not supported",0),!1;this.setLoadHeuristics(t),this.impl.hasModels()||this._loadingSpinner.show(),"function"==typeof _.getExistingInstance&&(d=_.getExistingInstance(e,t,this.config)),d||(d=new _(this.impl,this.config)),p.impl._addLoadingFile(m,d);var E=d.loadFile(e,t,(function(e,n){if(p.impl){if(p.impl._removeLoadingFile(d),e)return p.dispatchEvent({type:w.LOADER_LOAD_ERROR_EVENT,error:e,loader:d}),void v(e.code,e.msg,e.args);n.getData().underlayRaster=t.underlayRaster&&n.getLeaflet(),t.loadAsHidden?p.impl.modelQueue().addHiddenModel(n):p.impl.addModel(n),n.loader&&n.loader.notifiesFirstPixel&&p._loadingSpinner instanceof k?p.addEventListener(w.RENDER_FIRST_PIXEL,(function(){p._loadingSpinner.hide()}),{once:!0}):p._loadingSpinner.hide(),!(0,r.isNodeJS)()&&p._forgeLogo&&(p._forgeLogo.style.display="block"),i&&i(n)}}),s);if(E||p.impl._removeLoadingFile(d),this.fireEvent({type:w.LOADER_LOAD_FILE_EVENT,loader:d}),t.skipPrefs)void 0===this.prefs.get(a.Prefs.DISPLAY_UNITS)&&this.prefs.set(a.Prefs.DISPLAY_UNITS,new l.EnumType(c.displayUnitsEnum)),void 0===this.prefs.get(a.Prefs.DISPLAY_UNITS_PRECISION)&&this.prefs.set(a.Prefs.DISPLAY_UNITS_PRECISION,new l.EnumType(c.displayUnitsPrecisionEnum));else if(!(0,r.isNodeJS)()&&!this.profile){let e=this.chooseProfile(t);this.setProfile(e,!1)}t.pdfRenderingMode=this._curOptions&&this._curOptions.enableVectorRasterSwitch&&(null===(h=this._curAvDocument)||void 0===h?void 0:h.getPdfRenderingMode());const S=function(e,t,i,n){const{bubbleNode:r,pdfRenderingMode:o}=n,s={url:e,lmvFileExtension:t,returnValue:i};if(r){s.isOtg=r.isOtg()&&Y.endpoint.isOtgBackend(),s.isSVF2=r.isSVF2()&&Y.endpoint.isSVF2Backend(),s.geometrySize=r.data.size||0,s.viewable_type=r.is2D()?"2d":"3d";const e=r.findViewableParent();try{var a;const t=e&&e.name(),i=t&&t.lastIndexOf("."),n=i>=0&&t.substring(i+1),l=null===(a=r.data)||void 0===a||null===(a=a.extractor)||void 0===a?void 0:a.includes("pdf");n?(s.seedFileExt=n.toLowerCase(),"pdf"===n.toLowerCase()&&o&&(s.pdf_rendering_mode=o)):l&&o&&(s.pdf_rendering_mode=o)}catch(e){}}return s}(e,b,E,t);return X.analytics.track("viewer.model.load",S),E},ee.prototype.isLoadDone=function(){let{geometry:e=!0,propDb:t=!0,textures:i=!0,hidden:n=!1,onlyModels:r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!r){if(!this.started)return!0;if(this.impl._hasLoadingFile())return!1}if(i&&Autodesk.Viewing.Private.TextureLoader.requestsInProgress()>0)return!1;const o=n=>{if(!n)return!1;const r=!t||!n.getPropertyDb()||n.getPropertyDb().isLoadDone();return(e||i?n.isLoadDone():n.modelRootLoaded)&&r};return r?Array.isArray(r)?r.every(o):o(r):this.getVisibleModels().every(o)&&(!n||this.getHiddenModels().every(o))},ee.prototype.waitForLoadDone=function(e){return new Promise(((t,i)=>{var{geometry:n=!0,propDb:r=!0,textures:o=!0,hidden:s=!1,onlyModels:a}=e||{};const l={geometry:n=n||o,propDb:r,textures:o,hidden:s,onlyModels:a},c=()=>this.started&&(this.impl._hasLoadingFile()||this.impl.modelQueue().getModels().length>0||this.impl.modelQueue().getHiddenModels().length>0);var h,u=!a&&c();if(u&&this.isLoadDone(l))return void t();const d=()=>{(u=u||c())&&this.isLoadDone(l)&&(h(),t())},f=e=>{h();const t=new Error("Error loading model");t.loader=e.loader,t.error=e.error,i(t)};h=()=>{n&&this.removeEventListener(w.GEOMETRY_LOADED_EVENT,d),r&&(this.removeEventListener(w.OBJECT_TREE_CREATED_EVENT,d),this.removeEventListener(w.OBJECT_TREE_UNAVAILABLE_EVENT,d)),o&&this.removeEventListener(w.TEXTURES_LOADED_EVENT,d),this.removeEventListener(w.LOADER_LOAD_FILE_EVENT,d),this.removeEventListener(w.MODEL_ADDED_EVENT,d),this.removeEventListener(w.MODEL_REMOVED_EVENT,d),this.removeEventListener(w.LOADER_LOAD_ERROR_EVENT,f),this.removeEventListener(w.MODEL_ROOT_LOADED_EVENT,d),this.removeEventListener(w.VIEWER_UNINITIALIZED,t)},n&&this.addEventListener(w.GEOMETRY_LOADED_EVENT,d),r&&(this.addEventListener(w.OBJECT_TREE_CREATED_EVENT,d),this.addEventListener(w.OBJECT_TREE_UNAVAILABLE_EVENT,d)),o&&this.addEventListener(w.TEXTURES_LOADED_EVENT,d),this.addEventListener(w.LOADER_LOAD_FILE_EVENT,d),this.addEventListener(w.MODEL_ADDED_EVENT,d),this.addEventListener(w.MODEL_REMOVED_EVENT,d),this.addEventListener(w.LOADER_LOAD_ERROR_EVENT,f),this.addEventListener(w.MODEL_ROOT_LOADED_EVENT,d,{priority:-1e6}),this.addEventListener(w.VIEWER_UNINITIALIZED,(()=>i(new Error("Promise reject because viewer finished"))))}))},ee.prototype.unloadModel=function(e){e||(e=this.model),this.impl.unloadModel(e)},ee.prototype.updateViewerStateForPdfReload=function(e){this._curAvDocument=e.getDocument(),this._curManifest=e},ee.prototype.loadDocumentNode=function(e,t){var i;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this._curAvDocument=e,this._curManifest=t;const r=n.leafletOptions||{};let o=e.getViewableUrn(t,r),s=t.findPropertyDbPath();o=e.getFullPath(o),s=e.getFullPath(s);const a=e.getAcmSessionId(o),l=Object.assign({sharedPropertyDbPath:s,acmSessionId:a,bubbleNode:t,applyRefPoint:!1,loadOptions:r,page:r.page||1},n);this._curOptions=l;var c=t.search(I.BubbleNode.PDF_PAGE_NODE),h=t.search(I.BubbleNode.LEAFLET_NODE);this._curOptions.enableVectorRasterSwitch=n.enableVectorRasterSwitch&&c.length>0&&h.length>0;const u="pdf"===t.getInputFileType(),d=null===(i=t.data)||void 0===i||null===(i=i.extractor)||void 0===i?void 0:i.includes("pdf");if(this._isPdfModelWithVectorAndRasterRepr=(u||d)&&c.length>0&&h.length>0,r.tempRasterPath&&(l.loadOptions.tempRasterPath=r.tempRasterPath),!l.keepCurrentModels&&this.impl.hasModels()){let e=this.config;this.tearDown(),this.setUp(e)}const f=t.findParentGeom2Dor3D(),p=null==f?void 0:f.extensions();Array.isArray(p)&&p.forEach((e=>{this.loadExtension(e,this.config)}));const m=r.isPdf?this.loadExtension("Autodesk.PDF",this.config):Promise.resolve(),g=!l.disableUnderlayRaster&&r.tempRasterPath,v=g?this._loadTempRasterModel(e,l,t):Promise.resolve();return m.then((()=>v)).then((e=>new Promise(((i,n)=>{g&&e&&e!==this.getUnderlayRaster(t)?n("load canceled"):this.loadModel(o,l,(e=>{l.loadAsHidden||l.preserveView||"view"!==t.type()||this.setView(t,{skipTransition:!0}),i(e)}),n)}))))},ee.prototype.unloadDocumentNode=function(e){let t=this.impl.findModel(e,!0);if(t)return this.impl.unloadModel(t),!0;if(!this.impl.loaders)return!1;for(let t=0;t{if(t.loadAsHidden)return n();t.underlayRaster=!0,t.loadOptions.fitPaperSize=!0;const o=e=>{var t,n;const r=e.getDocumentNode();return r&&(null===(t=r.getDocument())||void 0===t?void 0:t.getPath())===(null===(n=i.getDocument())||void 0===n?void 0:n.getPath())&&r.guid()===i.guid()&&!e.isLeaflet()},s=e=>{let{model:t}=e;o(t)&&(2===this.getVisibleModels().length&&this.initializeFirstModelPresets(t,!1,!0),this.removeEventListener(w.MODEL_ADDED_EVENT,s))};this.addEventListener(w.MODEL_ADDED_EVENT,s);const a=e=>{let{model:t}=e;o(t)&&(t.changePaperVisibility(!0),this.removeEventListener(w.MODEL_REMOVED_EVENT,a),this.removeEventListener(w.MODEL_ADDED_EVENT,s),this.removeEventListener(w.GEOMETRY_LOADED_EVENT,c))};let l;this.addEventListener(w.MODEL_REMOVED_EVENT,a);const c=e=>{let{model:t}=e;o(t)&&(t.changePaperVisibility(!0),this.removeEventListener(w.MODEL_REMOVED_EVENT,a),l&&(this.unloadModel(l),l=null),this.removeEventListener(w.GEOMETRY_LOADED_EVENT,c))};this.addEventListener(w.GEOMETRY_LOADED_EVENT,c);const h=e.getFullPath(t.loadOptions.tempRasterPath);this.loadModel(h,t,(e=>{t.loadOptions.fitPaperSize=void 0,t.underlayRaster=void 0,t.hideBackground=!0,l=e,n(e)}),(e=>{if(t.loadOptions.fitPaperSize=void 0,t.underlayRaster=void 0,e===f.ErrorCodes.LOAD_CANCELED)return r("load canceled");n()}))}))},ee.prototype.getDimensions=function(){if(this.container){var e={};return this.getScreenMode()===g.ScreenMode.kFullScreen?(e.width=screen.width,e.height=screen.height):e=this.container.getBoundingClientRect(),{width:e.width,height:e.height}}return null},ee.prototype.resize=function(){this.container.clientWidth>0&&this.container.clientHeight>0&&this.impl.resize(this.container.clientWidth,this.container.clientHeight)},ee.prototype.getHotkeyManager=function(){return this._hotkeyManager},ee.prototype.getCamera=function(){return this.impl.camera},ee.prototype.getState=function(e){return this.viewerState.getState(e)},ee.prototype.restoreState=function(e,t,i){var n=this.viewerState.restoreState(e,t,i);return n&&this.dispatchEvent({type:w.VIEWER_STATE_RESTORED_EVENT,value:n}),n},ee.prototype.getViewpointCamData=function(e){const t=e.position,i=e.target,n=e.up,r=e.isPerspective?0:1;return[t.x,t.y,t.z,i.x,i.y,i.z,n.x,n.y,n.z,e.aspect,e.fov*(Math.PI/180),e.orthoScale,r]},ee.prototype.setView=function(e,t){var i,r;if(!(e&&e instanceof I.BubbleNode))return!1;const o=e.findParentGeom2Dor3D();let s=o&&this.impl.findModel(o,!0)||this.model;if(!s)return!1;let a,l=!!t&&t.skipTransition,c=!t||t.useExactCamera,h=!!t&&t.skipViewpointExtra;if(e.getViewBox())return this.setViewFromViewBox(e.getViewBox(),e.name(),l),this.dispatchEvent({type:w.SET_VIEW_EVENT,view:e}),!0;let u,d,f,p=null===(i=s.loader)||void 0===i?void 0:i.svf,m=e.data.isViewpoint&&p?null===(r=p.viewpoints)||void 0===r?void 0:r[e.data.entry]:null,g=e.data.camera,v=s.isOTG(),y=!1;if(this.showAll(),!h&&m){const e=m.camera;g=this.getViewpointCamData(e);const t=p.overrideSets[m.overrideSet];if(t){const{defaultMaterialIndex:e,materialOverrides:i,flagOverrides:n,defaultFlags:r}=t,o=s.getFragmentList(),a=o.fragments.length;if(o.materialIdMapOriginal||o.storeOriginalMaterials(),(e||i)&&(y=s.isConsolidated()||s.isConsolidating(),y&&s.unconsolidate(!1,!0)),e){const t=v?p.getMaterialHash(e):this.impl.matman()._getMaterialHash(s,e),i=this.impl.matman()._materials[t];if(i)for(let e=0;e{s.getFragmentList().setMaterial(e,o)}),!0)}}if(r&&(1===r?this.hideAll():2===r&&this.showAll()),n)if(0===n.length)this.showAll();else for(let e=0;e{this.impl.invalidate(!0,!0)}))}}if(a=this.getCameraFromViewArray(g,s),!a)return!1;this.impl.setViewFromCamera(a,l,c);const b=m??e.data;u=b.sectionPlane,d=b.sectionBox,f=b.sectionBoxTransform;const x=s.getModelToViewerTransform();if(u){let e=[];for(let t=0;t1&&void 0!==arguments[1]?arguments[1]:this.model;const i=null==t?void 0:t.getModelToViewerTransform();return I.BubbleNode.readCameraFromArray(e,i)},ee.prototype.getViewArrayFromCamera=function(){var e=this.model?this.model.getData().globalOffset:{x:0,y:0,z:0};return this.impl.getViewArrayFromCamera(e)},ee.prototype.setViewFromViewBox=function(e,t,i){var n=this.model;if(!n||n.is2d()){if(t&&t.length){var r,s=n.getData().metadata.views||[];for(r=0;r4&&void 0!==arguments[4]?arguments[4]:{searchHidden:!1};this.searchText=e,this.model?this.model.search(e,t,i,n,r):i&&i(f.ErrorCodes.BAD_DATA,"Search failed since model does not exist")},ee.prototype.getHiddenNodes=function(e){return e=e||this.model,this.impl.visibilityManager.getHiddenNodes(e)},ee.prototype.getIsolatedNodes=function(e){return(e=e||this.model)&&e.is2d()?(o.logger.warn("Viewer3D.getIsolatedNodes is not yet implemented for 2D"),[]):this.impl.visibilityManager.getIsolatedNodes(e)},ee.prototype.isolate=function(e,t){(t=t||this.model)&&this.impl.visibilityManager.isolate(e,t)},ee.prototype.setBackgroundColor=function(e,t,i,n,r,o){this.impl.setClearColors(e,t,i,n,r,o)},ee.prototype.setBackgroundOpacity=function(e){this.impl.setClearAlpha(e)},ee.prototype.toggleSelect=function(e,t,i){(t=t||this.model)&&t.is2d()?o.logger.warn("Viewer3D.toggleSelect is not yet implemented for 2D"):this.impl.selector.toggleSelection(e,t,i)},ee.prototype.select=function(e,t,i){"number"==typeof e&&(e=[e]),t=t||this.model,this.impl.selector.setSelection(e,t,i)},ee.prototype.clearSelection=function(){this.impl.selector.clearSelection()},ee.prototype.getSelectionVisibility=function(){return this.impl.selector.getSelectionVisibility()},ee.prototype.getSelectionCount=function(){return this.impl.selector.getSelectionLength()},ee.prototype.setSelectionMode=function(e){this.prefs.set(a.Prefs3D.SELECTION_MODE,e)},ee.prototype.getSelection=function(){return this.impl.selector.getSelection()},ee.prototype.lockSelection=function(e,t,i){i=i||this.model,this.impl.selector.lockSelection(e,t,i)},ee.prototype.unlockSelection=function(e,t){this.impl.selector.unlockSelection(e,t)},ee.prototype.isSelectionLocked=function(e,t){return this.impl.selector.isNodeSelectionLocked(e,t)},ee.prototype.getAggregateSelection=function(e){var t=this.impl.selector.getAggregateSelection();if(e)for(var i=0;i1&&void 0!==arguments[1])||arguments[1];this.impl.selector.setAggregateSelection(e,t)},ee.prototype.getAggregateIsolation=function(){return this.impl.visibilityManager.getAggregateIsolatedNodes()},ee.prototype.setAggregateIsolation=function(e){this.impl.visibilityManager.aggregateIsolate(e)},ee.prototype.getAggregateHiddenNodes=function(){return this.impl.visibilityManager.getAggregateHiddenNodes()},ee.prototype.hide=function(e,t){t=t||this.model,this.impl.visibilityManager.hide(e,t)},ee.prototype.show=function(e,t){t=t||this.model,this.impl.visibilityManager.show(e,t)},ee.prototype.showAll=function(){this.impl.visibilityManager.aggregateIsolate([]),this.impl.layers.showAllLayers(),this.fireEvent({type:w.SHOW_ALL_EVENT})},ee.prototype.hideAll=function(){this.getVisibleModels().forEach((e=>{this.hide(e.getRootId(),e)})),this.fireEvent({type:w.HIDE_ALL_EVENT})},ee.prototype.toggleVisibility=function(e,t){this.impl.visibilityManager.toggleVisibility(e,t)},ee.prototype.areAllVisible=function(){return this.impl.isWholeModelVisible(this.model)},ee.prototype.isNodeVisible=function(e,t){return t=t||this.model,this.impl.isNodeVisible(e,t)},ee.prototype.lockVisible=function(e,t,i){i=i||this.model,this.impl.visibilityManager.lockNodeVisible(e,t,i)},ee.prototype.toggleLockVisible=function(e,t){this.impl.visibilityManager.toggleVisibleLocked(e,t)},ee.prototype.isVisibleLocked=function(e,t){return this.impl.visibilityManager.isNodeVisibleLocked(e,t)},ee.prototype.explode=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.model&&(this.model.is2d()?o.logger.warn("Viewer3D.explode is not applicable to 2D"):this.impl.explode(e,t)&&o.logger.track({name:"explode_count",aggregate:"count"}))},ee.prototype.getExplodeScale=function(){return this.model&&this.model.is2d()?(o.logger.warn("Viewer3D.getExplodeScale is not applicable to 2D"),0):this.impl.getExplodeScale()},ee.prototype.getExplodeOptions=function(){return this.model&&this.model.is2d()?(o.logger.warn("Viewer3D.getExplodeOptions is not applicable to 2D"),0):this.impl.getExplodeOptions()},ee.prototype.lockExplode=function(e,t,i){return(i=i||this.model)&&i.is2d()?(o.logger.warn("Viewer3D.lockExplode is not applicable to 2D"),0):this.impl.lockExplode(e,t,i)},ee.prototype.isExplodeLocked=function(e,t){return(t=t||this.model)&&t.is2d()?(o.logger.warn("Viewer3D.isExplodeLocked is not applicable to 2D"),0):this.impl.isExplodeLocked(e,t)},ee.prototype.toggleLockExplode=function(e,t){return(t=t||this.model)&&t.is2d()?(o.logger.warn("Viewer3D.toggleLockExplode is not applicable to 2D"),0):this.impl.lockExplode(e,!this.isExplodeLocked(e,t),t)},ee.prototype.setQualityLevel=function(e,t){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setQualityLevel is not applicable to 2D"):(this.prefs.set(a.Prefs3D.AMBIENT_SHADOWS,e),this.prefs.set(a.Prefs3D.ANTIALIASING,t))},ee.prototype.setGhosting=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setGhosting is not applicable to 2D"):this.prefs.set(a.Prefs3D.GHOSTING,e)},ee.prototype.setGroundShadow=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setGroundShadow is not applicable to 2D"):this.prefs.set(a.Prefs3D.GROUND_SHADOW,e)},ee.prototype.setGroundReflection=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setGroundReflection is not applicable to 2D"):this.prefs.set(a.Prefs3D.GROUND_REFLECTION,e)},ee.prototype.setEnvMapBackground=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setEnvMapBackground is not applicable to 2D"):this.prefs.set(a.Prefs3D.ENV_MAP_BACKGROUND,e)},ee.prototype.setFirstPersonToolPopup=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setFirstPersonToolPopup is not applicable to 2D"):this.prefs.set(a.Prefs3D.FIRST_PERSON_TOOL_POPUP,e)},ee.prototype.getFirstPersonToolPopup=function(){if(!this.model||!this.model.is2d())return this.prefs.get("firstPersonToolPopup");o.logger.warn("Viewer3D.getFirstPersonToolPopup is not applicable to 2D")},ee.prototype.setBimWalkToolPopup=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setBimWalkToolPopup is not applicable to 2D"):this.prefs.set(a.Prefs3D.BIM_WALK_TOOL_POPUP,e)},ee.prototype.getBimWalkToolPopup=function(){if(!this.model||!this.model.is2d())return this.prefs.get("bimWalkToolPopup");o.logger.warn("Viewer3D.getBimWalkToolPopup is not applicable to 2D")},ee.prototype.setProgressiveRendering=function(e){this.prefs.set(a.Prefs.PROGRESSIVE_RENDERING,e)},ee.prototype.setGrayscale=function(e){this.model&&this.model.is3d()?o.logger.warn("Viewer3D.setGrayscale is not applicable to 3D"):this.prefs.set(a.Prefs2D.GRAYSCALE,e)},ee.prototype.setSwapBlackAndWhite=function(e){this.model&&this.model.is3d()?o.logger.warn("Viewer3D.setSwapBlackAndWhite is not applicable to 3D"):this.prefs.set(a.Prefs2D.SWAP_BLACK_AND_WHITE,e)},ee.prototype.setOptimizeNavigation=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setOptimizeNaviation is not applicable to 2D"):this.prefs.set(a.Prefs3D.OPTIMIZE_NAVIGATION,e)},ee.prototype.initializePrefListeners=function(){var e=this;this.prefs.addListeners(a.Prefs.KEY_MAP_CMD,(e=>{this.impl.toggleCmdMapping(e,this.toolController)})),this.prefs.addListeners(a.Prefs3D.ANTIALIASING,(e=>{const t=this.prefs.get(a.Prefs3D.AMBIENT_SHADOWS);this.impl.togglePostProcess(t,e)})),this.prefs.addListeners(a.Prefs3D.AMBIENT_SHADOWS,(e=>{const t=this.prefs.get(a.Prefs3D.ANTIALIASING);this.impl.togglePostProcess(e,t)})),this.prefs.addListeners(a.Prefs3D.GROUND_SHADOW,(e=>{this.impl.toggleGroundShadow(e)})),this.prefs.addListeners(a.Prefs3D.GROUND_REFLECTION,(e=>{this.impl.toggleGroundReflection(e)})),this.prefs.addListeners(a.Prefs3D.ENV_MAP_BACKGROUND,(e=>{this.impl.toggleEnvMapBackground(e)})),this.prefs.addListeners(a.Prefs.PROGRESSIVE_RENDERING,(e=>{this.impl.toggleProgressive(e)})),this.prefs.addListeners(a.Prefs3D.VIEW_TYPE,(e=>{const t=this.prefs.get(a.Prefs3D.VIEW_TYPE),i=this.impl.getModelCamera(this.model);if(i){const e=i.isPerspective;if(!isNaN(e)){const i=e?a.VIEW_TYPES.PERSPECTIVE:a.VIEW_TYPES.ORTHOGRAPHIC;this.prefs.setDefault(a.Prefs3D.VIEW_TYPE,i),t===a.VIEW_TYPES.DEFAULT&&(this.prefs[a.Prefs3D.VIEW_TYPE]=i)}}this.autocam.setViewType(e)})),this.prefs.addListeners(a.Prefs2D.GRAYSCALE,(e=>{this.impl.toggleGrayscale(e)})),this.prefs.addListeners(a.Prefs2D.SWAP_BLACK_AND_WHITE,(e=>{this.impl.toggleSwapBlackAndWhite(e)})),this.isFirstLoad=!0,this.prefs.addListeners(a.Prefs2D.VECTOR_VIEWING,(e=>{!this.isFirstLoad&&this._curAvDocument&&this._curManifest&&this._curOptions&&this._isPdfModelWithVectorAndRasterRepr&&new Promise((e=>setTimeout(e,200))).then((()=>{this.unloadDocumentNode(this._curManifest);const e={};e.enableVectorRasterSwitch=this._curOptions.enableVectorRasterSwitch,this.loadDocumentNode(this._curAvDocument,this._curManifest,e)})),this.isFirstLoad=!1})),this.prefs.addListeners(a.Prefs3D.OPTIMIZE_NAVIGATION,(e=>{this.impl.setOptimizeNavigation(e)})),this.prefs.addListeners(a.Prefs3D.GHOSTING,(e=>{this.impl.toggleGhosting(e)})),this.prefs.addListeners(a.Prefs3D.LINE_RENDERING,(e=>{this.impl.hideLines(!e)})),this.prefs.addListeners(a.Prefs.POINT_RENDERING,(e=>{this.impl.hidePoints(!e)})),this.prefs.addListeners(a.Prefs3D.EDGE_RENDERING,(e=>{this._displayEdges=()=>{this.impl.setDisplayEdges(e)},e||this.model&&this.model.isLoadDone()?this._displayEdges():this.addEventListener(w.GEOMETRY_LOADED_EVENT,this._displayEdges)})),this.prefs.addListeners(a.Prefs3D.LIGHT_PRESET,(e=>{let t=!1;if("string"==typeof e){for(var i=e,n=-1,r=0;r{this.navigation.setUsePivotAlways(e)})),this.prefs.addListeners(a.Prefs.REVERSE_MOUSE_ZOOM_DIR,(e=>{this.navigation.setReverseZoomDirection(e)})),this.prefs.addListeners(a.Prefs3D.REVERSE_HORIZONTAL_LOOK_DIRECTION,(e=>{this.navigation.setReverseHorizontalLookDirection(e)})),this.prefs.addListeners(a.Prefs3D.REVERSE_VERTICAL_LOOK_DIRECTION,(e=>{this.navigation.setReverseVerticalLookDirection(e)})),this.prefs.addListeners(a.Prefs3D.ZOOM_TOWARDS_PIVOT,(e=>{this.navigation.setZoomTowardsPivot(e)})),this.prefs.addListeners(a.Prefs3D.SELECTION_SETS_PIVOT,(e=>{this.navigation.setSelectionSetsPivot(e)})),this.prefs.addListeners(a.Prefs3D.ORBIT_PAST_WORLD_POLES,(e=>{this.navigation.setOrbitPastWorldPoles(e)})),this.prefs.addListeners(a.Prefs.LEFT_HANDED_MOUSE_SETUP,(e=>{this.navigation.setUseLeftHandedInput(e),m.EventUtils.setUseLeftHandedInput(e)})),this.prefs.addListeners(a.Prefs.WHEEL_SETS_PIVOT,(e=>{this.navigation.setWheelSetsPivot(e)})),this.prefs.addListeners(a.Prefs3D.SELECTION_MODE,(e=>{this.impl.selector.setSelectionMode(e)})),this.prefs.addListeners(a.Prefs.BACKGROUND_COLOR_PRESET,(e=>{if(e)try{var t=JSON.parse(e);this.impl.setClearColors(t[0],t[1],t[2],t[3],t[4],t[5])}catch(e){o.logger.warn("Invalid Prefs.BACKGROUND_COLOR_PRESET: "+t)}})),this.prefs.addListeners(a.Prefs3D.EXPLODE_STRATEGY,(e=>{q.L.setStrategy(e)&&this.impl.refreshExplode()})),this.prefs.addListeners(a.Prefs2D.LOADING_ANIMATION,(e=>{this.impl.onLoadingAnimationChanged(e)}));const t={};this.prefs.addListeners(a.Prefs3D.FORCE_DOUBLE_SIDED,(i=>{this._setDoubleSided=function(n){let r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],o=n.model,s=function(e){return"boolean"==typeof i?i:!!i[e.id]}(o);const a=o.getData();Object.prototype.hasOwnProperty.call(t,o.id)||(t[o.id]=!!a.doubleSided);const l=s||!!a.doubleSided;l!==t[o.id]&&(e.impl.setDoubleSided(l,o,r),t[o.id]=l)};var n=this.impl.modelQueue().getModels();0===n.length?this.addEventListener(w.MODEL_ADDED_EVENT,this._setDoubleSided):(n.forEach((e=>{this._setDoubleSided({model:e},!1)})),this.impl.sceneUpdated())}))},ee.prototype.setNavigationLock=function(e){const t=this.navigation.getIsLocked();return t!==e&&(this.navigation.setIsLocked(e),this.dispatchEvent({type:w.NAVIGATION_MODE_CHANGED_EVENT,id:this.getActiveNavigationTool()})),t},ee.prototype.getNavigationLock=function(){return this.navigation.getIsLocked()},ee.prototype.setNavigationLockSettings=function(e){this.navigation.setLockSettings(e),this.dispatchEvent({type:w.NAVIGATION_MODE_CHANGED_EVENT,id:this.getActiveNavigationTool()})},ee.prototype.getNavigationLockSettings=function(){return this.navigation.getLockSettings()},ee.prototype.setActiveNavigationTool=function(e){if(e===this._pushedTool||!e&&!this._pushedTool)return!0;if(this._pushedTool){if(!this.impl.controls.deactivateTool(this._pushedTool))return!1;this.impl.controls.setToolActiveName(this.getDefaultNavigationToolName()),this._pushedTool=null}return(!e||e===this.getDefaultNavigationToolName())&&null===this._pushedTool?(this.dispatchEvent({type:w.NAVIGATION_MODE_CHANGED_EVENT,id:this.getDefaultNavigationToolName()}),!0):!!this.impl.controls.activateTool(e)&&(this._pushedTool=e,this.dispatchEvent({type:w.NAVIGATION_MODE_CHANGED_EVENT,id:this._pushedTool}),!0)},ee.prototype.getActiveNavigationTool=function(){return this._pushedTool?this._pushedTool:this._defaultNavigationTool},ee.prototype.setDefaultNavigationTool=function(e){this._defaultNavigationTool&&this.impl.controls.deactivateTool(this._defaultNavigationTool);var t=this._pushedTool;this._pushedTool=null,t&&this.impl.controls.deactivateTool(t),this.impl.controls.activateTool(e),this._defaultNavigationTool=e,t&&(this.impl.controls.activateTool(t),this._pushedTool=t)},ee.prototype.getDefaultNavigationToolName=function(){return this._defaultNavigationTool},ee.prototype.getFOV=function(){return this.navigation.getVerticalFov()},ee.prototype.setFOV=function(e){this.navigation.setVerticalFov(e,!0)},ee.prototype.getFocalLength=function(){return this.navigation.getFocalLength()},ee.prototype.setFocalLength=function(e){this.navigation.setFocalLength(e,!0)},ee.prototype.hideLines=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.hideLines is not applicable to 2D"):this.prefs.set(a.Prefs3D.LINE_RENDERING,!e)},ee.prototype.hidePoints=function(e){this.prefs.set(a.Prefs.POINT_RENDERING,!e)},ee.prototype.setDisplayEdges=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setDisplayEdges is not applicable to 2D"):this.prefs.set(a.Prefs3D.EDGE_RENDERING,e)},ee.prototype.applyCamera=function(e,t){this.impl.setViewFromCamera(e,!0),t&&this.fitToView()},ee.prototype.fitToView=function(e,t,i){var n=[];e&&(e.length>0&&e[0].model?n=e:e.length>0&&n.push({model:t||this.model,selection:e})),this.impl.fitToView(n,i)},ee.prototype.setClickConfig=function(e,t,i){var n=this.clickHandler?this.clickHandler.getClickBehavior():this.impl.controls.getClickBehavior();if(e in n){var r=n[e];if(t in r)return r[t]=i,!0}return!1},ee.prototype.getClickConfig=function(e,t){var i=this.clickHandler?this.clickHandler.getClickBehavior():this.impl.controls.getClickBehavior();if(e in i){var n=i[e];if(t in n)return n[t]}return null},ee.prototype.setClickToSetCOI=function(e,t){!1!==t&&this.prefs.set(a.Prefs3D.CLICK_TO_SET_COI,e);var i=this.getClickConfig("click","onObject");e?-1===i.indexOf("setCOI")&&this.setClickConfig("click","onObject",["setCOI"]):i.indexOf("setCOI")>=0&&this.setClickConfig("click","onObject",["selectOnly"])},ee.prototype.setProfile=function(e,t){if(!e)return!1;this.profile=e,this.profile.apply(this.prefs,t);const i=this.profile.extensions&&this.profile.extensions.unload||[],n=this.profile.extensions&&this.profile.extensions.load||[];i.forEach((e=>{this.isExtensionLoaded(e)&&this.unloadExtension(e)})),n.forEach((e=>{this.isExtensionLoaded(e)||this.loadExtension(e,this.config)})),this.dispatchEvent({type:Autodesk.Viewing.PROFILE_CHANGE_EVENT,profile:e})},ee.prototype.initSettings=function(e){if(!this.profile){const t=new s.Profile(e);this.setProfile(t)}},ee.prototype.setLightPreset=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setLightPreset is not applicable to 2D"):this.prefs.set(a.Prefs3D.LIGHT_PRESET,e)},ee.prototype.setUsePivotAlways=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setUsePivotAlways is not applicable to 2D"):this.prefs.set(a.Prefs3D.ALWAYS_USE_PIVOT,e)},ee.prototype.setReverseZoomDirection=function(e){this.prefs.set(a.Prefs.REVERSE_MOUSE_ZOOM_DIR,e)},ee.prototype.setReverseHorizontalLookDirection=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setReverseHorizontalLookDirection is not applicable to 2D"):this.prefs.set(a.Prefs3D.REVERSE_HORIZONTAL_LOOK_DIRECTION,e)},ee.prototype.setReverseVerticalLookDirection=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setReverseVerticalLookDirection is not applicable to 2D"):this.prefs.set(a.Prefs3D.REVERSE_VERTICAL_LOOK_DIRECTION,e)},ee.prototype.setZoomTowardsPivot=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setZoomTowardsPivot is not applicable to 2D"):this.prefs.set(a.Prefs3D.ZOOM_TOWARDS_PIVOT,e)},ee.prototype.setOrbitPastWorldPoles=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setOrbitPastWorldPoles is not applicable to 2D"):this.prefs.set(a.Prefs3D.ORBIT_PAST_WORLD_POLES,e)},ee.prototype.setUseLeftHandedInput=function(e){this.prefs.set(a.Prefs.LEFT_HANDED_MOUSE_SETUP,e)},ee.prototype.setDisplayUnits=function(e){this.prefs.set(a.Prefs.DISPLAY_UNITS,e)},ee.prototype.setDisplayUnitsPrecision=function(e){null==e&&(e=""),this.prefs.set(a.Prefs.DISPLAY_UNITS_PRECISION,e)},ee.prototype.setLayerVisible=function(e,t,i){var n=this.impl.layers;null===e?t?n.showAllLayers():n.hideAllLayers():(Array.isArray(e)||(e=[e]),i&&n.hideAllLayers(),this.impl.setLayerVisible(e,t)),this.dispatchEvent({type:w.LAYER_VISIBILITY_CHANGED_EVENT})},ee.prototype.isLayerVisible=function(e){return!!(e&&e.isLayer&&this.impl.isLayerVisible(e))},ee.prototype.anyLayerHidden=function(){for(var e=this.impl.getLayersRoot(),t=e&&e.children,i=t?t.length:0,n=0;n1&&void 0!==arguments[1]?arguments[1]:this.impl.camera;return this.impl.worldToClient(e,t)},ee.prototype.clientToWorld=function(e,t,i,n,r){return this.impl.clientToWorld(e,t,i,n,r)},ee.prototype.modelHasTopology=function(){return!(!this.model||!this.model.hasTopology())},ee.prototype.setSelectionColor=function(e,t){this.impl.setSelectionColor(e,t)},ee.prototype.set2dSelectionColor=function(e,t){this.impl.set2dSelectionColor(e,t)},ee.prototype.setTheme=function(e){for(var t=this.container.classList,i=0;i{this.impl.invalidate(!0,!0)}))},ee.prototype.transferModel=function(e,t){var i,n=this.impl.findModel(e);if(n){var r=[];this.getAggregateSelection((function(t,i){t.id==e&&r.push(i)}));var o=this.impl.visibilityManager.getIsolatedNodes(n),s=this.impl.visibilityManager.getHiddenNodes(n),a=this.impl.matman().exportModelMaterials(n);this.impl.unloadModel(n,!0),null===(i=n.getFragmentList())||void 0===i||i.dispose(this.impl.glrenderer()),n.isAEC()&&n.is3d()&&t.impl.setLightPresetForAec(),t.impl.setRenderingPrefsFor2D(n.is2d()),t.impl.addModel(n),t.impl.matman().importModelMaterials(a,e),t._loadingSpinner.hide(),n.loader&&n.loader.viewer3DImpl===this.impl&&(n.loader.viewer3DImpl=t.impl),n.getData().loadDone&&t.impl.onLoadComplete(n),t.impl.selector.setSelection(r,n),0!=o.length?t.impl.visibilityManager.isolate(o,n):0!=s.length&&t.impl.visibilityManager.hide(s,n)}},ee.prototype.hideModel=function(e){var t=this.impl.modelQueue();return!!(e="number"==typeof e?t.findModel(e):e)&&(this.impl.removeModel(e),t.addHiddenModel(e),!0)},ee.prototype.showModel=function(e,t){var i=this.impl.modelQueue();return!!(e="number"==typeof e?i.findHiddenModel(e):e)&&(i.removeHiddenModel(e),this.impl.addModel(e,t),!0)},ee.prototype.getVisibleModels=function(){return this.impl.modelQueue().getModels().slice()},ee.prototype.getHiddenModels=function(){return this.impl.modelQueue().getHiddenModels().slice()},ee.prototype.getAllModels=function(){return this.impl.modelQueue().getAllModels().slice()},ee.prototype.getFirstModel=function(){return this.impl.is2d?this.impl.get2DModels()[0]:this.impl.get3DModels()[0]},ee.prototype.getUnderlayRaster=function(e){return this.getAllModels().find((t=>{var i,n;const r=t.getDocumentNode();return r&&(null===(i=r.getDocument())||void 0===i?void 0:i.getPath())===(null===(n=e.getDocument())||void 0===n?void 0:n.getPath())&&r.guid()===e.guid()&&t.getData().underlayRaster}))},ee.prototype.restoreDefaultSettings=function(){var e=this.model,t=e.is2d()?"2d":"3d";this.prefs.reset(t),this.impl.setupLighting(e),e.isAEC()&&e.is3d()&&this.impl.setLightPresetForAec(),this.impl.setRenderingPrefsFor2D(!e.is3d()),this.fireEvent({type:w.RESTORE_DEFAULT_SETTINGS_EVENT})},ee.prototype.disableHighlight=function(e){this.impl.disableHighlight(e)},ee.prototype.disableSelection=function(e){e&&this.clearSelection(),this.impl.disableSelection(e)},ee.prototype.isHighlightDisabled=function(){return this.impl.selector.highlightDisabled},ee.prototype.isHighlightPaused=function(){return this.impl.selector.highlightPaused},ee.prototype.isHighlightActive=function(){return!(this.impl.selector.highlightDisabled||this.impl.selector.highlightPaused)},ee.prototype.isSelectionDisabled=function(){return this.impl.selector.selectionDisabled},ee.prototype.activateExtension=function(e,t){return this.loadedExtensions&&e in this.loadedExtensions?this.loadedExtensions[e].activate(t):(o.logger.warn("Extension is not loaded or doesn't exist"),!1)},ee.prototype.deactivateExtension=function(e){return this.loadedExtensions&&e in this.loadedExtensions?this.loadedExtensions[e].deactivate():(o.logger.warn("Extension is not loaded or doesn't exist"),!1)},ee.prototype.isExtensionActive=function(e,t){return this.loadedExtensions&&e in this.loadedExtensions?this.loadedExtensions[e].isActive(t):(o.logger.warn("Extension is not loaded or doesn't exist"),!1)},ee.prototype.isExtensionLoaded=function(e){return this.loadedExtensions&&e in this.loadedExtensions},ee.prototype.getLoadedExtensions=function(){return this.loadedExtensions||[]},ee.prototype.getExtensionModes=function(e){return this.loadedExtensions&&e in this.loadedExtensions?this.loadedExtensions[e].getModes():(console.warn("Extension is not loaded or doesn't exist"),[])},ee.prototype.reorderElements=function(e){var t=e.getAttribute("layer-order-id"),i=this.containerLayerOrder.indexOf(t),n=null;if(-1!==i)for(var r=i+1;r{"use strict";i.r(t),i.d(t,{InitParametersSetting:()=>J,Viewer3DImpl:()=>te,createRenderer:()=>ee});var n=i(55280),r=i(18817),o=i(28441),s=i(47263),a=i(88190),l=i(62612),c=i(27579),h=i(13843),u=i(97005),d=i(65802),f=i(19356),p=i(83081),m=i(90255),g=i(45383),v=i(24528),y=i(22267),b=i(15371),x=i(19129),_=i(14859),E=i(73674),S=i(54561),A=i(12360),w=i(8600),T=i(26217),M=i(36411),C=i(81760),P=i(38749),D=i(72091),L=i(63841),I=i(19556),R=i(17016),O=i(18310),N=i(99211),F=i(12153),U=i(26206),B=i(35922),k=i(71211),V=i(25004),G=i(53870);class z{_callbacks;_numberOfTotalDrawCalls;_numberOfInjections;constructor(){this._callbacks=new Array,this._numberOfTotalDrawCalls=0,this._numberOfInjections=0,this.counters={drawArrays:0,drawArraysInstanced:0,drawElements:0,drawElementsInstanced:0,total:0}}initialize(e){e instanceof WebGL2RenderingContext?(this.#s(e),this.#a(e)):console.debug("Draw calls cannot be intruded and counted: Valid context object expected, given",e)}uninitialize(){}resetCounters(){for(const e of this._callbacks)e.continuous?e.callCountOnLastInvocation-=this.counters.total:e.callCountOnLastInvocation=0;this.counters.drawArrays=0,this.counters.drawArraysInstanced=0,this.counters.drawElements=0,this.counters.drawElementsInstanced=0,this.counters.total=0}inject(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];Number.isInteger(t)&&t<0?console.warn("After-draw-call callback injection ignored. Number of calls ignored before invocation must be a positive number, given",t):this._callbacks.push({callback:e,numberOfCallsIgnoreBeforeInvocation:t,callCountOnLastInvocation:0,continuous:i})}#l(e,t){if(void 0!==e)return function(){e.apply(this,arguments),t.apply(this)}}#c(){if(++this.counters.total,++this._numberOfTotalDrawCalls,0!==this._callbacks.length)for(const e of this._callbacks)this.counters.total-e.callCountOnLastInvocation<=e.numberOfCallsIgnoreBeforeInvocation||(e.callback(),e.callCountOnLastInvocation=this.counters.total,++this._numberOfInjections)}#s(e){e.drawArrays=this.#l(e.drawArrays,(()=>{++this.counters.drawArrays,this.#c()})),e.drawArraysInstanced=this.#l(e.drawArraysInstanced,(()=>{++this.counters.drawArraysInstanced,this.#c()})),e.drawElements=this.#l(e.drawElements,(()=>{++this.counters.drawElements,this.#c()})),e.drawElementsInstanced=this.#l(e.drawElementsInstanced,(()=>{++this.counters.drawElementsInstanced,this.#c()})),e.drawRangeElements=this.#l(e.drawRangeElements,(()=>{++this.counters.drawElements,this.#c()}))}#a(e){}}const H={WEBGL_CONTEXT_LOST:"webglcontextlost",WEBGL_CONTEXT_RESTORED:"webglcontextrestored"};class W extends G.WebGLRenderer{static DEFAULT_NUM_DRAW_CALLS_TO_INJECT_FLUSH_AFTER_IOS=1e3;_drawCallIntrusion;#h;#u;#d;constructor(){var e,t;let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(i),null===(e=i.canvas)||void 0===e||e.addEventListener("webglcontextlost",(()=>{this.fireEvent({type:H.WEBGL_CONTEXT_LOST})})),null===(t=i.canvas)||void 0===t||t.addEventListener("webglcontextrestored",(()=>{this.fireEvent({type:H.WEBGL_CONTEXT_RESTORED})})),this.refCount=0;const r=parseInt((0,n.getIOSVersion)(),10);if((0,n.isIOSDevice)()&&r>=15){this._drawCallIntrusion=new z,this._drawCallIntrusion.initialize(this.getContext());const e=W.DEFAULT_NUM_DRAW_CALLS_TO_INJECT_FLUSH_AFTER_IOS-1;this._drawCallIntrusion.inject((()=>{this.getContext().flush()}),e,!0),console.debug(e<1?"LMVRenderer: Additional context flushes will be invoked after every draw call.":`LMVRenderer: Additional context flushes will be invoked after ${e+1} subsequent draw calls.`)}else this._drawCallIntrusion=void 0;this.#h=[],this.loadingAnimationDuration=-1,this.highResTimeStamp=-1,this.#u=this.render,this.#d=this.setRenderTarget,this.render=W.prototype.render.bind(this),this.setRenderTarget=W.prototype.setRenderTarget.bind(this)}supportsMRT(){return console.warn("LMVRenderer: .supportsMRT() has been deprecated. It always returns true."),!0}updateTimestamp(e){return this.highResTimeStamp=e}getLoadingAnimationDuration(){return this.loadingAnimationDuration}setLoadingAnimationDuration(e){return this.loadingAnimationDuration=e}clearBlend(){this.state.setBlending(D.NoBlending)}isWebGL2(){return console.warn("LMVRenderer: .isWebGL2() has been deprecated. It always returns true."),!0}render(e,t,i){this.#u(e,t,!1,i)}notifyFinalFrameRendered(e){void 0!==this._drawCallIntrusion&&this._drawCallIntrusion.resetCounters()}setRenderTarget(e){this.#d(e)}}V.EventDispatcher.prototype.apply(W.prototype),W.Events=H;var j=i(44745),q=i(57480);function X(){var e,t,i,r,o,s={},a=0,l=0,c=0,h=0,u=1,d=!1,f=!1,m={},g={},v=[0,0],y=1,b=1,x=!1,_=0,E=0,S=0,A=!1,w=0,T=[.42,0,1,1],M=!0,C={antialias:!0,sao:!1,useHdrTarget:!1,haveTwoSided:!1,customPresentPass:!1,envMapBg:!1,numIdTargets:3,renderEdges:!1,copyDepth:!1},P={},L=!1,I=null;function R(e,t){if(e&&t){t.length=0;for(let i=0;i3&&void 0!==arguments[3]?arguments[3]:{};t.initSync(i,s),x=(0,n.isMobileDevice)(),r=i,o=s,e=t,f=!!a.offscreen},this.setDepthMaterialOffset=function(e,t,i){},this.setUserFinalPass=function(e){I=e},this.overlayUpdate=function(){if(A)return A=!1,!0;if(0===w&&(0===E||-1===E))return!1;var t=e.getBlendSettings().getHighlightIntensity(),i=1;if(M){var n=.004*(performance.now()-_);n=Math.min(n,1),i=function(e,t){var i=3*e[1],n=3*(e[3]-e[1])-i;return(((1-i-n)*t+n)*t+i)*t}(T,n)}return t!==i&&(e.getBlendSettings().setHighlightIntensity(i),!0)},this.setRollOverFadeEnabled=function(e){M=e},this.beginScene=function(o,a,l,c){if(t=a,i=l,s={},!L&&r)this.initPostPipeline(C.sao,C.antialias),L=!0;else if(!r)return void(d||(0,n.isNodeJS)()||(p.logger.error("Rendering to a canvas that was resized to zero. If you see this message you may be accidentally leaking a viewer instance.",(0,q.errorCodeString)(q.ErrorCodes.VIEWER_INTERNAL_ERROR)),d=!0));c&&(e.getEnvMapPass().setCamera(t,y),e.renderBackground(C.envMapBg),e.clearMainTargets()),C.sao||e.getBlendSettings().setAOEnabled(!1),e.beginScene(t,i),e.renderScenePart(o,C.renderEdges)},this.renderScenePart=function(t,i,n,r){s={},e.renderScenePart(t,C.renderEdges)},this.clearAllOverlays=function(){e.clearOverlayTargets()},this.renderOverlays=function(i,n){let r=!1;e.clearOverlayTargets();for(let o in i){let s=i[o],a=s.scene,l=s.camera?s.camera:t;a.children.length&&(r||(r=!0),e.renderOverlay(a,l,s.materialPre,s.materialPost,C.renderEdges,s.edgeColor,n))}e.getBlendSettings().setUseOverlay(r)},this.computeSSAO=function(i){!i&&C.sao?(e.getSAO().run(t),e.getBlendSettings().setAOEnabled(!0)):e.getBlendSettings().setAOEnabled(!1)},this.getFinalTarget=function(){return null},this.presentBuffer=function(t,i){e.present(C.antialias,i,t||I)},this.composeFinalFrame=function(t,i,n){e&&(this.computeSSAO(t),i||this.presentBuffer(void 0,n))},this.cleanup=function(){e&&e.cleanup(),s={},m={},g={}},this.setSize=function(t,i,n,s){if(r=t,o=i,C.logicalWidth=t,C.logicalHeight=i,0===t&&0===i||!e)this.cleanup();else{var a=0|t*e.getPixelRatio(),l=0|i*e.getPixelRatio();C.deviceWidth=a,C.deviceHeight=l,s||(f?e.setViewport(0,0,t,i):e.setSize(t,i))}},this.getMaxAnisotropy=function(){return e?e.getMaxAnisotropy():0},this.mrtFlags=function(){return{mrtNormals:!0,mrtIdBuffer:!0}},this.getAntialiasing=function(){return C.antialias},this.initPostPipeline=function(e,t){C.sao=e,C.antialias=t,this.setSize(r,o)},this.setClearColors=function(t,i){i||(i=t),e.getGradientPass().setClearColors(t.x,t.y,t.z,i.x,i.y,i.z)},this.useOverlayAlpha=function(e){b=e},this.setClearAlpha=function(e){y=e},this.setAOEnabled=function(t){C.sao=t,P.sao=C.sao,e.getBlendSettings().setAOEnabled(t),this.setSize(r,o,!1,!0)},this.setAOOptions=function(t,i,n){let r;if(void 0!==t){let e=this.getUnitScale();t/=e,r=.01/e}e.getSAO().setAOOptions(t,r,i),void 0!==n&&e.getBlendSettings().setAOBias(n)},this.getAOEnabled=function(){return C.sao},this.getAORadius=function(){return console.log("getAORadius TODO"),0},this.getAOIntensity=function(){return console.log("getAOIntensity TODO"),0},this.getAOBias=function(){return console.log("getAOBias TODO"),0},this.setCubeMap=function(t){e.getEnvMapPass().setCubeMap(t),t||this.toggleEnvMapBackground(!1)},this.setEnvRotation=function(t){c=t,e.getEnvMapPass().setEnvRotation(t)},this.getEnvRotation=function(){return c},this.setEnvExposure=function(t){e.getEnvMapPass().setEnvExposure(t),a=t},this.setTonemapExposureBias=function(t){l=t,e.getEnvMapPass().setExposureBias(t)},this.getExposureBias=function(){return l},this.setCamera=function(e){t=e},this.setTonemapMethod=function(t){h=t,e.gammaInput=0!==t,e.getEnvMapPass().setTonemapMethod(t)},this.getToneMapMethod=function(){return h},this.toggleTwoSided=function(e){C.haveTwoSided=e},this.toggleEdges=function(e){C.renderEdges=e,P.renderEdges=e},this.toggleEnvMapBackground=function(e){C.envMapBg=e},this.idAtPixel=function(e,t,i){return this.idAtPixels(e,t,1,i)},this.idAtPixels=function(t,i,n,r){n%2==0&&(n+=1);let o=e.getRenderTargets(),a=o.getTargetSize();const l=.5*(t+1)*a[0]-.5*(n-1)|0,c=.5*(1-i)*a[1]-.5*(n-1)|0;if(s[n]&&l===s[n][4]&&c===s[n][5])return R(s[n],r),s[n][0];const h=4*n*n;m[h]||(m[h]=new Uint8Array(h));const u=m[h];let d;return g[h]||(g[h]=new Uint8Array(h)),d=g[h],o.readIdTargetPixelsSyncOrFail(l,c,n,n,[u,d]),function(t,i,n,r,o,a){let l,c=0,h=0,u=0,d=-1,f=e.getRenderTargets().getTargetSize();s[n]=[-1,-1,null,null,t,i];for(let e=0;e=0&&e<=n&&a>=0&&a<=n){const c=4*(e+a*n);if(l=r[c+3]<<24|r[c+2]<<16|r[c+1]<<8|r[c],s[n][0]=l,o){let e=o[c+1]<<8|o[c];s[n][1]=e<<16>>16}if(s[n][2]=2*(t+e)/f[0]-1,s[n][3]=-(2*(i+a)/f[1]-1),-1!==l)break}if(c==h||c<0&&c==-h||c>0&&c==1-h){const e=u;u=-d,d=e}c+=u,h+=d}return R(s[n],a),l}(l,c,n,u,d,r)},this.rolloverObjectViewport=function(e,t){this.idAtPixel(e,t,v),this.rolloverObjectId(v[0],null,v[1])},this.rolloverObjectId=function(e,t,i){return N(0),O(e,i)},this.rollOverModelId=function(e){return N(0),O(1,e)},this.setRollOverHighlightColor=function(t){e.getBlendSettings().setRolloverHighlightColor(t)},this.setDbIdForEdgeDetection=function(t,i){e.getBlendSettings().setEdgeHighlightObjectId(t,i)},this.setGlowFlagAndColor=function(t,i,n){t?(O(0,0),t!==w&&(N(t),_=performance.now())):N(0),e.getBlendSettings().setGlowOptions(i,n||0)},this.setEdgeColor=function(e){},this.setSelectionColor=function(t){var i=new D.Color(t);i.r=Math.pow(i.r,2),i.g=Math.pow(i.g,2),i.b=Math.pow(i.b,2),e.getBlendSettings().setSelectionColor(i),C.selectionColor=t},this.setUnitScale=function(t){let i=u/t;u=t,e.getSAO().setUnitScale(i)},this.getUnitScale=function(){return u},this.getColorTarget=function(){},this.getCurrentFramebuffer=function(){return e.getCurrentFramebuffer()},this.setCutPlanes=function(t){e.getIBL().setCutPlanes(t)},this.getConfig=function(){let t=e.getGradientPass().getClearColors();return{renderEdges:C.renderEdges,envMapBackground:C.envMapBg,envMap:e.getEnvMapPass().getCubeMap(),envExposure:a,toneMapExposureBias:l,envRotation:this.getEnvRotation(),tonemapMethod:h,clearColorTop:new D.Vector3(t[0],t[1],t[2]),clearColorBottom:new D.Vector3(t[3],t[4],t[5]),clearAlpha:y,useOverlayAlpha:b,aoEnabled:this.getAOEnabled(),aoRadius:this.getAORadius(),aoIntensity:this.getAOIntensity(),twoSided:C.haveTwoSided,unitScale:this.getUnitScale(),antialias:this.getAntialiasing(),selectionColor:C.selectionColor}},this.applyConfig=function(e){this.toggleEdges(e.renderEdges),this.toggleEnvMapBackground(e.envMapBackground),this.setCubeMap(e.envMap),this.setEnvExposure(e.envExposure),this.setTonemapExposureBias(e.toneMapExposureBias),this.setEnvRotation(e.envRotation),this.setTonemapMethod(e.tonemapMethod),this.toggleTwoSided(e.twoSided),this.setEdgeColor(e.edgeColor),this.setUnitScale(e.unitScale),e.clearColor?this.setClearColors(e.clearColor):this.setClearColors(e.clearColorTop,e.clearColorBottom),this.setClearAlpha(e.clearAlpha),this.useOverlayAlpha(e.useOverlayAlpha);var t=e.aoEnabled!=this.getAOEnabled(),i=e.antialias!=this.getAntialiasing();(t||i)&&this.initPostPipeline(e.aoEnabled,e.antialias)},this.enter2DMode=function(e,t){P.sao=C.sao,P.antialias=C.antialias,P.renderEdges=C.renderEdges,P.selectionColor=C.selectionColor,this.setSelectionColor(t),C.renderEdges=!1,this.initPostPipeline(!1,!1)},this.exit2DMode=function(){C.renderEdges=P.renderEdges,P.selectionColor&&this.setSelectionColor(P.selectionColor),this.initPostPipeline(P.sao,P.antialias)}}var Y=i(57872),K=i(40508),Q=null,Z=(0,n.getGlobal)().ENABLE_DEBUG,$=(0,n.getGlobal)().ENABLE_DEBUG_RCS;let J={canvas:null,antialias:!1,alpha:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!0,stencil:!1,depth:!1,logarithmicDepthBuffer:!1};function ee(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if((0,n.isNodeJS)())return;var i=Object.assign({},J,t);let r;i.canvas=e;try{if((0,Y.IsUsingWebGPU)()){const e=(0,K.cS)();r=new j.Renderer(e,i)}else r=new W(i)}catch(e){return null}return r.name="MainRenderer",!r.getContext||r.getContext&&!r.getContext()?null:(r.autoClear=!1,r.sortObjects=!1,r)}function te(e,t){var i=this;this.setGlobalManager(t.globalManager);var U,V,G,z,H,j,q=1e3/15,K=1e3/30,J=1,te=-1,ie=-1,ne=-1,re=null,oe="y";let se;var ae,le,ce,he,ue,de,fe,pe,me=null,ge=null,ve=null,ye=!1,be=!1,xe=!1,_e={type:I.PROGRESS_UPDATE_EVENT,state:o.ProgressState.LOADING,percent:0},Ee=!1,Se=!1,Ae=!1,we=0,Te={magnitude:4,depthDampening:0},Me=0,Ce=1e3/60,Pe=0,De=!0,Le=!1,Ie=!1,Re=null,Oe=null;this.edgeColorMain=new D.Vector4(0,0,0,.3),this.edgeColorGhosted=new D.Vector4(0,0,0,.1);var Ne,Fe,Ue,Be=(0,n.getGlobal)(),ke=!1,Ve=e=>{var t=e.model;this.canvas&&t&&t.getData()&&t.getData().stdSurfMats&&t.getData().stdSurfMats.materials&&this.api.loadExtension("Autodesk.StandardSurface").then((e=>{e&&e.processModel(t)}))},Ge=e=>e.model.modelRootLoaded=!0,ze=e=>{null!=e&&e.model&&!pe.findModel(e.model.id)||this.invalidate(!1,!0)},He={},We=!1,je="",qe=!0,Xe=!1;function Ye(e){var t;const n=null===(t=e.frags)||void 0===t?void 0:t.is2d;var r=Ne.phase,o=!0,s=r==v.RenderFlags.RENDER_NORMAL,a=le.settings.idbuffer&&r!=v.RenderFlags.RENDER_HIDDEN,l=r==v.RenderFlags.RENDER_HIDDEN?i.edgeColorGhosted:i.edgeColorMain;le.setEdgeColor(l),r!=v.RenderFlags.RENDER_HIDDEN||e.ignoreFadeMaterial?r==v.RenderFlags.RENDER_HIGHLIGHTED&&(e.overrideMaterial=i.highlightMaterial):e.overrideMaterial=i.fadeMaterial;const c={type:I.RENDER_SCENE_PART,scene:e,wantColor:o,wantSAO:s,wantID:a,context:le};if(i.api.dispatchEvent(c),!i.is2d&&n)i.getSheetRenderer().renderScenePart(e,o,s,a);else{const t=Xe&&!i.is2d&&r==v.RenderFlags.RENDER_HIDDEN;t&&(e.edgesOnly=!0),le.renderScenePart(e,o,s,a),t&&(e.edgesOnly=void 0)}e.overrideMaterial=null}function Ke(e){if(!G)return;i.canvasBoundingclientRectDirty=!0,i.camera.aspect=z/H,i.camera.clientWidth=z,i.camera.clientHeight=H;const t=i.getWindow().devicePixelRatio;i.glrenderer().getPixelRatio()!==t&&i.glrenderer().setPixelRatio(t),le.setSize(z,H),i.controls.handleResize(),fe&&fe.setSize(z,H),ce&&ce.setSize(),i.invalidate(!0,!0,!0),G=!1,e||i.api.dispatchEvent({type:I.VIEWER_RESIZE_EVENT,width:z,height:H})}function Qe(){var e;if((de.enabled||fe)&&!i.is2d&&(e=i.model&&!i.model.isLoadDone()?i.model.getData().bbox:i.getVisibleBounds(!0,!1,void 0,void 0))){var t=i.camera,n=e.clone(),r=new D.Vector3(1,0,0),o=ge.clone();t.worldUpTransform&&(n.applyMatrix4(t.worldUpTransform),r.applyMatrix4(t.worldUpTransform),o.applyMatrix4(t.worldUpTransform)),n.min.y-=.005*(n.max.y-n.min.y),he&&he.expandByGroundShadow(n,o);var s=n.getSize(new D.Vector3),a=n.getCenter(new D.Vector3);if(he||(s.x*=1.25,s.z*=1.25,s.x=s.z=Math.max(s.x,s.z)),t.worldUpTransform){var l=t.worldUpTransform.clone().invert();a.applyMatrix4(l)}if(de.setTransform(a,s,t.worldup,r),fe){var c=(new D.Vector3).subVectors(a,t.worldup.clone().multiplyScalar(s.y/2));fe.setTransform(c,t.worldup,s)}he&&he.setGroundShadowTransform(a,s,t.worldup,r)}}function Ze(){he&&(he.state=y.SHADOWMAP_NEEDS_UPDATE)}this.useDeferredConsolidation=!1,e&&(this.interval=setInterval((function(){De||Pe<60||i.track({name:"fps",value:Number(i.fps().toFixed(2)),aggregate:"last"})}),3e4)),this.api=t,this.canvas=e,this.loader=null,this.canvasBoundingclientRectDirty=!0,this.nearRadius=0,this.defaultLoadingAnimationDuration=300,this.lastTime2dGeometryCreated=0,this.maxModelDistance=0,this.initialize=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(U=new D.Vector3(0,1,0),pe=new s.RenderScene,(Xe=(0,Y.IsUsingWebGPU)())&&console.warn("Using WebGPU renderer. Note that this option is experimental and still under development."),(ae=t.glrenderer||ee(e,t.webglInitParams))||(0,n.isNodeJS)()){ae&&(this.onWebGLcontextLost=this.onWebGLcontextLost.bind(this),this.onWebGLcontextRestored=this.onWebGLcontextRestored.bind(this),ae.addEventListener(W.Events.WEBGL_CONTEXT_LOST,this.onWebGLcontextLost),ae.refCount++,t.enableContextRestore&&(ae.enableContextRestore=!0,ae.addEventListener(W.Events.WEBGL_CONTEXT_RESTORED,this.onWebGLcontextRestored))),(le=t.renderer||(Xe?new X:new a.RenderContext)).init(ae,e?e.clientWidth:0,e?e.clientHeight:0,t),se=t.materialManager||new l.MaterialManager(ae),se.refCount++,this.useDeferredConsolidation=t&&void 0!==t.useDeferredConsolidation?!!t.useDeferredConsolidation:Y.USE_DEFERRED_CONSOLIDATION,this.camera=new L.UnifiedCamera(e?e.clientWidth:512,e?e.clientHeight:512),this.lightsOn=!1,this.lights=[],this.no_lights=[],Re=(new D.Color).setRGB(1,1,1),Oe=(new D.Color).setRGB(1,1,1),this.cameraChangedEvent={type:I.CAMERA_CHANGE_EVENT,camera:this.camera},me=new D.Vector3(1,1,1),ge=(new D.Vector3).copy(me),ve=new D.Vector3(-1,0,1),this.scene=new D.Scene,this.sceneAfter=new D.Scene,this.sceneAfter.sortObjects=!1,this.overlayScenes={},Et(),this.createOverlayScene("selection_points",null,null),this.selectionMeshes={},this.fadeMaterial=new D.MeshPhongMaterial({color:16777215,opacity:.1,reflectivity:0,transparent:!0,depthWrite:!1}),this.fadeMaterial.packedNormals=!0,se.addInstancingSupport(this.fadeMaterial),se.addMaterial("__fadeMaterial__",this.fadeMaterial,!0),this.setSelectionColor(6724095),se.togglePolygonOffset(!0),le.setDepthMaterialOffset(se.getPolygonOffsetOn(),se.getPolygonOffsetFactor(),se.getPolygonOffsetUnits()),this.progressiveRender=!0,this.swapBlackAndWhite=!1,this.targetFrameBudget=K,this.frameDisplayRate=5,(0,n.isMobileDevice)()&&(q*=2,K*=2,this.targetFrameBudget/=2,this.frameDisplayRate/=2),this.interruptBudget=1e10,this.controls={update:function(){this.camera.lookAt(this.camera.target),this.camera.updateProjectionMatrix(),this.camera.dirty=!1},handleResize:function(){},recordHomeView:function(){},uninitialize:function(){},isToolActivated:function(){return!1}},this.selector=new c.MultiModelSelector(this),this.visibilityManager=new h.MultiModelVisibilityManager(this),this.showGhosting=!0,this.showOverlaysWhileMoving=!0,this.skipAOWhenMoving=!1,this.keyFrameAnimator=null,this.zoomBoundsChanged=!0;var i=u.LightPresets[u.DefaultLightPreset].bgColorGradient;this.setClearColors(i[0],i[1],i[2],i[3],i[4],i[5]),(de=Xe?ae.getGroundShadowPass():new d.GroundShadow(ae)).enabled=!0,Ne=new it,Xe||(se.addMaterialNonHDR("groundShadowDepthMaterial",de.getDepthMaterial()),se.addOverrideMaterial("normalsMaterial",le.getDepthMaterial()),se.addOverrideMaterial("edgeMaterial",le.getEdgeMaterial())),le.beginScene(this.scene,this.camera,this.noLights,!0),le.composeFinalFrame(!0),this.api.addEventListener(I.MODEL_ROOT_LOADED_EVENT,Ve),this.api.addEventListener(I.MODEL_ROOT_LOADED_EVENT,Ge),this.api.addEventListener(I.LOADER_REPAINT_REQUEST_EVENT,ze)}},this.getSheetRenderer=function(){return ce||(ce=new k.A(i,le,ae,se)),ce},this.isSheetRendererNeeded=function(){return!i.is2d&&this.get2DModels().length>0},this.get2DModels=function(){return pe.getModels().filter((e=>e.is2d()))},this.get3DModels=function(){return pe.getModels().filter((e=>e.is3d()))},this.renderGroundShadow=function(e){he?he.state==y.SHADOWMAP_VALID&&he.renderGroundShadow(i.camera,e||le.getColorTarget()):(de.renderShadow(i.camera,e||le.getColorTarget()),de.rendered=!0)};var $e,Je,et,tt={NOTHING_DRAWN:0,MODEL_DRAWN:1,BACKGROUND_DRAWN:2,OVERLAY_DRAWN:4,REFLECTION_DRAWN:8,ALL_DRAWN:15};function it(){this.highResTimeStamp=-1,this.screenDrawn=tt.NOTHING_DRAWN,this.screenHasChanged=!1,this.frameBudget=0,this._usedFrameTime=0,this.frameTimeScalingFactorAvg=1,this.frameRemaining=0,this.phase=v.RenderFlags.RENDER_NORMAL,this.signalProgressByRendering=!1,this.tickCount=0,this.beginFrameAvg=0,this.lastBeginFrameTimeStamp=0,this.RENDERMODE_FULL=0,this.RENDERMODE_PROGRESSIVE=1,this.RENDERMODE_SILENT=2,this.renderType=this.RENDERMODE_FULL,this.INITIAL_GROUND_SHADOW=.2,this.cmdListActive=!1,this.cmdIndex=0,this.continueExecution=!0,this.encounteredAlwaysDo=!1,this.finishedFullRender=!0,this.groundShadowInPost=!1,this.drawOverlay=!1,this.cmdIsOpen=!1,this.allocArraySize=0,this.cmdListLength=0,this.cmdList=[],this.paramList=[],this.CMD_NORMAL_SEQUENCE=0,this.CMD_DO_AFTER=1,this.CMD_ALWAYS_DO=2,this.isActive=function(){return this.cmdListActive},this.setFrame=function(e){this.frameBudget=e},this.beginCommandSet=function(){this.cmdListActive=!0,this.cmdIndex=0,this.cmdListLength=0,this.encounteredAlwaysDo=!1,this.tickCount=0,this.screenDrawn=tt.NOTHING_DRAWN,this.screenHasChanged=!1},this.endCommandSet=function(){this.cmdIsOpen&&(this.cmdIsOpen=!1,this.cmdListLength++)},this._internalSetParam=function(e,t){this.paramList[this.cmdIndex][e]=t},this.addCommand=function(e,t){for(this.cmdIsOpen&&this.cmdListLength++,this.cmdIsOpen=!0;this.allocArraySize<=this.cmdListLength;)this.cmdList[this.cmdListLength]={},this.paramList[this.cmdListLength]={},this.allocArraySize++;return this.cmdList[this.cmdListLength]=e,this.paramList[this.cmdListLength].executionLevel=t||this.CMD_NORMAL_SEQUENCE,this.encounteredAlwaysDo=this.encounteredAlwaysDo||t===this.CMD_ALWAYS_DO,this.cmdListLength},this.setParam=function(e,t){this.cmdIsOpen?this.paramList[this.cmdListLength][e]=t:Z&&p.logger.error("ERROR: cannot set param when no command is open!")},this.getParam=function(e){return Z&&void 0===this.paramList[this.cmdIndex][e]&&p.logger.error("ERROR: parameter "+e+" was never set for this command! Go fix it."),this.paramList[this.cmdIndex][e]},this.executeCommandList=function(){if(!Ne.cmdListActive)return Ne.lastBeginFrameTimeStamp=0,!0;var e;if(this.tickCount>0&&(Ne.lastBeginFrameTimeStamp=0),this.frameRemaining=this.frameBudget,Z&&this.cmdIsOpen&&p.logger.error("ERROR: should call endCommandSet before executing"),this.continueExecution=!0,$&&(0===this.tickCount&&console.log("==================="),console.log("Running commands for "+(Ne.renderType===Ne.RENDERMODE_PROGRESSIVE?"progressive":Ne.renderType===Ne.RENDERMODE_FULL?"full":"silent")+" render, for tick count "+this.tickCount)),this.encounteredAlwaysDo)for(var t=0;t=Ne.CMD_ALWAYS_DO&&($&&console.log(" ALWAYS DO command "+t+": "+this.cmdList[t].name),this.cmdList[t]()),t++;for(;this.cmdIndex=Ne.CMD_DO_AFTER)&&($&&console.log(" command "+this.cmdIndex+": "+this.cmdList[this.cmdIndex].name+" and "+Ne.frameRemaining+" frame budget remaining"),this.cmdList[this.cmdIndex]()&&($&&console.log(" >>> out of tick time with "+Ne.frameRemaining),e=this.cmdIndex,this.continueExecution=!1)),this.cmdIndex++;return Ne._usedFrameTime=Ne.frameBudget-Ne.frameRemaining,this.continueExecution?this.cmdListActive=!1:this.cmdIndex=e,this.tickCount++,!this.continueExecution}}function nt(){if(Ne.renderType===Ne.RENDERMODE_PROGRESSIVE)if(Ne.getParam("GenerateGroundShadow.afterBeauty")){if(Ne.frameRemaining=de.prepareGroundShadow(i.modelQueue(),0,Ne.frameRemaining),de.getStatus()==b.GroundFlags.GROUND_RENDERED){if(Ne.getParam("GenerateGroundShadow.signalRedraw"))return i.requestSilentRender(),$&&console.log(" $$$$ SIGNAL FULL GROUND SHADOW REDRAW"),!0;Ne.groundShadowInPost=!0}}else 0===Ne.tickCount&&de.prepareGroundShadow(i.modelQueue(),10,Y.USE_HLOD?3:void 0);else Ne.frameRemaining=de.prepareGroundShadow(i.modelQueue(),0,Ne.frameRemaining);return Ne.frameRemaining<0&&de.getStatus()===b.GroundFlags.GROUND_UNFINISHED}function rt(){return de.getStatus()!==b.GroundFlags.GROUND_UNFINISHED&&i.renderGroundShadow(),!1}function ot(){return Ne.renderType===Ne.RENDERMODE_PROGRESSIVE?Ne.getParam("GenerateGroundReflection.afterBeauty")?(Ne.frameRemaining=fe.prepareGroundReflection(de,i,!1,0,Ne.frameRemaining),fe.getStatus()==b.GroundFlags.GROUND_RENDERED&&(Ne.screenDrawn|=tt.REFLECTION_DRAWN,Ne.groundShadowInPost&&se.hasTransparentMaterial()&&i.requestDeferredSilentRender())):0===Ne.tickCount&&fe.prepareGroundReflection(de,i,!0,10,Y.USE_HLOD?5:void 0):Ne.frameRemaining=fe.prepareGroundReflection(de,i,!1,0,Ne.frameRemaining),Ne.frameRemaining<0&&fe.getStatus()===b.GroundFlags.GROUND_UNFINISHED}function st(){if(he.state===y.SHADOWMAP_NEEDS_UPDATE)Ne.frameRemaining=he.startUpdate(pe,Ne.frameRemaining,i.camera,ge,se);else if(he.state==y.SHADOWMAP_INCOMPLETE&&(Ne.frameRemaining=he.continueUpdate(pe,Ne.frameRemaining,se),he.state==y.SHADOWMAP_VALID))return i.requestSilentRender(),$&&console.log(" $$$$ SIGNAL FULL SHADOW MAP REDRAW"),!0;return Ne.frameRemaining<0&&he.state!==y.SHADOWMAP_VALID}function at(){he.state=y.SHADOWMAP_NEEDS_UPDATE}function lt(){if(Ne.signalProgressByRendering&&i.signalProgress(0,o.ProgressState.RENDERING),Ne.renderType===Ne.RENDERMODE_PROGRESSIVE){if(Ne.lastBeginFrameTimeStamp>0){var e=Ne.highResTimeStamp-Ne.lastBeginFrameTimeStamp;if(Y.USE_HLOD){const t=Ne._usedFrameTime&&!pe.isDone()?Ne._usedFrameTime/e:1;Ne.frameTimeScalingFactorAvg=.9*Ne.frameTimeScalingFactorAvg+.1*t}else Ne.beginFrameAvg=.75*Ne.beginFrameAvg+.25*e}Ne.lastBeginFrameTimeStamp=Ne.highResTimeStamp,i._updateTargetFrameBudget()}var t=Ne.getParam("BeginScene.clear");return le.beginScene(i.scene,i.camera,i.lightsOn?i.lights:i.no_lights,t),t&&(Ne.screenDrawn|=tt.BACKGROUND_DRAWN),Ne.getParam("BeginScene.signalCameraChanged")&&i.api.dispatchEvent(i.cameraChangedEvent),!1}function ct(){return Ne.phase=Ne.getParam("BeginPhase.phase"),$&&console.log(" render phase is now "+Ne.phase),pe.reset(i.camera,Ne.phase,Ne.getParam("BeginPhase.moved"),se.getCutPlanes(),We),!1}function ht(){return pe.isEmpty()||pe.isDone()||(Ne.screenDrawn|=tt.MODEL_DRAWN,Ne.frameRemaining=pe.renderSome(Ye,Ne.frameRemaining,Ne.frameTimeScalingFactorAvg),Xe&&ae.flushCommandQueue(),Ne.signalProgressByRendering&&(i.signalProgress(100*pe.getRenderProgress(),o.ProgressState.RENDERING),$&&console.log(" %%% percent done "+100*pe.getRenderProgress()))),!pe.isDone()}function ut(){return Ne.phase=v.RenderFlags.RENDER_FINISHED,le.renderScenePart(i.sceneAfter,!0,!0,!0),!1}function dt(){return Ne.phase=v.RenderFlags.RENDER_FINISHED,!1}function ft(){i.signalProgress(100,o.ProgressState.RENDERING)}function pt(){return i.isOverlayDirty()&&(i.clearOverlayDirtyFlag(),Ne.drawOverlay=!0),Ne.drawOverlay&&(!pe.isEmpty()&&pe.isDone()||i.showOverlaysWhileMoving?(i.renderOverlays(),Ne.screenDrawn|=tt.OVERLAY_DRAWN):(le.clearAllOverlays(),Ne.drawOverlay=!1)),!1}function mt(){Ne.screenDrawn|=tt.ALL_DRAWN}function gt(){if(Ne.screenDrawn&&(Ne.phase===v.RenderFlags.RENDER_FINISHED||Ne.tickCount%i.frameDisplayRate==0)){var e=!Ne.getParam("PostAndPresent.performAO")||(Ne.screenDrawn&(tt.BACKGROUND_DRAWN|tt.MODEL_DRAWN))==tt.BACKGROUND_DRAWN;le.composeFinalFrame(e),Ne.screenHasChanged=!0,Ne.screenDrawn=tt.NOTHING_DRAWN,t=Ne.highResTimeStamp,Pe++,Me<=t&&Me>0&&(Ce=.8*Ce+.2*(t-Me)),i.fpsCallback&&i.fpsCallback(i.fps()),i.api.dispatchEvent({type:I.RENDER_PRESENTED_EVENT})}var t;return!1}function vt(){return Z&&!1===le.getAOEnabled()&&p.logger.error("AO should be on at this point!"),le.setAOEnabled(!1),!1}function yt(){return Z&&!0===le.getAOEnabled()&&p.logger.error("AO should be off at this point!"),le.setAOEnabled(!0),!1}function bt(){return i.requestSilentRender(),!1}function xt(){return Ne.finishedFullRender=!0,!1}this.tick=function(e){e||(e=0),Ne.highResTimeStamp=e,ae.updateTimestamp(e);var t=se.updateMaterials();i.invalidate(t.needsClear,t.needsRender,t.overlayDirty);const n=function(e){if(i.keyFrameAnimator){var t=Me>0?(e-Me)/1e3:0,n=i.keyFrameAnimator.update(t);if(n&&(i.sceneUpdated(!0),n&i.keyFrameAnimator.UPDATE_CAMERA))return!0}return!1}(e),r=i.controls.update(e),o=pe&&pe.update(e),s=r||n||ue||o;ue=!1;var a=G;Ke(),ye||(ye=s),xe||(xe=s);var l=!1,c=le.overlayUpdate();xe?function(){for(var e in i.selectionMeshes){var t=i.selectionMeshes[e];if(t.model){var n,r=t.model.getFragmentList();t.geometry===(null===(n=r)||void 0===n?void 0:n.getGeometry(t.fragId))&&r.getWorldMatrix(t.fragId,t.matrix)}}}():c&&!xe&&(xe=l=!0),this.isLoadingAnimationEnabled()&&Me-i.lastTime2dGeometryCreated<=ae.getLoadingAnimationDuration()&&(be=!0);var h=i.model&&i.model.loader&&i.model.loader.pagingProxy&&i.model.loader.pagingProxy.getMemoryInfo();Ne.signalProgressByRendering=i.model&&i.model.isLoadDone()&&!i.model.isLeaflet()&&!h,Ee&&(Qe(),de.setDirty(),Ee=!1,1)&&(ye=!0);var u=ye,d=pe.frameResumePossible();if(ye=ye||!d,Ae=Ae||Se&&!Ne.cmdListActive,ye||be||xe||Ae)if(Ne.drawOverlay=xe||ye||be,ye||be||Ae){var f,p=u?x.ResetFlags.RESET_RELOAD:x.ResetFlags.RESET_NORMAL;ye||be?(i.progressiveRender?(Ne.renderType=Ne.RENDERMODE_PROGRESSIVE,f=i.targetFrameBudget):(Ne.renderType=Ne.RENDERMODE_FULL,f=i.interruptBudget),ye&&(Se=Ae=!1)):(Ne.renderType=Ne.RENDERMODE_SILENT,f=i.targetFrameBudget,ye=!0,p=x.ResetFlags.RESET_REDRAW,Se=Ae=!1),i.skipCameraUpdate||i.updateCameraMatrices(),Ne.setFrame(f),Ne.finishedFullRender=!1,Ne.beginCommandSet();var m=de.enabled&&!i.is2d&&!De,g=!!fe&&!i.is2d&&!De,b=s||a,_=s&&i.skipAOWhenMoving&&le.getAOEnabled();Ne.addCommand(lt),Ne.setParam("BeginScene.signalCameraChanged",b),Ne.setParam("BeginScene.clear",ye),_&&Ne.addCommand(vt,Ne.CMD_ALWAYS_DO),pe&&(he&&he.state!==y.SHADOWMAP_VALID&&Ne.addCommand(st),m&&(Ne.addCommand(nt),Ne.setParam("GenerateGroundShadow.afterBeauty",!1),Ne.setParam("GenerateGroundShadow.signalRedraw",!1)),g?(fe.setDirty(),Ne.addCommand(ot),Ne.setParam("GenerateGroundReflection.afterBeauty",!1)):m&&ye&&Ne.addCommand(rt),pe.hasHighlighted()&&(Ne.addCommand(ct),Ne.setParam("BeginPhase.phase",v.RenderFlags.RENDER_HIGHLIGHTED),Ne.setParam("BeginPhase.moved",p),p=!1,Ne.addCommand(ht)),Ne.addCommand(ct),Ne.setParam("BeginPhase.phase",v.RenderFlags.RENDER_NORMAL),Ne.setParam("BeginPhase.moved",p),p=!1,Ne.addCommand(ht),!pe.areAllVisible()&&i.showGhosting&&(g&&Ne.renderType===Ne.RENDERMODE_PROGRESSIVE||(Ne.addCommand(ct),Ne.setParam("BeginPhase.phase",v.RenderFlags.RENDER_HIDDEN),Ne.setParam("BeginPhase.moved",p),Ne.addCommand(ht))),Ne.addCommand(ut),Ne.signalProgressByRendering&&Ne.addCommand(ft)),Ne.addCommand(pt,Ne.renderType===Ne.RENDERMODE_PROGRESSIVE?Ne.CMD_DO_AFTER:Ne.CMD_NORMAL_SEQUENCE),Ne.addCommand(gt,Ne.renderType===Ne.RENDERMODE_PROGRESSIVE?Ne.CMD_DO_AFTER:Ne.CMD_NORMAL_SEQUENCE),Ne.setParam("PostAndPresent.performAO",le.getAOEnabled()&&!_),Ne.renderType===Ne.RENDERMODE_PROGRESSIVE&&pe&&(he&&he.state!==y.SHADOWMAP_VALID&&(Ne.addCommand(at),Ne.addCommand(st)),m&&(Ne.addCommand(nt),Ne.setParam("GenerateGroundShadow.afterBeauty",!0),Ne.setParam("GenerateGroundShadow.signalRedraw",!g),Ne.signalProgressByRendering&&Ne.addCommand(ft)),g&&(Ne.groundShadowInPost=!1,Ne.addCommand(ot),Ne.setParam("GenerateGroundReflection.afterBeauty",!0),!pe.areAllVisible()&&i.showGhosting&&(Ne.addCommand(ct),Ne.setParam("BeginPhase.phase",v.RenderFlags.RENDER_HIDDEN),Ne.setParam("BeginPhase.moved",p),Ne.addCommand(ht)),Ne.addCommand(dt),Ne.addCommand(gt),Ne.setParam("PostAndPresent.performAO",le.getAOEnabled()&&!_),Ne.signalProgressByRendering&&Ne.addCommand(ft))),_&&(Ne.addCommand(yt,Ne.CMD_ALWAYS_DO),Ne.addCommand(bt)),Ne.addCommand(xt),Ne.endCommandSet(),ye=!1,be=!1,this.clearOverlayDirtyFlag()}else Ne.finishedFullRender&&(Ne.beginCommandSet(),$&&console.log("=====\nOVERLAY DIRTY"),l?Ne.addCommand(mt):Ne.addCommand(pt,!0),Ne.addCommand(gt,!0),Ne.setParam("PostAndPresent.performAO",le.getAOEnabled()),Ne.signalProgressByRendering&&Ne.addCommand(ft),Ne.endCommandSet(),this.clearOverlayDirtyFlag());Ue=Ne.cmdListActive,i.onBeforeRender&&i.onBeforeRender(Ue),Ne.executeCommandList(),Ue!==qe&&(Ue||Xe||i.glrenderer().notifyFinalFrameRendered(),i.api.dispatchEvent({type:I.FINAL_FRAME_RENDERED_CHANGED_EVENT,value:{finalFrame:!Ue}}),qe=Ue),Me=Ne.highResTimeStamp},this.setLmvDisplay=function(e){Be=e},this.run=function(){j=!0,V=0,setTimeout((function(){j&&function e(t){V=Be.requestAnimationFrame(e),i.tick(t)}()}),1)},this.stop=function(){i.getWindow().cancelAnimationFrame(V),j=!1},this.toggleProgressive=function(e){this.progressiveRender=e,ye=!0},this.updateClearColors=function(){let e=this.clearColorTop,t=this.clearColorBottom;if(this.is2d&&this.swapBlackAndWhite){const i=e=>1===e.x&&1===e.y&&1===e.z,n=e=>0===e.x&&0===e.y&&0===e.z,r=e=>i(e)?new D.Vector3(0,0,0):n(e)?new D.Vector3(1,1,1):e;e=r(e),t=t&&r(t)}le.setClearColors(e,t)},this.toggleSwapBlackAndWhite=function(e){this.swapBlackAndWhite=e,this.updateClearColors(),ye=!0},this.toggleGrayscale=function(e){se.setGrayscale(e),ye=!0},this.toggleGhosting=function(e){this.showGhosting=e,ye=!0},this.toggleOverlaysWhileMoving=function(e){this.showOverlaysWhileMoving=e},this.togglePostProcess=function(e,t){le.initPostPipeline(e,t),this.fireRenderOptionChanged(),ye=!0},this.toggleCmdMapping=function(e,t){t.keyMapCmd=e},this.toggleGroundShadow=function(e){de.enabled!==e&&(de.enabled=e,de.clear(),e&&de.setDirty(),Qe(),this.fireRenderOptionChanged(),this.invalidate(!0,!1,!1))},this.isGroundShadowEnabled=function(){return de&&de.enabled},this.setGroundShadowColor=function(e){de.enabled&&(de.setColor(e),this.invalidate(!0,!1,!1))},this.setGroundShadowAlpha=function(e){de.enabled&&(de.setAlpha(e),this.invalidate(!0,!1,!1))},this.setRightBtnSelection=function(e){ke=e},this.isRightBtnSelectionEnabled=function(){return ke},this.toggleGroundReflection=function(e){e&&fe||!e&&!fe||(e?((fe=new _.GroundReflection(ae,this.canvas.clientWidth,this.canvas.clientHeight,{clearPass:le.getClearPass()})).setClearColors(this.clearColorTop,this.clearColorBottom,(0,n.isMobileDevice)()),fe.toggleEnvMapBackground(Le),fe.setEnvRotation(le.getEnvRotation()),Qe()):(fe.cleanup(),fe=void 0),this.fireRenderOptionChanged(),this.invalidate(!0,!1,!1))},this.setGroundReflectionColor=function(e){fe&&(fe.setColor(e),this.invalidate(!0,!1,!1))},this.setGroundReflectionAlpha=function(e){fe&&(fe.setAlpha(e),this.invalidate(!0,!1,!1))},this.toggleEnvMapBackground=function(e){Le=e,le.toggleEnvMapBackground(e),fe&&fe.toggleEnvMapBackground(e),this.invalidate(!0,!0,!1)},this.isEnvMapBackground=function(){return Le},this.setOptimizeNavigation=function(e){this.skipAOWhenMoving=e},this.getOverlayScenesToRender=function(){const e={};for(const[t,i]of Object.entries(this.overlayScenes))i.hiddenFromMainRender||(e[t]=i);return e},this.renderOverlays=function(){!function(){for(var e in i.selectionMeshes){var t=i.selectionMeshes[e];t.model&&t.model.isConsolidated()&&(t.model.updateRenderProxy(t,t.fragId),t.geometry||i.highlightFragment(t.model,t.fragId,!1))}}();var e,t=this.lightsOn;t||this.toggleLights(!0,!0),this.dir_light1&&(e=this.dir_light1.intensity,this.dir_light1.intensity=1);const n=this.getOverlayScenesToRender();le.renderOverlays(n,this.lightsOn?this.lights:this.no_lights),t||this.toggleLights(!1,!0),this.dir_light1&&(this.dir_light1.intensity=e)},this.setLayerVisible=function(e,t){this.layers.setLayerVisible(e,t)},this.isLayerVisible=function(e){return this.layers.isLayerVisible(e)},this.getVisibleLayerIndices=function(){return this.layers.getVisibleLayerIndices()},this.setNearRadius=function(e,t){this.nearRadius!==e&&(this.nearRadius=e,t&&this.invalidate(!0))},this.getNearRadius=function(){return this.nearRadius},this.updateNearFarValues=function(e,t){if(t.isEmpty())p.logger.warn("Calculating near-far values based on empty worldBox (infinity) will result in incorrect values - Better to keep previous values instead.");else{if(et||($e=new D.Matrix4,Je=new D.Matrix4,et=new D.Box3),$e.compose(e.position,e.quaternion,e.scale),Je.copy($e).invert(),et.copy(t),fe){var i=new D.Vector3;i.multiplyVectors(et.max,e.worldup);var n=new D.Vector3;n.multiplyVectors(et.min,e.worldup),i.sub(n),i.x>=0?et.min.x-=i.x:et.max.x-=i.x,i.y>=0?et.min.y-=i.y:et.max.y-=i.y,i.z>=0?et.min.z-=i.z:et.max.z-=i.z}he&&he.groundShapeBox&&et.union(he.groundShapeBox),et.applyMatrix4(Je);var r=1e-5*(et.max.z-et.min.z),o=.5*(et.max.y-et.min.y),s=-(et.max.z+r)-o,a=-(et.min.z-r)+o;if(e.isPerspective){this.nearRadius>0?(s=Math.max(s,Math.min(this.nearRadius,1e-4*Math.abs(a-s))),a=Math.min(a,1e4*s)):(s=Math.max(s,Math.min(1,1e-4*Math.abs(a-s))),a<0&&(a=1e-4),s=Math.max(s,1e-5*a));const i=Math.sqrt(F.SceneMath.pointToBoxDistance2(e.position,t)),n=Math.max(1,i);s=Math.min(s,n)}a=Math.max(a,s),e.near=s,e.far=a,e.updateCameraMatrices()}},this.getPixelsPerUnit=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.model;var n=le.settings.deviceHeight,r=se.getCutPlanesRaw()[0],o=i?i.getBoundingBox():t;return F.SceneMath.getPixelsPerUnit(e,this.is2d,t,n,r,o)},this.updateCameraMatrices=function(){const e=this.camera;e.worldup&&this.setWorldUp(e.worldup);const t=this.getVisibleBounds(!0,xe);this.updateNearFarValues(e,t),this.maxModelDistance&&this._applyMaxModelDistanceToNearFar();const i=this.getPixelsPerUnit(e,t),n=le.settings.deviceWidth,r=le.settings.deviceHeight;this.is2d?(se.updatePixelScale(i,n,r,e),se.updateSwapBlackAndWhite(this.swapBlackAndWhite)):se.updatePixelScale(i,n,r,e),Xe&&ae.getMainPass().updatePixelScale(i,e);this.get2DModels().forEach((t=>{const i=t.getModelToViewerTransform(),o=i?i.getMaxScaleOnAxis():1;if(!this.is2d||1!==o){const i=t.getVisibleBounds(),s=F.SceneMath.getPixelsPerUnit(e,!0,i,r,null,i);se.updatePixelScaleForModel(t,s,n,r,o,e)}}))},this.initLights=function(){Ie||(this.dir_light1=new D.DirectionalLight(Re,1),this.dir_light1.position.copy(ve),this.amb_light=new D.AmbientLight(Oe),this.lights=[this.dir_light1,this.amb_light],this.camera.add(this.dir_light1),this.camera.add(this.dir_light1.target),Ie=!0)};function _t(){if((0,n.isMobileDevice)())return;var e=pe.getModels().length;let t=le.mrtFlags();e>1&&t.mrtIdBuffer<2&&(le.setIdTargetCount(2)&&se.toggleMRTSetting(le.mrtFlags()))}this.toggleLights=function(e,t){this.amb_light&&(this.lightsOn=e,function(e,t,i,n){var r,o,s=u.LightPresets[te],a=s&&s.ambientColor,l=s&&s.directLightColor;a=(null===(r=a)||void 0===r?void 0:r.slice(0))??Oe.toArray(),l=(null===(o=l)||void 0===o?void 0:o.slice(0))??Re.toArray(),i?(n&&e?e.color.setRGB(.5*l[0],.5*l[1],.5*l[2]):e&&e.color.setRGB(a[0],a[1],a[2]),t&&t.color.setRGB(l[0],l[1],l[2])):e&&n&&e.color.setRGB(a[0],a[1],a[2])}(this.amb_light,this.dir_light1,e,t))},this.syncCamera=function(e){this.camera.updateCameraMatrices(),e&&this.setWorldUp(this.api.navigation.getWorldUpVector()),ue=!0},this.getModelCamera=function(e){if(!e)return;let t;const i=e.getDefaultCamera();return t=i||L.UnifiedCamera.getViewParamsFromBox(e.getBoundingBox(),e.is2d(),this.camera.aspect,this.camera.up,this.camera.fov),t},this.setViewFromFile=function(e,t){if(e){var i=this.getModelCamera(e),n=e.getMetadata("navigation hint","value",null),r=this.controls.isToolActivated("freeorbit")||t&&"Freeorbit"===n;this.setViewFromCamera(i,t,r)}},this.adjustOrthoCamera=function(e){var t=this.getVisibleBounds();L.UnifiedCamera.adjustOrthoCamera(e,t)},this.setViewFromCamera=function(e,t,i){this.adjustOrthoCamera(e);var n,r=this.model?this.model.getUpVector():null;n=r?(new D.Vector3).fromArray(r):i?e.up.clone():R.Navigation.snapToAxis(e.up.clone());const o=e.target.clone().sub(e.position).normalize().distanceTo(n.clone().negate())<1e-6;i?this.api.prefs&&this.api.prefs.set("fusionOrbitConstrained",n.equals(e.up)):o||(e.up=n);var s=this.api.navigation;if(s){var a=this.camera;if(t)a.up.copy(e.up),a.position.copy(e.position),a.target.copy(e.target),e.isPerspective?a.fov=e.fov:(a.saveFov=e.fov,a.fov=L.UnifiedCamera.ORTHO_FOV),a.isPerspective=e.isPerspective,a.orthoScale=e.orthoScale,a.dirty=!0,s.setWorldUpVector(i||o?n:a.up),s.setView(a.position,a.target),s.setPivotPoint(a.target),this.syncCamera(!0);else if(a.isPerspective=e.isPerspective,e.isPerspective||(a.saveFov=e.fov,e.fov=L.UnifiedCamera.ORTHO_FOV),i)s.setRequestTransitionWithUp(!0,e.position,e.target,e.fov,e.up,n);else{var l=this.getVisibleBounds();if(!l.containsPoint(e.target)){var c=l.getCenter(new D.Vector3).distanceTo(e.position),h=e.target.clone().sub(e.position).normalize().multiplyScalar(c);e.target.copy(e.position.clone().add(h))}var u=s.computeOrthogonalUp(e.position,e.target);s.setRequestTransitionWithUp(!0,e.position,e.target,e.fov,u,n)}}ue=!0},this.getViewArrayFromCamera=function(e){var t,i=e||{x:0,y:0,z:0},n=this.camera,r=this.model.getUpVector();t=r?(new D.Vector3).fromArray(r):R.Navigation.snapToAxis(n.up.clone());var o=this.api.navigation.getPivotPoint();return[n.position.x+i.x,n.position.y+i.y,n.position.z+i.z,o.x+i.x,o.y+i.y,o.z+i.z,t.x,t.y,t.z,n.aspect,D.Math.degToRad(n.fov),n.orthoScale,n.isPerspective?0:1]},this.setViewFromViewBox=function(e,t,i,n){if(!e.is2d())return;var r={},o=e.getBoundingBox(),s={width:t[2]-t[0],height:t[3]-t[1]};s.aspect=s.width/s.height,s.centerX=t[0]+s.width/2,s.centerY=t[1]+s.height/2;var a=this.camera.aspect;a>s.aspect?r.orthoScale=s.height:r.orthoScale=s.width/a;const l=o.getCenter(new D.Vector3);r.isPerspective=!1,r.position=new D.Vector3(s.centerX,s.centerY,l.z+r.orthoScale),r.target=new D.Vector3(s.centerX,s.centerY,l.z),r.target.y+=1e-6*s.height,r.up=new D.Vector3(0,0,1),this.setViewFromCamera(r,n,!1)},this.setWorldUp=function(e){if(!U.equals(e)){U.copy(e);var t=Math.abs(e.x);oe="x",Math.abs(e.y)>t&&(oe="y",t=Math.abs(e.y)),Math.abs(e.z)>t&&(oe="z");var n,r,o,s,a=new D.Vector3(0,1,0);i.camera.worldUpTransform=(n=a,r=e,o=(new D.Vector3).crossVectors(r,n).normalize(),s=Math.acos(n.dot(r)),(new D.Matrix4).makeRotationAxis(o,s)),this.sceneUpdated(!1)}},this.setUp2DMode=function(e,t){const n=e.getData();null!=n&&n.layerCount&&se.initLayersTexture(n.layerCount,n.layersMap,e.id);const r=se.create2DMaterial(null,{},!0,!1,(function(){i.invalidate(!1,!0,!1)})),o=se.findMaterial(null,r);if(!t){this.is2d&&le.exit2DMode(),le.enter2DMode(o,se.get2dSelectionColor()),this.is2d||this.saveLightPreset(),this.is2d=!0,this.setLightPreset(u.DefaultLightPreset2d),this.setRenderingPrefsFor2D(!0);const t=e.getData();if(null!=t&&t.hidePaper){var s=t.bgColor,a=s>>16&255,l=s>>8&255,c=255&s;this.setClearColors(a,l,c,a,l,c)}}},this.addModel=function(e,t){if(e){var i=!!this.model,n=e.is2d();this.model||e.getData().underlayRaster||(this.model=e,le.setUnitScale(e.getUnitScale())),this.layers||(this.layers=new E.ModelLayers(this)),e.getData().underlayRaster||this.layers.addModel(e,!0),pe.addModel(e),this.selector.addModel(e),this.visibilityManager.addModel(e),Xe&&ae.addModel(e),this._setModelPreferences(e),n?this.setUp2DMode(e,i):this.is2d?(this.is2d=void 0,le.exit2DMode()):ne>=0&&(ie=ne),this.updateClearColors(),this.setupLighting(e),_t(),this.fireRenderOptionChanged(),this.invalidate(!0),this.api.fireEvent({type:I.MODEL_ADDED_EVENT,model:e,preserveTools:t,isOverlay:i})}},this._setModelPreferences=function(e){e.hideLines(!this.api.prefs.get("lineRendering")),e.hidePoints(!this.api.prefs.get("pointRendering")),e.selector.setSelectionMode(this.api.prefs.get(B.Prefs3D.SELECTION_MODE))},this.setupLighting=function(e){e=e||this.model,(0,n.isNodeJS)()||!e||e.is2d()||(this.setLightPresetFromFile(e)||(ie>=0?(this.setLightPreset(ie,!0,re),ie=-1,re=null):this.setLightPreset(te,!1)),Xe||this.setAOHeuristics(e))},this.getSvfMaterialId=function(e){return this.model.getFragmentList().getSvfMaterialId(e)},this.getMaterials=function(){return se},this.setupMesh=function(e,t,i,n){const r={geometry:t,matrix:n};return i&&(r.material=this.matman().setupMaterial(e,t,i)),r.isLine=t.isLines,r.isWideLine=t.isWideLines,r.isPoint=t.isPoints,r.is2d=t.is2d,e.is2d()&&(r.geometry.creationTime=Me,this.lastTime2dGeometryCreated=Me),r},this.selection2dOverlayName=function(e){return se._getMaterialHash(e,"selection2d")},this.init2dSelection=function(e){var t=this.selection2dOverlayName(e);if(this.overlayScenes[t])return;var n=se.initSelectionTexture(e.getData().maxObjectNumber,e.id);const r=e.getFragmentList(),o=e.getDoNotCut();let s;if(null!=r&&r.viewBounds){const e=r.viewBounds;s=new D.Vector4(e.min.x,e.min.y,e.max.x,e.max.y)}var a=se.create2DMaterial(e,{doNotCut:o,viewportBounds:s},!1,n,(function(){i.invalidate(!1,!0,!1)})),l=se.findMaterial(e,a);this.createOverlayScene(t,l)},this.onLoadComplete=function(e){De=!1,this.signalProgress(100,o.ProgressState.LOADING,e),this.modelVisible(e.id)&&((de&&de.enabled||fe)&&this.sceneUpdated(!1,!0),this.invalidate(!!fe,!0,!1)),e.is2d()&&this.init2dSelection(e);var t=e.getGeometryList();t&&t.printStats(),e.hasGeometry()?se.hasTransparentMaterial()&&this.requestSilentRender():p.logger.warn("Loaded model has no geometry."),this.api.dispatchEvent({type:I.GEOMETRY_LOADED_EVENT,model:e})},this.onTextureLoadComplete=function(e){this.api.dispatchEvent({type:I.TEXTURES_LOADED_EVENT,model:e}),this.requestSilentRender()},this.signalProgress=function(e,t,i){_e.percent===e&&_e.state===t&&i&&_e.model&&_e.model.id===i.id||(_e.percent=e,_e.state=t,i&&(_e.model=i),this.api.dispatchEvent(_e))},this.resize=function(e,t,i){G=!0,z=e,H=t,i&&Ke(!0)},this.unloadModel=function(e,t){if(this.api.dispatchEvent({type:I.BEFORE_MODEL_UNLOAD_EVENT,model:e}),this.removeModel(e)||pe.removeHiddenModel(e)){var i,n;if(!t)if(e.dtor(),se.cleanup(e),e.loader)null===(i=(n=e.loader).dtor)||void 0===i||i.call(n),e.loader=null;e.is2d()&&this.overlayScenes[e.id]&&this.removeOverlayScene(this.selection2dOverlayName(e)),_e.model===e&&(_e.model=null),this.api.dispatchEvent({type:I.MODEL_UNLOADED_EVENT,model:e})}},this._reserveLoadingFile=function(){this.loaders||(this.loaders=[]);var e={dtor:function(){}};return this.loaders.push(e),e},this._hasLoadingFile=function(){return this.loaders&&this.loaders.length>0},this._addLoadingFile=function(e,t){if(this.loaders){var i=this.loaders.indexOf(e);i>=0&&(this.loaders[i]=t)}},this._removeLoadingFile=function(e){if(this.loaders){var t=this.loaders.indexOf(e);t>=0&&this.loaders.splice(t,1)}},this.removeModel=function(e){return!!pe.removeModel(e)&&(this.keyFrameAnimator&&(this.keyFrameAnimator.destroy(),this.keyFrameAnimator=null),this.selector.removeModel(e),this.visibilityManager.removeModel(e),this.layers.removeModel(e),Xe&&ae.removeModel(e),e===this.model&&(this.model=null,pe.isEmpty()||(this.model=pe.getModels()[0])),_t(),this.invalidate(!0,!0,!0),this.api.fireEvent({type:I.MODEL_REMOVED_EVENT,model:e}),!0)},this.cancelLoad=function(e){if(this.loaders)for(var t=0;t=0;t--)this.unloadModel(e[t]);this.model=null};var Et=function(){var e,t,n;i.selectionMaterialBase=new D.MeshPhongMaterial({specular:526344,opacity:1,transparent:!1}),i.selectionMaterialTop=new D.MeshPhongMaterial({specular:526344,opacity:.15,transparent:!0}),i.selectionMaterialTop.packedNormals=!0,i.selectionMaterialBase.packedNormals=!0,e="selection",t=i.selectionMaterialBase,n=i.selectionMaterialTop,t.depthWrite=!1,t.depthTest=!0,t.side=D.DoubleSide,n.depthWrite=!1,n.depthTest=!0,n.side=D.DoubleSide,se.addInstancingSupport(t),se.addInstancingSupport(n),i.createOverlayScene(e,t,n),i.highlightMaterial=new D.MeshPhongMaterial({specular:526344,opacity:1,transparent:!1}),i.highlightMaterial.packedNormals=!0,i.highlightMaterial.disableTheming=!0,se.addInstancingSupport(i.highlightMaterial),se.addMaterial("__highlightMaterial__",i.highlightMaterial,!0)};this.createOverlayScene=function(e,t,i,n){let r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],s=arguments.length>6&&void 0!==arguments[6]&&arguments[6];t&&se.addOverrideMaterial(e+"_pre",t),i&&se.addOverrideMaterial(e+"_post",i);var a=new D.Scene;return a.__lights=this.scene.__lights,this.overlayScenes[e]={scene:a,camera:n,materialName:e,materialPre:t,materialPost:i,needIdTarget:r,needSeparateDepth:o,hiddenFromMainRender:s}},this.removeOverlayScene=function(e){if(this.overlayScenes[e]){var t=this.overlayScenes[e];t.materialPre&&se.removeMaterial(t.materialName+"_pre"),t.materialPost&&se.removeMaterial(t.materialName+"_post"),delete this.overlayScenes[e],this.invalidate(!1,!1,!0)}},this.addOverlay=function(e,t){this.overlayScenes[e]&&t&&(this.overlayScenes[e].scene.add(t),this.invalidate(!1,!1,!0))},this.addMultipleOverlays=function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&this.addOverlay(e,t[i])},this.removeOverlay=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.overlayScenes[e]&&t&&(this.overlayScenes[e].scene.remove(t),i&&t.geometry&&t.geometry.dispose(),this.invalidate(!1,!1,!0))},this.removeMultipleOverlays=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&this.removeOverlay(e,t[n],i)},this.clearOverlay=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.overlayScenes[e]){var i,n,r=this.overlayScenes[e].scene;for(n=r.children.length-1;n>=0;--n)(i=r.children[n])&&(r.remove(i),t&&i.geometry&&i.geometry.dispose());this.invalidate(!1,!1,!0)}},this.setClearColors=function(e,t,i,r,o,s){this.clearColorTop=new D.Vector3(e/255,t/255,i/255),this.clearColorBottom=new D.Vector3(r/255,o/255,s/255),this.updateClearColors(),fe&&fe.setClearColors(this.clearColorTop,this.clearColorBottom,(0,n.isMobileDevice)()),ye=!0,this.fireRenderOptionChanged()},this.setClearAlpha=function(e){le.setClearAlpha(e)};var St=new D.Box3;function At(e,t,i){t.updateMatrixWorld(!0),t.traverse((function(t){var n=t.geometry;const r=t.model&&"number"==typeof t.fragId;if(!r||n.boundingBox)void 0!==n&&t.visible&&(n.boundingBox||n.computeBoundingBox(),St.copy(n.boundingBox),St.applyMatrix4(t.matrixWorld),i&&!i(St)||e.union(St));else{const n=r&&t.model.getFragmentList();n&&(n.getWorldBounds(t.fragId,St),i&&!i(St)||e.union(St))}}))}var wt,Tt=new D.Box3;this.getVisibleBounds=function(e,t,n,r){var o=new D.Box3;return pe.isEmpty()||(At(o,this.scene,n),o=pe.getVisibleBounds(e,n,r).union(o),t&&(o=function(e){Tt.makeEmpty();var t=i.overlayScenes;for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&At(Tt,t[n].scene,e);return At(Tt,i.scene,e),At(Tt,i.sceneAfter,e),Tt}(n).union(o))),o},this.getFitBounds=function(e){var t;return e||null===this.selector||(t=this.selector.getSelectionBounds()),t&&!t.isEmpty()||(t=this.getVisibleBounds()).isEmpty()&&this.model.is2d()&&(t=this.model.getBoundingBox()),t},this.getRenderProxy=function(e,t){var i;return null===(i=e.getFragmentList())||void 0===i?void 0:i.getVizmesh(t)},this.getLayersRoot=function(){return this.layers.getRoot()},this.getFragmentProxy=function(e,t){return new S.FragmentPointer(e.getFragmentList(),t)},this.getRenderProxyCount=function(e){return e.getFragmentList().getCount()},this.getRenderProxyDbIds=function(e,t){return e.getFragmentList().getDbIds(t)},this.isWholeModelVisible=function(){return!pe||pe.areAllVisible()},this.isNodeVisible=function(e,t){return this.visibilityManager.isNodeVisible(t,e)},this.highlightObjectNode=function(e,t,i,n){t=e.reverseMapDbIdFor2D(t),e.is2d()&&(se.highlightObject2D(t,i,e.id),this.invalidate(!1,!1,!0)),this.renderer().setDbIdForEdgeDetection(i&&!n?t:0,i?e.id:0);var r=this,o=e.getData().instanceTree;if(o&&!e.is2d())if(e.useIdBufferSelection){var s=e.getData().fragments.dbId2fragId[t];r.highlightFragment(e,s,i,n)}else o.enumNodeFragments(t,(function(t){r.highlightFragment(e,t,i,n)}),!1);else{let o=t;if(e.is2d()&&e.getData().fragments&&(o=e.getData().fragments.dbId2fragId[t]),Array.isArray(o))for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:{};const i=Object.keys(t);for(let e of i)Object.prototype.hasOwnProperty.call(Te,e)||p.logger.warn(`Property "${e}" is not part of Explode options.`);const n=(()=>{for(let e of i)if(Object.prototype.hasOwnProperty.call(Te,e)&&t[e]!=Te[e])return!1;return!0})();return((e=Number(e))!=we||!n)&&(we=e,i.filter((e=>Object.prototype.hasOwnProperty.call(Te,e))).forEach((e=>Te[e]=t[e])),this.refreshExplode(),this.api.dispatchEvent({type:I.EXPLODE_CHANGE_EVENT,scale:e,options:t}),!0)},this.refreshExplode=function(){pe.explode(we,Te),this.sceneUpdated(!0)},this.getExplodeScale=function(){return we},this.getExplodeOptions=function(){return{...Te}},this.lockExplode=function(e,t,i){const n=(i=i||this.model).getData().instanceTree;if(!n)return!1;const r=function(e,i){return n.enumNodeChildren(i,(function(i){e=n.lockNodeExplode(i,t)||e}),!0),e};let o;return o=Array.isArray(e)?e.reduce(r,!1):r(!1,e),o&&we>0&&(pe.explode(we),this.sceneUpdated(!0)),o},this.isExplodeLocked=function(e,t){const i=(t=t||this.model).getData().instanceTree;return i&&i.isNodeExplodeLocked(e)},this.setGhostingBrightness=function(e){var t=new D.Color(e?1052688:16777215);function i(e){e.color=t}i(this.fadeMaterial),this.fadeMaterial.variants&&this.fadeMaterial.variants.forEach(i),Xe&&ae.getMainPass().setGhostingBrightness(e)},this.loadCubeMapFromColors=function(e,t){var i=(0,A.CreateCubeMapFromColors)(e,t);return i.isBgColor=!0,se.setReflectionMap(i),i},this.loadCubeMap=function(e,t){this._reflectionMapPath=e;return m.TextureLoader.loadCubeMap(e,t,(function(t){e===i._reflectionMapPath&&se&&(se.setReflectionMap(t),Xe&&ae.getIBL().setReflectionMap(t),i.invalidate(!0),t?u.LightPresets[te].useIrradianceAsBackground||le.setCubeMap(t):i.loadCubeMapFromColors(i.clearColorTop,i.clearColorBottom))}))},this.loadIrradianceMap=function(e,t){this._irradianceMapPath=e;return m.TextureLoader.loadCubeMap(e,t,(function(t){e===i._irradianceMapPath&&se&&(se.setIrradianceMap(t),Xe&&ae.getIBL().setIrradianceMap(t),i.invalidate(!0),u.LightPresets[te].useIrradianceAsBackground&&le.setCubeMap(t))}))},this.setCurrentLightPreset=function(e){te=e},this.setLightPreset=function(e,t,i){var r;if((0,n.isNodeJS)()&&(e=0),this.initLights(),te===e&&!t)return void(i&&i());if((e<0||u.LightPresets.length<=e)&&(e=u.DefaultLightPreset),te=e,pe.isEmpty())return ie=te,void(re=i);var o=u.LightPresets[e],s=o.bgColorGradient;if(s||(s=u.BackgroundPresets.Custom),this.setClearColors(s[0],s[1],s[2],s[3],s[4],s[5]),void 0!==o.useIrradianceAsBackground&&(this.api.prefs.hasTag("envMapBackground","ignore-producer")?p.logger.debug("setLightPreset(): envMapBackground is locked. No changes."):(this.api.prefs.tag("no-storage","envMapBackground"),this.api.setEnvMapBackground(o.useIrradianceAsBackground))),o.path){var a="res/environments/"+o.path,l=(0,w.getResourceUrl)(a+"_mipdrop."+(o.type||"")+".dds"),c=(0,w.getResourceUrl)(a+"_irr."+(o.type||"")+".dds");this.loadIrradianceMap(c,o.E_bias),this.loadCubeMap(l,o.E_bias),se.setEnvExposure(-o.E_bias),Xe&&ae.getIBL().setEnvExposure(-o.E_bias),le.setEnvExposure(-o.E_bias),this.setTonemapExposureBias(o.E_bias),this.setTonemapMethod(o.tonemap),this.setGhostingBrightness(o.darkerFade)}else{var h=this.loadCubeMapFromColors(this.clearColorTop,this.clearColorBottom);le.setCubeMap(h),se.setIrradianceMap(null),Xe&&ae.getIBL().setIrradianceMap(),se.setEnvExposure(-o.E_bias||0),Xe&&ae.getIBL().setEnvExposure(-o.E_bias),le.setEnvExposure(-o.E_bias||0),this.setTonemapExposureBias(o.E_bias||0),this.setTonemapMethod(o.tonemap||0),this.setGhostingBrightness(o.darkerFade),le.toggleEnvMapBackground(Le),this.invalidate(!0)}const d=null===(r=pe)||void 0===r?void 0:r.getModels().filter((e=>{var t;const i=null==e?void 0:e.getDocumentNode(),n=(null==i?void 0:i.getInputFileType())||(null==i||null===(t=i.getRootNode())||void 0===t||null===(t=t.data)||void 0===t?void 0:t.name)||"";return["dwfx","dwf"].includes(n.toLowerCase())}));d.length>0&&d.forEach((e=>{se.forEachInModel(e,!1,(e=>{e.emissiveOrig||(e.emissiveOrig=e.emissive),e.emissive=e.emissiveOrig.clone().multiplyScalar(Math.pow(2,-o.E_bias))}))}));var f=T.SAOShader.uniforms.radius.value,m=T.SAOShader.uniforms.intensity.value,g=void 0;Xe&&(f=8,m=1,g=.25),Object.prototype.hasOwnProperty.call(o,"saoRadius")&&(f=o.saoRadius),Object.prototype.hasOwnProperty.call(o,"saoIntensity")&&(m=o.saoIntensity),Xe?le.setAOOptions(f,m,g):le.setAOOptions(f,m);var v=1;null!==o.lightMultiplier&&void 0!==o.lightMultiplier&&(v=o.lightMultiplier),ge.copy(me),o.lightDirection&&ge.fromArray(o.lightDirection).negate(),he&&Ze(),this.dir_light1&&(this.dir_light1.intensity=v,o.lightDirection?this.dir_light1.position.set(-o.lightDirection[0],-o.lightDirection[1],-o.lightDirection[2]):this.dir_light1.position.copy(ve)),se.setEnvRotation(o.rotation||0),le.setEnvRotation(o.rotation||0),fe&&fe.setEnvRotation(o.rotation||0),this.toggleLights(0!==v),this.invalidate(!0,!1,!0),this.fireRenderOptionChanged(),i&&i()},this.setLightPresetFromFile=function(e){if(!e||e.is2d())return!1;let t;var i=e.getMetadata("renderEnvironmentGroundReflection","value",null);t=this.api.prefs.hasTag(B.Prefs3D.GROUND_REFLECTION,"ignore-producer"),null===i||t||(this.api.prefs.tag("no-storage",B.Prefs3D.GROUND_REFLECTION),this.api.setGroundReflection(i));var r=e.getMetadata("renderEnvironmentGroundShadow","value",null);t=this.api.prefs.hasTag(B.Prefs3D.GROUND_SHADOW,"ignore-producer"),null===r||t||(this.api.prefs.tag("no-storage",B.Prefs3D.GROUND_SHADOW),this.api.setGroundShadow(r));var o=e.getMetadata("renderEnvironmentAmbientShadows","value",null);t=this.api.prefs.hasTag(B.Prefs3D.AMBIENT_SHADOWS,"ignore-producer"),null===o||t||(this.api.prefs.tag("no-storage",B.Prefs3D.AMBIENT_SHADOWS),this.api.setQualityLevel(o,le.getAntialiasing()));var s=e.getMetadata("renderEnvironmentDisplayLines","value",null);t=this.api.prefs.hasTag(B.Prefs3D.LINE_RENDERING,"ignore-producer"),null===s||t||(this.api.prefs.tag("no-storage",B.Prefs3D.LINE_RENDERING),this.api.hideLines(!s));var a=e.getMetadata("renderEnvironmentDisplayPoints","value",null);t=this.api.prefs.hasTag(B.Prefs.POINT_RENDERING,"ignore-producer"),null===a||t||(this.api.prefs.tag("no-storage",B.Prefs.POINT_RENDERING),this.api.hidePoints(!a));var l=e.getMetadata("renderEnvironmentDisplayEdges","value",null);t=this.api.prefs.hasTag(B.Prefs3D.EDGE_RENDERING,"ignore-producer"),null===l||t||(this.api.prefs.tag("no-storage",B.Prefs3D.EDGE_RENDERING),this.api.setDisplayEdges(!(0,n.isMobileDevice)()&&!!l));var c=e.getMetadata("renderEnvironmentStyle","value",null),h=u.LightPresets.filter((function(e){return e.name===c}))[0];if(t=this.api.prefs.hasTag(B.Prefs3D.LIGHT_PRESET,"ignore-producer"),h&&!t){this.api.prefs.tag("no-storage",B.Prefs3D.LIGHT_PRESET);var d=Q;d||(d=Q={},u.LightPresets.push(d)),(0,u.copyLightPreset)(h,d),d.name="Custom Model defined";var f=e.getMetadata("renderEnvironmentExposureBias","value",null),p=e.getMetadata("renderEnvironmentExposureBase","value",null);null!==f&&null!==p&&(d.E_bias=f+p);var m=e.getMetadata("renderEnvironmentBackgroundColor","value",null);t=this.api.prefs.hasTag(B.Prefs.BACKGROUND_COLOR_PRESET,"ignore-producer"),m&&!t&&(d.bgColorGradient=[255*m[0],255*m[1],255*m[2],255*m[0],255*m[1],255*m[2]]);var g=e.getMetadata("renderEnvironmentRotation","value",null);null!==g&&(d.rotation=g);var v=u.LightPresets.indexOf(d);this.setLightPreset(v,!0)}var y=e.getMetadata("renderEnvironmentBackgroundFromEnvironment","value",null);return t=this.api.prefs.hasTag(B.Prefs3D.ENV_MAP_BACKGROUND,"ignore-producer"),null===y||t||(this.api.prefs.tag("no-storage",B.Prefs3D.ENV_MAP_BACKGROUND),this.api.setEnvMapBackground(y)),h},this.setLightPresetForAec=function(){for(var e=(0,n.getGlobal)().DefaultLightPresetAec||"Boardwalk",t=-1,i=0;i=0&&(this.api.prefs.hasTag("lightPreset","ignore-producer")?p.logger.debug("setLightPresetForAec(): lightPreset is locked. No changes."):(this.api.prefs.tag("no-storage","lightPreset"),this.setLightPreset(t,!0,function(){this.api.prefs.tag("ignore-producer","envMapBackground")}.bind(this)),this.saveLightPreset())),this.api.prefs.hasTag("edgeRendering","ignore-producer")?p.logger.debug("setLightPresetForAec(): edgeRendering is locked. No changes."):(this.api.prefs.tag("no-storage","edgeRendering"),this.api.setDisplayEdges(!(0,n.isMobileDevice)())),!0},this.setAOHeuristics=function(e){var t=e.getUnitScale(),i=e.getMetadata("renderEnvironmentAmbientShadows","radius",void 0),n=e.getMetadata("renderEnvironmentAmbientShadows","intensity",void 0),r=e.getMetadata("renderEnvironmentAmbientShadows","opacity",void 0);if(void 0!==i||void 0!==n||void 0!==r)le.setAOOptions(i/t,n,r);else if(e.isAEC()){t>.3?le.setAOOptions(4/t,1,.625):le.setAOOptions(.25/t,1,.625)}else{var o=e.getData().bbox.getSize(new D.Vector3).length();le.setAOOptions(Math.min(10,.05*o))}},this.setTonemapMethod=function(e){e!=le.getToneMapMethod()&&(le.setTonemapMethod(e),se.setTonemapMethod(e),Xe&&ae.getIBL().setTonemapMethod(e),this.fireRenderOptionChanged(),this.invalidate(!0))},this.setTonemapExposureBias=function(e){e!=le.getExposureBias()&&(le.setTonemapExposureBias(e),Xe&&ae.getIBL().setExposureBias(e),se.setTonemapExposureBias(e),this.fireRenderOptionChanged(),this.invalidate(!0))},this.setRenderingPrefsFor2D=function(e){if(!(0,n.isNodeJS)()){var t=!e&&!!this.api.prefs.get("envMapBackground");this.toggleEnvMapBackground(t)}},this.dtor=function(){var e;this.stop(),this.api.removeEventListener(I.MODEL_ROOT_LOADED_EVENT,Ve),this.api.removeEventListener(I.MODEL_ROOT_LOADED_EVENT,Ge),this.api.removeEventListener(I.LOADER_REPAINT_REQUEST_EVENT,ze),this.unloadCurrentModel(),this.controls=null,this.canvas=null,clearInterval(this.interval),this.loader=null,this.selector.dtor(),this.selector=null,this.model=null,this.layers=null,this.visibilityManager=null,Fe&&(Fe.removeViewer(this.api),Fe=null),pe=null,null===(e=le)||void 0===e||e.cleanup(),le=null,se.refCount--,0===se.refCount&&se.dtor(),se=null,ae&&(ae.refCount--,0===ae.refCount&&(ae.domElement=null,ae.context=null),ae.removeEventListener(W.Events.WEBGL_CONTEXT_LOST,this.onWebGLcontextLost),ae.removeEventListener(W.Events.WEBGL_CONTEXT_RESTORED,this.onWebGLcontextRestored),ae=null)},this.hideLines=function(e){pe&&!pe.isEmpty()&&(pe.hideLines(e),this.sceneUpdated(!0))},this.hidePoints=function(e){pe&&!pe.isEmpty()&&(pe.hidePoints(e),this.sceneUpdated(!0))},this.setDisplayEdges=function(e){le.toggleEdges(e);var t=e;e||(t=!(!this.model||!this.model.getData().hasLines)),se.togglePolygonOffset(t),le.setDepthMaterialOffset(se.getPolygonOffsetOn(),se.getPolygonOffsetFactor(),se.getPolygonOffsetUnits()),this.invalidate(!0)},this.setDoubleSided=function(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if((t=t||this.model).is2d())return;t.getData()&&(this.matman().setDoubleSided(e,t),i&&this.sceneUpdated())},this.getAllCutPlanes=function(){var e=void 0;for(var t in He){var i=He[t];i&&i.length&&(e=e?t===je?i.concat(e):e.concat(i):i)}return e},this.setCutplanesHideInterior=function(e){We=Boolean(e)},this.cutplanesHideInteriorEnabled=function(){return We},this.updateCutPlanes=function(){var e=this.getAllCutPlanes();this.setCutPlanes(e)},this.setCutPlaneSet=function(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(He[e]=t?t.slice():void 0,i)this.updateCutPlanes();else{var n=this.getAllCutPlanes();this.setCutPlanesInScene(n)}},this.setCutPlaneSetFor2DRendering=function(e){je=e,this.updateCutPlanes()},this.getCutPlaneSet=function(e){return He[e]||[]},this.getCutPlaneSets=function(){var e=[];for(var t in He){var i=He[t];i&&i.length&&e.push(t)}return e},this.getCutPlanes=function(){return se.getCutPlanes()},this.setCutPlanesInScene=function(e){le.toggleTwoSided(se.setCutPlanes(e,We?1:0)),Xe&&le.setCutPlanes(e),this.sceneUpdated()},this.setCutPlanes=function(e){this.setCutPlanesInScene(e),this.api.dispatchEvent({type:I.CUTPLANES_CHANGE_EVENT,planes:e})},this.fireRenderOptionChanged=function(){se.toggleMRTSetting(le.mrtFlags()),this.api.dispatchEvent({type:I.RENDER_OPTION_CHANGED_EVENT})},this.viewportToRay=function(e,t){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.camera).viewportToRay(e,t)},this.rayIntersect=function(e,t,i,n,r){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(o.ignore2dModelsOn3d){const e=this.get3DModels().map((e=>e.id));n=n?n.filter((t=>e.includes(t))):e}var s=pe.rayIntersect(e.origin,e.direction,t,i,n,r,(e=>{const t=(new D.Vector3).copy(e);t.project(this.camera);const i=[];return le.idAtPixel(t.x,t.y,i),i}),o),a=[this.scene,this.sceneAfter];const l=new D.Vector3;for(let t=0;tt=>{if(!(t&&t.object&&t.object.isLine))return!0;const n=1/i.camera.pixelsPerUnitAtDistance(t.distance),r=e*n;return t.distanceToRay0?[o]:null,void 0,void 0,s)}return i},this.snappingHitTest=function(e,t,i){return this.snappingHitTestViewport(this.clientToViewport(e,t),i)},this.clearHighlight=function(){le.rolloverObjectId(-1),this.invalidate(!1,!1,!0)},this.rollOverIdChanged=function(){this.api.fireEvent({type:I.OBJECT_UNDER_MOUSE_CHANGED,dbId:le.getRollOverDbId(),modelId:le.getRollOverModelId()}),this.invalidate(!1,!1,!0)},this.rolloverObjectViewport=function(e){if(!this.model)return;if(this.is2d&&this.model&&(this.model.isLeaflet()||this.model.isPdf(!0)&&this.api.prefs.get(B.Prefs2D.DISABLE_PDF_HIGHLIGHT)))return;const t=[],i=le.idAtPixel(e.x,e.y,t);if(this.selector&&this.selector.isNodeSelectionLocked(i,this.model))return void this.clearHighlight();const n=t[1],r=this.findModel(n);null!=r&&r.isLeaflet()?le.rollOverModelId(n)&&this.rollOverIdChanged():le.rolloverObjectViewport(e.x,e.y)&&this.rollOverIdChanged()},this.rolloverObject=function(e,t){this.selector.highlightPaused||this.selector.highlightDisabled||this.rolloverObjectViewport(this.clientToViewport(e,t))},this.pauseHighlight=function(e){this.selector.highlightPaused=e,e&&this.clearHighlight()},this.disableHighlight=function(e){this.selector.highlightDisabled=e,e&&this.clearHighlight()},this.disableSelection=function(e){this.selector.selectionDisabled=e},this.cancelLeafletScreenshot=function(){i.api.dispatchEvent({type:I.CANCEL_LEAFLET_SCREENSHOT})},this.getScreenShotProgressive=function(e,t,i,n){return r.ScreenShot.getScreenShot(e,t,i,n,this)},this.modelQueue=function(){return pe},this._getRcs=function(){return Ne},this.glrenderer=function(){return ae},this.renderer=function(){return le},this.setGeomCache=function(e){(Fe=e).addViewer(i.api)},this.geomCache=function(){return!Fe&&(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&this.setGeomCache(new f.OtgResourceCache(i.api.config)),Fe},this.shadowMaps=function(){return he},this.worldUp=function(){return U},this.worldUpName=function(){return oe},this.setUserRenderContext=function(e,t){le=e||new a.RenderContext,t||(le.init(ae,this.canvas.clientWidth,this.canvas.clientHeight),le.setClearColors(this.clearColorTop,this.clearColorBottom)),this.invalidate(!0),this.sceneUpdated(!1)},this.setUserGroundShadow=function(e){var t=de;return de=e,t},this.invalidate=function(e,t,i){ye||(ye=e),be||(be=t),xe||(xe=i)},this.isOverlayDirty=function(){return xe},this.clearOverlayDirtyFlag=function(){xe=!1},this.sceneUpdated=function(e,t,i){this.invalidate(!t,!1,!t),pe&&e&&(pe.invalidateVisibleBounds(),this.zoomBoundsChanged=!0),Ee=!0,Ze(),i||this.api.fireEvent({type:I.SCENE_UPDATED_EVENT,objectsMoved:e})},this.requestSilentRender=function(){Se=Ae=!0},this.requestDeferredSilentRender=function(){Se=!0},this.currentLightPreset=function(){return te},this.saveLightPreset=function(){ie=te},this.matman=function(){return se},this.fps=function(){return 1e3/Ce},this.setFPSTargets=function(e,t,i){q=1e3/i,J=1,K=1e3/t,this._updateTargetFrameBudget()},this._updateTargetFrameBudget=function(){var e;Y.USE_HLOD?this.targetFrameBudget=((null===(e=Ne)||void 0===e?void 0:e.frameTimeScalingFactorAvg)??1)*K:Ne.beginFrameAvgK&&Ne.frameBudget>J&&(this.targetFrameBudget*=.75+.25*K/Ne.beginFrameAvg);this.targetFrameBudget=Math.min(Math.max(this.targetFrameBudget,J),q)},this.track=function(e){p.logger.track(e)},this.worldToClient=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.camera;var i=new D.Vector4(e.x,e.y,e.z,1);return i.applyMatrix4(t.matrixWorldInverse),i.applyMatrix4(t.projectionMatrix),i.w>0&&(i.x/=i.w,i.y/=i.w,i.z/=i.w),this.viewportToClient(i.x,i.y)},this.clientToWorld=function(e,t,i,n,r){var o=null;if(this.is2d){var s=this.model,a=null==s?void 0:s.getData(),l=this.intersectGround(e,t);l?(l.z=0,(n||a.hidePaper||a.bbox.containsPoint(l))&&(o={point:l,model:s})):n&&(o={point:this.camera.position.clone(),model:s})}else(o=this.hitTest(e,t,i,void 0,void 0,{ignore2dModelsOn3d:r}))&&(o.point=o.intersectPoint);return o},this.set2dSelectionColor=function(e,t){this.matman().set2dSelectionColor(e,t),this.invalidate(!1,!1,!0)},this.setSelectionColor=function(e,t){t=t||O.SelectionType.MIXED;var i=new D.Color(e);i.multiplyScalar(.5);var n=function(t){t.color.set(e),t.emissive.set(i),t.variants&&t.variants.forEach(n)};switch(t){default:case O.SelectionType.MIXED:n(this.selectionMaterialBase),n(this.selectionMaterialTop),le.setSelectionColor(e),n(this.highlightMaterial),this.invalidate(!0);break;case O.SelectionType.REGULAR:n(this.highlightMaterial),this.invalidate(!0);break;case O.SelectionType.OVERLAYED:n(this.selectionMaterialBase),n(this.selectionMaterialTop),le.setSelectionColor(e),this.invalidate(!1,!1,!0)}},this.updateViewportId=function(e){se.updateViewportId(e),this.invalidate(!0)},this.findModel=function(e,t){let i;if("number"==typeof e)i=t=>t.id==e;else if(e instanceof N.BubbleNode)i=t=>t.getDocumentNode()==e;else{if(!e)return null;i=e}let n=pe.getModels().find(i);return t&&!n&&(n=pe.getHiddenModels().find(i)),n},this.getFrameRate=function(){return this.frameDisplayRate},this.setFrameRate=function(e){this.frameDisplayRate=e<1?1:e},this.setShadowLightDirection=function(e){ge.copy(e),Ze(),this.invalidate(!0,!1,!1),Qe()},this.getShadowLightDirection=function(e){var t=e||new D.Vector3;return t.copy(ge),t},this.toggleShadows=function(e){!!he!=!!e&&(e?he=new y.ShadowMaps(ae):(he.cleanup(se),he=null),Qe(),this.invalidate(!0,!0,!1))},this.showTransparencyWhenMoving=function(e){pe.enableNonResumableFrames=e},this.fitToView=function(e,t){(t=!!t,0===e.length)&&(e=pe.getModels().map((function(e){return{model:e,selection:[]}})));if(0===e.length)return!1;for(var i=0,n=0;n1&&p.logger.warn("fitToView() doesn't support multiple 2D models. Using the first one...");var i=e[0].model,n=e[0].selection,r=new D.Box3,o=new P.BoundsCallback(r);if(n&&0!==n.length)this.computeSelectionBounds(n,i,o);else if(this.api.anyLayerHidden())for(var s=i.getData().fragments,a=this.getVisibleLayerIndices(),l=0;l0){t=!0;break}var n=new D.Box3,r=new D.Box3;if(t)for(var o=0;osetTimeout((()=>function(i){var n=e.getFragmentList();if(!n||n.areAllVisible())return;var r=[];if(!i)return;i.enumNodeChildren(e.getRootId(),(function(e){i.enumNodeFragments(e,(function(e){return n.isFragVisible(e)}),!0)||i.isNodeHidden(e)||i.isNodeOff(e)||r.push(e)}),!0),p.logger.info("Hiding "+r.length+" objects ...");let o=0;if(r.length>0){const i=r.length-1;for(let n=0;n0&&o%10==0&&p.logger.info(o+"%")}p.logger.info("Done hiding objects.")}(i)))))},this.changePaperVisibility=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1;if(e.is3d())return void(null==n||n());const o=e.getFragmentList();if(!o)return void(null==n||n());if(e.paperVisibilityAnim&&(e.paperVisibilityAnim.stop(),e.paperVisibilityAnim=null),!i||!r)return e.changePaperVisibility(t),this.invalidate(!0),void(null==n||n());const s=void 0!==o.dbIdOpacity[-1]?o.dbIdOpacity[-1]:t?0:1,a=t?1:0,l=r;e.paperVisibilityAnim=Autodesk.Viewing.Private.fadeValue(s,a,l,(e=>{e=Autodesk.Viewing.Private.smootherStep(e),o.setObject2DOpacity(-1,e),this.invalidate(!0)}),(()=>{e.paperVisibilityAnim=null,null==n||n()}))},this._signalNoMeshes=function(){pe.isEmpty()&&(this._geometryAvailable=0)},this._signalMeshAvailable=function(){0===this._geometryAvailable&&(this._geometryAvailable=1,this.api.fireEvent({type:I.RENDER_FIRST_PIXEL}))},this.hasModels=function(){return!pe.isEmpty()},this.onLoadingAnimationChanged=function(e){Xe||(ae.setLoadingAnimationDuration(e?this.defaultLoadingAnimationDuration:-1),this.invalidate(!1,!0,!1))},this.isLoadingAnimationEnabled=function(){return this.api.prefs.get(B.Prefs2D.LOADING_ANIMATION)&&(!this.model||this.model.is2d())},this.setMaxModelDistance=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e5;this.maxModelDistance=e},this._applyMaxModelDistanceToNearFar=function(){var e=this.camera;if(e.far<=e.near+this.maxModelDistance)return null;const t=e.near+this.maxModelDistance;const i=this.getVisibleBounds(!0,xe,(function(i){return F.SceneMath.pointToBoxDistance2(e.position,i){"use strict";i.r(t),i.d(t,{ViewerState:()=>s});var n=i(83081),r=i(97005),o=i(12153);function s(e){var t=!0;this.getVisibleModel=function(t){const i=e.getVisibleModels();for(let e=0;e1&&(i[r].seedUrn=s),o.is2d()?(i[r].isolated=this.getVisibleLayers2d(o),i[r].allLayers=this.areAllLayersVisible(o),i[r].hidden=[]):(i[r].isolated=e.getIsolatedNodes(o),i[r].hidden=e.getHiddenNodes(o),i[r].explodeScale=e.getExplodeScale(),i[r].explodeOptions=e.getExplodeOptions())}},this.getState=function(i){var n=e.navigation,r={};r.seedURN=this.getSeedUrn(),this.createObjectSets(r);var o=r.viewport;o||(o=r.viewport={});var s=n.getCamera().isPerspective;o.name="",o.eye=n.getPosition().toArray(),o.target=n.getTarget().toArray(),o.up=n.getCameraUpVector().toArray(),o.worldUpVector=n.getWorldUpVector().toArray(),o.pivotPoint=n.getPivotPoint().toArray(),o.distanceToOrbit=n.getPivotPlaneDistance(),o.aspectRatio=this.getAspectRatio(),o.projection=s?"perspective":"orthographic",o.isOrthographic=!s,r.autocam={sceneUpDirection:e.autocam.sceneUpDirection.clone(),sceneFrontDirection:e.autocam.sceneFrontDirection.clone(),cubeFront:e.autocam.cubeFront.clone()},s?o.fieldOfView=n.getVerticalFov():o.orthographicHeight=this.getOrthographicHeight();var a=r.renderOptions;if(a||(a=r.renderOptions={}),a.environment=this.getEnvironmentName(),a.ambientOcclusion={enabled:e.impl.renderer().getAOEnabled(),radius:e.impl.renderer().getAORadius(),intensity:e.impl.renderer().getAOIntensity()},a.toneMap={method:e.impl.renderer().getToneMapMethod(),exposure:e.impl.renderer().getExposureBias(),lightMultiplier:this.getToneMapIntensity()},a.appearance={ghostHidden:e.impl.showGhosting,ambientShadow:e.prefs.get("ambientShadows"),antiAliasing:e.impl.renderer().settings.antialias,progressiveDisplay:e.prefs.get("progressiveRendering"),swapBlackAndWhite:e.prefs.get("swapBlackAndWhite"),displayLines:e.prefs.get("lineRendering"),displayPoints:e.prefs.get("pointRendering")},!e.impl.is2d)for(var l=r.cutplanes=[],c=e.impl.getCutPlaneSet("__set_view"),h=0;h0){e.setLayerVisible(null,!1);for(var d=0;d0&&(p=this.toIntArray(p),r.push({model:s,ids:p}))}if("explodeScale"in l){var m=parseFloat(l.explodeScale),g=l.explodeOptions;e.explode&&e.explode(m,g)}}}}o.length>0&&e.impl.selector.setAggregateSelection(o),n.length>0&&e.impl.visibilityManager.aggregateIsolate(n,{hideLoadedModels:!1}),r.length>0&&e.impl.visibilityManager.aggregateHide(r)}},this.restoreState=function(i,r,o){if(!i)return n.logger.warn("restoreState has no viewer state to restore from."),!1;if(!e||!e.model)return n.logger.warn("restoreState has no viewer or model to restore."),!1;r&&r!==t&&(i=JSON.parse(JSON.stringify(i)),this.applyFilter(i,r));var s=e.navigation,a=!e.impl.is2d;this.restoreObjectSet(i);const l=i.autocam;if(l){const t=e.autocam;t.sceneUpDirection.copy(l.sceneUpDirection),t.sceneFrontDirection.copy(l.sceneFrontDirection),t.cubeFront.copy(l.cubeFront),t.camera.worldup.copy(l.sceneUpDirection),t.cameraChangedCallback(!0)}var c=i.viewport;if(c){var h=this.getVector3FromArray(c.eye,s.getPosition()),u=this.getVector3FromArray(c.up,s.getCameraUpVector()),d=this.getVector3FromArray(c.target,s.getTarget()),f="fieldOfView"in c?parseFloat(c.fieldOfView):s.getVerticalFov(),p=this.getVector3FromArray(c.worldUpVector,null);if(!p){const t=e.getFirstModel(),i=null==t?void 0:t.getUpVector();p=i?(new THREE.Vector3).fromArray(i):new THREE.Vector3(0,1,0)}var m=this.getVector3FromArray(c.pivotPoint,s.getPivotPoint()),g=s.getCamera().isPerspective;"isOrthographic"in c&&(g=!c.isOrthographic);var v=this.getOrthographicHeight();"orthographicHeight"in c&&(v=Number(c.orthographicHeight));var y={position:h,target:d,up:u,worldup:p,aspect:e.impl.camera.aspect,fov:f,orthoScale:v,isPerspective:g,pivot:m};this.restoreCameraState(y,o)}var b=i.renderOptions;if(b){var x=e.impl.renderer(),_=e.prefs,E=_.get("ambientShadows"),S=_.get("antialiasing"),A=b.ambientOcclusion;if(A){"enabled"in A&&(E=A.enabled);var w="radius"in A?A.radius:null,T="intensity"in A?A.intensity:null;null!==w&&null!==T&&(w===x.getAORadius()&&T===x.getAOIntensity()||(x.setAOOptions(w,T),x.composeFinalFrame()))}if("environment"in b){var M=this.getLightPresetIndex(b.environment);-1!==M&&M!==_.get("lightPreset")&&a&&e.setLightPreset(M)}var C=b.toneMap;if(C){var P=!1,D="exposure"in C?C.exposure:null,L="lightMultiplier"in C?C.lightMultiplier:null;null!==D&&D!==x.getExposureBias()&&(x.setTonemapExposureBias(D),P=!0),null!==L&&e.impl.dir_light1&&L!==this.getToneMapIntensity()&&(e.impl.dir_light1.intensity=Math.pow(2,L),P=!0),P&&e.impl.invalidate(!0)}var I=b.appearance;I&&("antiAliasing"in I&&(S=I.antiAliasing),"progressiveDisplay"in I&&I.progressiveDisplay!==_.get("progressiveRendering")&&e.setProgressiveRendering(I.progressiveDisplay),"swapBlackAndWhite"in I&&I.swapBlackAndWhite!==_.get("swapBlackAndWhite")&&e.setSwapBlackAndWhite(I.swapBlackAndWhite),"ghostHidden"in I&&I.ghostHidden!==_.get("ghosting")&&a&&e.setGhosting(I.ghostHidden),"displayLines"in I&&I.displayLines!==_.get("lineRendering")&&e.hideLines(!I.displayLines),"displayPoints"in I&&I.displayPoints!==_.get("pointRendering")&&e.hidePoints(!I.displayPoints)),a&&E!==_.get("ambientShadows")&&S!==_.get("antialiasing")&&e.setQualityLevel(E,S)}if(Array.isArray(i.cutplanes)&&a){for(var R=[],O=0;O=4&&R.push(new THREE.Vector4(N[0],N[1],N[2],N[3]))}!function(t,i){if(e.getExtension("Autodesk.AEC.LevelsExtension")&&void 0===t.floorGuid){const e=i.length;if(3===e||8===e){const t=i[e-2],n=i[e-1];0===t.x&&0===t.y&&-1===t.z&&0===n.x&&0===n.y&&1===n.z&&i.splice(-2,2)}}}(i,R),e.impl.setCutPlaneSet("__set_view",R)}for(var F in e.loadedExtensions){var U=e.loadedExtensions[F];U.restoreState&&U.restoreState(i,o)}return!0},this.getEnvironmentName=function(){var t=r.LightPresets[e.impl.currentLightPreset()];return t?t.name:"none"},this.restoreCameraState=function(t,i){e.impl.adjustOrthoCamera(t);var n=e.navigation;i?(t.isPerspective?n.toPerspective():n.toOrthographic(),n.setCameraUpVector(t.up),n.setWorldUpVector(t.worldup),n.setView(t.position,t.target),n.setPivotPoint(t.pivot),n.setVerticalFov(t.fov,!1),e.impl.syncCamera(!0)):(e.impl.camera.isPerspective=t.isPerspective,n.setRequestTransitionWithUp(!0,t.position,t.target,t.fov,t.up,t.worldup,t.pivot))},this.areEqual=function(e,t,i){var n,r,o,s;function a(e,t){if(t=t||[],(e=e||[]).length!==t.length)return!1;for(var i=0;i2?(e[0]=parseFloat(e[0]),e[1]=parseFloat(e[1]),e[2]=parseFloat(e[2]),(new THREE.Vector3).fromArray(e)):t},this.getSelectedNodes=function(t){return(t=t||e.model).selector?t.selector.getSelection():[]},this.getVisibleLayers2d=function(t){return t&&t!==e.model?(n.logger.warn("[getVisibleLayers2d] multiple models not yet supported."),[]):e.impl.getVisibleLayerIndices()},this.areAllLayersVisible=function(t){return t&&t!==e.model?(n.logger.warn("[areAllLayersVisible] multiple models not yet supported."),!0):e.impl.layers.allLayersVisible()},this.getAspectRatio=function(){var t=e.navigation.getScreenViewport();return t.width/t.height},this.getOrthographicHeight=function(){var t=e.navigation.getCamera();return t.isPerspective?0:Math.abs(2*t.orthographicCamera.top)},this.getSeedUrn=function(t){var i;return(null===(i=t=t||e.model)||void 0===i?void 0:i.getSeedUrn())||""},this.getToneMapIntensity=function(){var t=0;return e.impl.dir_light1&&(t=0!=e.impl.dir_light1.intensity?Math.log(e.impl.dir_light1.intensity)/Math.log(2):-1e-20),t},this.getLightPresetIndex=function(e){for(var t=0;t{"use strict";i.r(t),i.d(t,{BubbleNode:()=>r});let n=1;class r{static MODEL_NODE={role:"3d",type:"geometry"};static GEOMETRY_SVF_NODE={role:"graphics",mime:"application/autodesk-svf"};static SHEET_NODE={role:"2d",type:"geometry"};static LEAFLET_NODE={role:"leaflet"};static PDF_PAGE_NODE={role:"pdf-page"};static IMAGE_NODE={role:"image"};static GEOMETRY_F2D_NODE={role:"graphics",mime:"application/autodesk-f2d"};static VIEWABLE_NODE={role:"viewable"};static AEC_MODEL_DATA={role:"Autodesk.AEC.ModelData"};static MASTER_VIEW_NODE={name:"08f99ae5-b8be-4f8d-881b-128675723c10"};parent=void 0;id=void 0;data=void 0;isLeaf=!1;children=[];sharedPropertyDbPath=void 0;lodNode=void 0;lmvDocument=void 0;constructor(e,t){this.parent=t,this.id=n++,this.data=e,this.isLeaf="geometry"===e.type&&("3d"===e.role||"2d"===e.role||"lod"===e.role),this.children=new Array;this.#f().forEach((e=>{const t=new r(e,this);this.children.push(t);const i="application/autodesk-db"==(n=e).mime&&n.urn?0===n.urn.indexOf("urn:adsk.objects:os.object")?n.urn.substr(0,n.urn.lastIndexOf("%2F")+3):n.urn.substr(0,n.urn.lastIndexOf("/")+1):null;var n;i&&(this.sharedPropertyDbPath=i),"lod"===e.role&&(this.lodNode=t)})),this.children.length>1&&this.children.sort(((e,t)=>Object.prototype.hasOwnProperty.call(e.data,"order")&&Object.prototype.hasOwnProperty.call(t.data,"order")?e.data.order-t.data.order:0))}#f(){return this.is3DTilesFormat()?[]:Array.isArray(this.data.children)?this.data.children:Array.isArray(this.data.derivatives)?this.data.derivatives:new Array}setDocument(e){this.lmvDocument=e}getDocument(){let e=this;for(;e.parent;)e=e.parent;return e.lmvDocument}isOtg(){return!!this._getOtgManifest()}_getOtgManifest(){if("undefined"!=typeof DISABLE_OTG&&DISABLE_OTG)return null;const e=this.findViewableParent();if(!e)return null;return e.data.otg_manifest}isSVF2(){var e,t=this._getOtgManifest();return Boolean("cacheable"===(null==t||null===(e=t.paths)||void 0===e?void 0:e.pharos_type))}getOtgGraphicsNode(){if(this.isViewPreset())return this.findParentGeom2Dor3D().getOtgGraphicsNode();const e=this._getOtgManifest();return e&&e.views&&e.views[this.guid()]}getPropertyDbManifest(){var e,t=this._getOtgManifest();if(t&&t.pdb_manifest){var i=t.pdb_manifest;e={propertydb:{},isOtg:!0};for(var n=0;n=0;e--){var n;try{i=Autodesk.Viewing.fromUrlSafeBase64(t[e])}catch(e){}if(-1!=(null===(n=i)||void 0===n?void 0:n.indexOf("file:")))break;i=null}return r.parseLineageUrnFromDecodedUrn(i)}static parseLineageUrnFromDecodedUrn(e){if(!e)return null;const t=(e=e.replace("fs.file:vf.","dm.lineage:")).indexOf("?version");return-1===t?e:e.substring(0,t)}isGeomLeaf(){return this.isLeaf}isViewable(){if("viewable"===this.data.role)return!0;return!("svf"!==this.data.outputType)}getLodNode(){return this.lodNode}isGeometry(){return"geometry"===this.data.type}isViewPreset(){return"view"===this.data.type}is2D(){return"2d"===this.data.role}is3D(){return"3d"===this.data.role}is2DGeom(){return this.isGeometry()&&this.is2D()}is3DGeom(){return this.isGeometry()&&this.is3D()}useAsDefault(){return!0===this.data.useAsDefault}getDefaultGeometry(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.is3DTilesFormat())return this;let i=[];if(e){const e=this.search(r.MASTER_VIEW_NODE);e.length&&(i=e[0].search({type:"geometry"}))}0==i.length&&(i=this.search({type:"geometry"})),t&&i.sort((function(e,t){return t.data.size-e.data.size}));for(let e=0;e{if(e.isGeometry()&&(e.is2D()||e.is3D()))return r=e,!0})),r&&t.push(r)}return t}findAllViewables(){if(this.is3DTilesFormat())return this.data.root.children;let e=[];this.isForgeManifest()&&(e=this.search({outputType:"svf"}));const t=this.search({role:"viewable"});return e.concat(t)}getViewableRootPath(e){var t=this.getOtgGraphicsNode();if(t&&t.urn&&!t.error)return this._getOtgManifest().paths.version_root+t.urn;if(!this.isGeomLeaf())return this.urn();if(this.is2D()){if(!e){var i=this.search({role:"leaflet"});if(i&&i.length)return i[0].urn()}const t=this.search(r.PDF_PAGE_NODE);if(null!=t&&t.length)return t[0].urn()}var n=this.is2D()?"application/autodesk-f2d":"application/autodesk-svf",o=this.search({mime:n});return o&&o.length?o[0].urn():null}getNamedViews(){var e=this.search({type:"view"});return e=e.filter((function(e){return!!e.data.name&&!!Array.isArray(e.data.camera)}))}findByGuid(e){var t=null;return this.traverse((function(i){if(i.data.guid===e)return t=i,!0})),t}search(e){const t=[];return this.traverse((function(i){let n=!0;for(let t in e)if(!Object.prototype.hasOwnProperty.call(i.data,t)||i.data[t]!==e[t]){n=!1;break}n&&t.push(i)})),t}traverse(e){if(e(this))return!0;if(this.children)for(let t=0;t0&&e[0].children||[]}getMasterView(e){return this.getMasterViews().find((t=>t.data.phaseNames===e))}get3DModelNodes(){return this.search(r.MODEL_NODE)}getSheetNodes(){return this.search(r.SHEET_NODE)}}},55280:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ObjectAssign:()=>L,disableDocumentTouchSafari:()=>R,enableDocumentTouchSafari:()=>O,exitFullscreen:()=>d,fullscreenElement:()=>p,getAndroidVersion:()=>y,getGlobal:()=>r.getGlobal,getIOSVersion:()=>v,inFullscreen:()=>f,isAndroidDevice:()=>S,isBrowser:()=>a,isChrome:()=>C,isFirefox:()=>M,isFullscreenAvailable:()=>m,isFullscreenEnabled:()=>g,isIE11:()=>c,isIE11Only:()=>h,isIOSDevice:()=>_,isMac:()=>P,isMobileDevice:()=>A,isNodeJS:()=>l,isPhoneFormFactor:()=>w,isSafari:()=>T,isTouchDevice:()=>b,isWindows:()=>D,launchFullscreen:()=>u,touchStartToClick:()=>N});var n,r=i(38685);const o=(0,r.getGlobal)(),s=o&&o.document,a="undefined"!=typeof navigator,l=function(){return!a};let c=a&&!!navigator.userAgent.match(/Edge|Trident\/7\./),h=a&&!!navigator.userAgent.match(/Trident\/7\./);function u(e,t){e.requestFullscreen?e.requestFullscreen(t):e.mozRequestFullScreen?e.mozRequestFullScreen(t):e.webkitRequestFullscreen?e.webkitRequestFullscreen(t):e.msRequestFullscreen&&e.msRequestFullscreen(t)}function d(e){f(e)&&(e.exitFullscreen?e.exitFullscreen():e.mozCancelFullScreen?e.mozCancelFullScreen():e.webkitExitFullscreen?e.webkitExitFullscreen():e.msExitFullscreen&&e.msExitFullscreen())}function f(e){return"webkitIsFullScreen"in e?!!e.webkitIsFullScreen:"fullscreenElement"in e?!!e.fullscreenElement:"mozFullScreenElement"in e?!!e.mozFullScreenElement:"msFullscreenElement"in e?!!e.msFullscreenElement:!!e.querySelector(".viewer-fill-browser")}function p(e){return e.fullscreenElement||e.mozFullScreenElement||e.webkitFullscreenElement||e.msFullscreenElement}function m(e){return e.requestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen||e.msRequestFullscreen}function g(e){return e.fullscreenEnabled||e.webkitFullscreenEnabled||e.mozFullScreenEnabled||e.msFullscreenEnabled}function v(e){var t=(e=e||navigator.userAgent).match(/OS ((\d+)_(\d+)(_(\d+))?) like Mac OS X/);return!t&&_()&&(t=e.match(/\/((\d+)\.(\d+)(\.\d)?) Safari\//)),t?t[1].replace("_","."):""}function y(e){var t=(e=e||navigator.userAgent).match(/Android\s([0-9\.]*)/);return!!t&&t[1]}function b(){return"undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0)}const x=a&&(/ip(ad|hone|od)/.test(navigator.userAgent.toLowerCase())||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1||/^ip(ad|hone|od)$/.test(null===(n=navigator.platform)||void 0===n?void 0:n.toLowerCase()));function _(){return x}const E=a&&-1!==navigator.userAgent.toLowerCase().indexOf("android");function S(){return E}function A(){return!!a&&(_()||S())}function w(){return A()&&(o.matchMedia("(max-width: 750px)").matches||o.matchMedia("(max-height: 750px)").matches)}function T(){if(!a)return!1;var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("safari")&&-1===e.indexOf("chrome")}function M(){return!!a&&-1!==navigator.userAgent.toLowerCase().indexOf("firefox")}function C(){return!!a&&-1!==navigator.userAgent.toLowerCase().indexOf("chrome")}function P(){return!!a&&(-1!==navigator.userAgent.toLowerCase().indexOf("mac os")&&!_())}function D(){if(!a)return!1;var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("win32")||-1!==e.indexOf("windows")}function L(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e}function I(e){var t=o.hasOwnProperty("pageXOffset")?o.pageXOffset:s.documentElement.scrollLeft,i=o.hasOwnProperty("pageYOffset")?o.pageYOffset:s.documentElement.scrollTop,n=void 0===e.pageX?e.changedTouches[0].pageX:e.pageX,r=void 0===e.pageY?e.changedTouches[0].pageY:e.pageY,a=s.elementFromPoint(n-t,r-i);return!a||"CANVAS"!==a.nodeName||("true"!==a.getAttribute("data-viewer-canvas")||(e.preventDefault(),!1))}function R(){A()&&T()&&(s.documentElement.addEventListener("touchstart",I,!0),s.documentElement.addEventListener("touchmove",I,!0),s.documentElement.addEventListener("touchcanceled",I,!0),s.documentElement.addEventListener("touchend",I,!0))}function O(){A()&&T()&&(s.documentElement.removeEventListener("touchstart",I,!0),s.documentElement.removeEventListener("touchmove",I,!0),s.documentElement.removeEventListener("touchcanceled",I,!0),s.documentElement.removeEventListener("touchend",I,!0))}function N(e){e.target.className&&(e.target.className.indexOf("fullscreen")>-1||e.target.className.indexOf("webvr")>-1)||(e.preventDefault(),e.stopPropagation(),e.target.click())}},11653:(e,t,i)=>{"use strict";i.r(t),i.d(t,{EnvironmentConfigurations:()=>j,Initializer:()=>ie,getUpstreamApiData:()=>q,getWebGLHelpLink:()=>v,initializeAuth:()=>J,initializeEnvironmentVariable:()=>X,initializeLogger:()=>ee,initializeResourceRoot:()=>Y,initializeServiceEndPoints:()=>K,refreshCookie:()=>Q,refreshRequestHeader:()=>Z,refreshToken:()=>$,shutdown:()=>ne,token:()=>m});var n=i(8600),r=i(83081),o=i(8412),s=i(55280),a=i(7756),l=i(84045),c=i(16271),h=i(85403),u=i(19948),d=(0,s.getGlobal)();const f=d;var p={accessToken:null,getAccessToken:null,tokenRefreshInterval:null};let m=p,g=null;function v(){return g}var y={local:{RTC:["https://rtc-dev.api.autodesk.com:443","https://lmv.autodesk.com:443"]},dev:{RTC:["https://rtc-dev.api.autodesk.com:443","https://lmv.autodesk.com:443"]},stg:{RTC:["https://rtc-stg.api.autodesk.com:443","https://lmv.autodesk.com:443"]},prod:{RTC:["https://rtc.api.autodesk.com:443","https://lmv.autodesk.com:443"]}},b="",x="";if((0,s.getGlobal)().location){var _=(0,s.getGlobal)().location;x=_.protocol+"//"+_.hostname,b=_.protocol+"//"+_.host}var E={local:"",dev:"https://developer-dev.api.autodesk.com",stg:"https://developer-stg.api.autodesk.com",prod:"https://developer.api.autodesk.com"},S="https://us.otgs-dev.autodesk.com",A="https://us.otgs-stg.autodesk.com",w="https://us.otgs.autodesk.com",T="https://eu.otgs-stg.autodesk.com",M="https://eu.otgs.autodesk.com",C="https://cdn-dev.derivative.autodesk.com",P="https://cdn-dev.derivative.autodesk.com/regions/eu",D="https://cdn-stg.derivative.autodesk.com",L="https://cdn-stg.derivative.autodesk.com/regions/eu",I="https://cdn.derivative.autodesk.com",R="https://cdn.derivative.autodesk.com/regions/eu",O="https://cdn-dev.derivative.autodesk.com",N="https://cdn-stg.derivative.autodesk.com",F="https://cdn.derivative.autodesk.com",U="https://cdn-stg-fips.derivative.autodesk.com",B="https://cdn-fips.derivative.autodesk.com",k="https://api-stg.afg.us.autodesk.com",V="https://api.afg.us.autodesk.com",G="derivativeV2",z="derivativeV2_EU",H="derivativeV2_APAC",W="derivativeV2_Fedramp";let j=Object.freeze({Local:{ROOT:"",LMV:y.local},Development:{ROOT:O,LMV:y.dev,bubbleManifest:!0},Staging:{ROOT:N,LMV:y.stg,bubbleManifest:!0},Production:{ROOT:F,LMV:y.prod,bubbleManifest:!0},AutodeskDevelopment:{ROOT:O,LMV:y.dev},AutodeskStaging:{ROOT:N,LMV:y.stg},AutodeskProduction:{ROOT:F,LMV:y.prod},AutodeskDevelopment2:{ROOT:O,LMV:y.dev,UPSTREAM:E.dev,UPSTREAM_API_DATA:G},AutodeskStaging2:{ROOT:N,LMV:y.stg,UPSTREAM:E.stg,UPSTREAM_API_DATA:G},AutodeskProduction2:{ROOT:F,LMV:y.prod,UPSTREAM:E.prod,UPSTREAM_API_DATA:G},FluentLocal:{ROOT:b,LMV:b},FluentDev:{ROOT:S,LMV:y.dev,UPSTREAM:E.stg,UPSTREAM_API_DATA:G},FluentStaging:{ROOT:A,LMV:y.stg,UPSTREAM:E.stg,UPSTREAM_API_DATA:G},FluentProduction:{ROOT:w,LMV:y.prod,UPSTREAM:E.prod,UPSTREAM_API_DATA:G},FluentStagingEU:{ROOT:T,LMV:y.stg,UPSTREAM:E.stg,UPSTREAM_API_DATA:z},FluentProductionEU:{ROOT:M,LMV:y.prod,UPSTREAM:E.prod,UPSTREAM_API_DATA:z},MD20DevUS:{ROOT:C,LMV:y.dev,UPSTREAM:E.dev,UPSTREAM_API_DATA:G},MD20DevEU:{ROOT:P,LMV:y.dev,UPSTREAM:E.dev,UPSTREAM_API_DATA:z},MD20StgUS:{ROOT:D,LMV:y.stg,UPSTREAM:E.stg,UPSTREAM_API_DATA:G},MD20StgEU:{ROOT:L,LMV:y.stg,UPSTREAM:E.stg,UPSTREAM_API_DATA:z},MD20ProdUS:{ROOT:I,LMV:y.prod,UPSTREAM:E.prod,UPSTREAM_API_DATA:G},MD20ProdEU:{ROOT:R,LMV:y.prod,UPSTREAM:E.prod,UPSTREAM_API_DATA:z},D3SLocalUS:{ROOT:b,LMV:b,UPSTREAM:b,UPSTREAM_API_DATA:G},D3SLocalEU:{ROOT:b,LMV:b,UPSTREAM:b,UPSTREAM_API_DATA:z},D3SLocalAPAC:{ROOT:b,LMV:b,UPSTREAM:b,UPSTREAM_API_DATA:H},Test:{ROOT:`${x}:3000`,LMV:y.dev},FedrampStaging2:{ROOT:U,LMV:y.stg,UPSTREAM:k,UPSTREAM_API_DATA:W},FedrampProduction2:{ROOT:B,LMV:y.prod,UPSTREAM:V,UPSTREAM_API_DATA:W}});function q(e,t){return e.endsWith("EU")?j[e].UPSTREAM_API_DATA:t.endsWith("_EU")?j[e].UPSTREAM_API_DATA+"_EU":t.endsWith("_APAC")?j[e].UPSTREAM_API_DATA+"_APAC":j[e].UPSTREAM_API_DATA}function X(e){var t;if(e&&e.env&&(t=e.env),t||(t=(0,n.getParameterByName)("env")),(0,o.setOfflineResourcePrefix)(e&&e.offlineResourcePrefix||""),(0,o.setOffline)(e&&"true"===e.offline),!t)switch(f.location.hostname){case"developer-dev.api.autodesk.com":t="AutodeskDevelopment";break;case"developer-stg.api.autodesk.com":t="AutodeskStaging";break;case"developer.api.autodesk.com":default:t="AutodeskProduction";break;case"localhost.autodesk.com":case"":case"127.0.0.1":t="Local"}(0,o.setEnv)(t),"undefined"!=typeof window&&r.logger.info("Host name : "+window.location.hostname),r.logger.info("Environment initialized as : "+t)}function Y(e){if(e.lmvResourceRoot)d.LMV_RESOURCE_ROOT=e.lmvResourceRoot;else{var t,i,r=["viewer3D.js","viewer3D.min.js","viewerCE.js","viewerCE.min.js"];e&&Object.prototype.hasOwnProperty.call(e,"libraryName")&&r.push(e.libraryName);var o=!1;for(let e=0;e=0){t=i.substr(0,a),(i.indexOf("&v=",a)>0||i.indexOf("?v=",a)>0)&&(o=!0);break}}if(d.LMV_RESOURCE_ROOT=t||d.LMV_RESOURCE_ROOT,o){var l=!1,c=["dev","stg","prod"];for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:3599;if(i=r,p.tokenRefreshInterval?$(i):$(i,e,e),"number"!=typeof o){const e=new Date(o);o=Boolean(+e)&&e.toISOString()===o?(e-Date.now())/1e3:3599}var s=o-((null==t?void 0:t.tokenExpirationBuffer)||5);s<=0&&(s=o),p.tokenRefreshInterval=setTimeout((function(){t.getAccessToken(n)}),1e3*s)})),"string"==typeof i&&i&&$(i,e)):t&&t.accessToken?$(i=t.accessToken,e):((i=(0,n.getParameterByName)("accessToken"))||r.logger.error("No access token is provided, but authorization requested. This is a problem."),$(i,e))}function ee(e){r.logger.initialize(e);var t=(0,n.getParameterByName)("logLevel");t&&r.logger.setLevel(parseInt(t))}function te(e){e&&"Local"===e.env||o.endpoint.getCdnRedirectUrl()&&l.ViewingService.rawGet(o.endpoint.getCdnRedirectUrl(),null,null,(function(e){e&&e.length&&(o.endpoint.setCdnUrl(e),r.logger.info("CDN_ROOT is: "+e))}),(function(){}),{withCredentials:!1,responseType:"text"})}function ie(e,t){if((0,s.isNodeJS)())return X(e),K(e),ee(e),te(e),void J(t,e);e.webGLHelpLink&&(g=e.webGLHelpLink),X(e);var i=K(e);ee(e),te(e);const n=(0,c.initializeLocalization)(e);(0,s.disableDocumentTouchSafari)(),function(e){const t=!(-1!==["Production","fluent"].indexOf("Production"));(e.optOutTrackingByDefault||t)&&(h.analytics.shouldTrack=!1);const i=e.productId?e.productId:"Local"===(0,o.getEnv)()?"Local":"NOT_SET";h.analytics.superProps={productId:i,lmvBuildType:d.LMV_BUILD_TYPE,lmvViewerVersion:d.LMV_VIEWER_VERSION}}(e),(0,a.initWorkerScript)();const r=u.FeatureFlags._initialize();var l=function(e){return new Promise((t=>{J(t,e)}))}(e);return Promise.all([i,l,r,n]).then(t)}function ne(){r.logger.shutdown(),Autodesk.Viewing.Private.shutdownPropWorker()}},83293:(e,t,i)=>{"use strict";i.d(t,{z:()=>u});var n=i(42759),r=new ArrayBuffer(8),o=new Uint8Array(r),s=new Uint16Array(r),a=new Int32Array(r),l=new Uint32Array(r),c=new Float32Array(r),h=new Float64Array(r);function u(e){this.buffer=e,this.offset=0,this.byteLength=e.length}u.prototype.seek=function(e){this.offset=e},u.prototype.getBytes=function(e){var t=new Uint8Array(this.buffer.buffer,this.offset,e);return this.offset+=e,t},u.prototype.getVarints=function(){var e,t=0,i=0;do{t|=(127&(e=this.buffer[this.offset++]))<32767&&(e|=4294901760),e},u.prototype.getInt32=function(){var e=this.buffer,t=o,i=this.offset;return t[0]=e[i],t[1]=e[i+1],t[2]=e[i+2],t[3]=e[i+3],this.offset+=4,a[0]},u.prototype.getUint32=function(){var e=this.buffer,t=o,i=this.offset;return t[0]=e[i],t[1]=e[i+1],t[2]=e[i+2],t[3]=e[i+3],this.offset+=4,l[0]},u.prototype.getFloat32=function(){var e=this.buffer,t=o,i=this.offset;return t[0]=e[i],t[1]=e[i+1],t[2]=e[i+2],t[3]=e[i+3],this.offset+=4,c[0]},u.prototype.getIndicesArray=function(e,t,i){for(var n=this.buffer,r=new Uint8Array(e,t,2*i),o=this.offset,s=0,a=2*i;s{"use strict";i.r(t),i.d(t,{PropertyDatabase:()=>s});var n=i(42759);function r(e,t){let i,n=0,r=e.length-1;for(;n<=r;){if(i=(n+r)/2|0,t===e[i])return i;t-1||r.indexOf(c[5])>-1)))if(e==f){var h=_.getAttrValue(e,l);a=!0,s.name=h}else{var d=_.attributeHidden(e);if(n&&d)return;var m=_._getObjectProperty(e,l);s.properties.push(m)}}else{var g=_.getObjectProperties(_.getAttrValue(e,l),i,!0,r,o);g&&g.properties&&(u=g)}})),u){var d={},m=s.properties;for(let e=0;e0?e:t},this.nodeHasChild=function(e){let t=!1;return this.enumObjectProperties(e,(function(e){if(e===u)return t=!0,!0})),t},this.getNodeNameAndChildren=function(e,t){var i,n,r=e.dbId;if(this.enumObjectProperties(r,(function(r,o){var s;if(r===d);else if(r!=u||t)r===f?e.name=_.getAttrValue(r,o):r===v?e.flags=_.getAttrValue(r,o,!0):r===p&&(n=o);else if((s=_.getAttrValue(r,o,!0))!==e.dbId){var a={dbId:s,parent:e.dbId};i?i.push(a):i=[a]}})),(!e.name||!e.flags)&&n){const t=_.getAttrValue(p,n,!0);let i=A[t];i||(A[t]=i={dbId:t,name:null,flags:null},_.getNodeNameAndChildren(i,!0)),i.name&&!e.name&&(e.name=i.name),"number"!=typeof e.flags&&"number"==typeof i.flags&&(e.flags=i.flags)}return i},this.buildDbIdToFragMap=M;this.buildObjectTree=function(e,t,i,n){var r;t&&(r=M(t)),b={},x=0;var o=this.buildObjectTreeRec(e,0,r,0,i,n);return x>0&&console.warn("Property database integrity not guaranteed ("+x+")."),b=null,A={},o},this.buildObjectTreeRec=function(e,t,i,n,r,o){if(b[e])return x++,0;b[e]=t||e,n>r[0]&&(r[0]=n);var s,a={dbId:e},l=this.getNodeNameAndChildren(a),c=[];if(l)for(var h=0;h1&&n.push(t[i]);return n},this.bruteForceSearch=function(e,i,n){const o=this.getSearchTerms(e);if(0===o.length)return[];var s=[];const a=null==n?void 0:n.searchHidden,c=null==n?void 0:n.includeInherited,h={};for(let e=0;e{const i=new Set(e);for(let n=0;n7?i[7]:0}},this.enumAttributes=function(e){for(var i=1;i=1;for(let e=0;eg,E=void 0;void 0===g||g>y?((E=l._getObjectProperty(y,b)).displayValueB=E.displayValue,E.displayValue=void 0,i++):x?((E=a._getObjectProperty(g,v)).displayValueB=void 0,t++):((E=a._getObjectProperty(g,v)).displayValueB=_.getAttrValue(y,b),t++,i++),f||(f=[]),f.push(E)}else t++,i++}r&&(n.changedIds.push(e),o&&n.propChanges.push(f))}},p=-1,m=function(e,t){var n=Math.floor(100*e/t);n!=p&&(i&&i(n),p=n)};if(r)for(var g=0;g{"use strict";i.d(t,{hA:()=>a,jQ:()=>n,mH:()=>r,qz:()=>o,vl:()=>s});var n={Unknown:0,Boolean:1,Integer:2,Double:3,Float:4,BLOB:10,DbKey:11,String:20,LocalizableString:21,DateTime:22,GeoLocation:23,Position:24},r={afHidden:1,afDontIndex:2,afDirectStorage:4,afReadOnly:8},o={Dimensions:["Perimeter","Volume","Area","Length","Width","Height"]},s={Item:["Source File"]};const a=e=>[n.Integer,n.Double,n.Float].includes(e)},42759:(e,t,i)=>{"use strict";function n(e,t,i){var n,r,o,s,a,l;for(n="",o=i,r=0;r>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(s);break;case 12:case 13:a=e[t+r++],n+=String.fromCharCode((31&s)<<6|63&a);break;case 14:a=e[t+r++],l=e[t+r++],n+=String.fromCharCode((15&s)<<12|(63&a)<<6|63&l)}return n}function r(e,t,i){var n,r,o,s=i||0;if(r=e.length,t)for(n=0;n=1&&o<=127?t[s++]=o:o>2047?(t[s++]=224|o>>12&15,t[s++]=128|o>>6&63,t[s++]=128|63&o):(t[s++]=192|o>>6&31,t[s++]=128|63&o);else for(n=0;n=1&&o<=127?s++:s+=o>2047?3:2;return s-(i||0)}i.d(t,{$d:()=>c,GB:()=>u,Pd:()=>d,TN:()=>l,WC:()=>r,_f:()=>h,jI:()=>n,xH:()=>a});var o=!0,s=1048576;function a(e,t,i){if(void 0===t&&(t=0),void 0===i&&(i=e.length),o)return i>s?function(e,t,i){var n,r,o,s,a,l,c,h;for(n="",a=[],o=i,l=0,r=0;r>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:a.push(String.fromCharCode(s));break;case 12:case 13:c=e[t+r++],a.push(String.fromCharCode((31&s)<<6|63&c));break;case 14:c=e[t+r++],h=e[t+r++],a.push(String.fromCharCode((15&s)<<12|(63&c)<<6|63&h))}(++l>=32768||r>=o)&&(n+=a.join(""),a.length=0,l=0)}return n}(e,t,i):n(e,t,i);for(var r="",a=t,l=t+i;a=48&&r<=57&&(i=10*i+(r-48)),n++}return i}function u(e,t){for(var i=0,n=0,r=e.length;n=48&&c<=57?(l=10*l+(c-48),a=!0):44==c||93==c?a&&(o[i++]=l,a=!1,l=0):(a=!1,l=0),n++}return o}function d(e){for(var t=0,i=e.length-1,n=0;n{"use strict";i.r(t),i.d(t,{VBB_MITER_SEGMENT_CP:()=>a,VBB_MITER_SEGMENT_LIMIT:()=>o,VBB_MITER_SEGMENT_SCALE_FACTOR:()=>s,VertexBufferBuilder:()=>l});var n=2*Math.PI,r=[0,1,3,0,3,2];const o=6,s=1023,a=65536;function l(e,t,i,n){var r=t||65536;this.FULL_COUNT=0|(i||32767),this.useInstancing=e,this.useCompactBuffers=n,this.stride=10,this.allocVcount=4*(this.useInstancing?r/4:r),this.vb=new ArrayBuffer(this.stride*this.allocVcount),this.vbf=new Float32Array(this.vb),this.vbi=new Int32Array(this.vb),this.ib=this.useInstancing?null:new Uint16Array(r),this.minLineWidth=Number.MAX_VALUE,this.reset(0)}l.FORCE_BUTT_CAPS_FOR_TESTING=!1,l.prototype.reset=function(e){this.vcount=e,this.icount=0,this.minx=this.miny=1/0,this.maxx=this.maxy=-1/0,this.dbIds={},this.lastDbId=null,this.colors={},this.numEllipticals=0,this.numCirculars=0,this.numTriangleGeoms=0,this.numMiterLines=0,this.hasLineStyles=!1,this.changeTracking={},this.stride=10},l.prototype.expandStride=function(){var e=this.stride;if(!(e>=12)){for(var t=this.stride+2,i=new ArrayBuffer(t*this.allocVcount),n=new Uint8Array(this.vb),r=new Uint8Array(i),o=0,s=this.vcount;othis.maxx&&(this.maxx=e),tthis.maxy&&(this.maxy=t)},l.prototype.addToBoundsWithLineWidth=function(e,t,i,n,r){if(r<0)return this.addToBounds(e,t),void this.addToBounds(i,n);const o=[Math.min(e,i)-.5*r,Math.max(e,i)+.5*r],s=[Math.min(t,n)-.5*r,Math.max(t,n)+.5*r];this.addToBounds(o[0],s[0]),this.addToBounds(o[1],s[1])};var c=new Int32Array(1);function h(e){return c[0]=e,c[0]}l.prototype.trackChanges=function(e,t,i,n,r,o){if(i!==this.lastDbId&&(this.dbIds[h(i)]=1,this.lastDbId=i),o&&(this.hasLineStyles=!0),this.useCompactBuffers){var s=this.changeTracking;a("geomType",e),a("color",t),a("dbId",i),a("layerId",n),a("viewportId",r),a("linePattern",o),this.colors[h(t)]=1}function a(t,i){void 0===s[t]?s[t]=e:s[t]===i&&(s[t+"Varies"]=!0)}},l.prototype.setCommonVertexAttribs=function(e,t,i,n,r,o,s,a){this.trackChanges(i,n,r,o,s,a),t&=255,i&=255,a&=255,o&=65535,s&=65535,this.vbi[e+8]=t|i<<8|a<<16,this.vbi[e+6]=n,this.vbi[e+7]=r,this.vbi[e+9]=o|s<<16},l.prototype.addVertexTriangleGeom=function(e,t,i,n,r,o,s,a,l,c){for(var h=this.vcount,u=this.vbf,d=this.useInstancing?1:4,f=0;f=0&&s>0&&r>0&&(this.minLineWidth=Math.min(this.minLineWidth,s)),l.FORCE_BUTT_CAPS_FOR_TESTING&&(f=!0,p=!0);var v=1;f&&p?v=8:f?v=9:p&&(v=10);for(var y=this.useInstancing?1:4,b=0;b=0&&l>0&&(this.minLineWidth=Math.min(this.minLineWidth,l));for(var g=this.useInstancing?1:4,v=0;v6&&void 0!==arguments[6]?arguments[6]:0;if(!this.useInstancing){var a=this.vcount,l=this.stride*a,c=this.vbf;return c[l]=e,c[l+1]=t,this.setCommonVertexAttribs(l,0,s,i,n,r,o,0),this.vcount++,a}},l.prototype.addVertexPolytriangle=function(e,t,i,n,r,o){this.useInstancing||(this.addVertex(e,t,i,n,r,o),this.addToBounds(e,t))},l.prototype.addVertexMSDFPolytriangle=function(e,t,i,n,r,o,s,a){this.addVertexTexPolytriangle(e,t,i,n,r,o,s,a,6)},l.prototype.addIndices=function(e,t){if(!this.useInstancing){var i=this.ib,n=this.icount;if(n+e.length>=i.length){var r=new Uint16Array(2*Math.max(e.length,i.length));for(let e=0;e1e-4&&Math.abs(m-n)>1e-4){var g=e+o*Math.cos(i),v=t+s*Math.sin(i);this.addSegment(g,v,g,v,0,l,c,h,d,f);var y=e+o*Math.cos(r),b=t+s*Math.sin(r);this.addSegment(y,b,y,b,0,l,c,h,d,f)}else this.addToBoundsWithLineWidth(e-o,t-s,e+o,t+s,l);const a=33554431;var x=this.addVertexLine(e,t,0,1e-4,0,0,a,h,d,f);this.finalizeQuad(x)}var _=this.addVertexArc(e,t,i,r,o,s,a,l,c,h,d,f);this.finalizeQuad(_)},l.prototype.addTexturedQuad=function(e,t,i,n,r,o,s,a,l){var c=this.addVertexTexQuad(e,t,i,n,r,o,s,a,l);this.finalizeQuad(c);var h=.5*Math.cos(r),u=.5*Math.sin(r),d=Math.abs(i*h)+Math.abs(n*u),f=Math.abs(i*u)+Math.abs(n*h);this.addToBounds(e-d,t-f),this.addToBounds(e+d,t+f)},l.prototype.addVertexImagePolytriangle=function(e,t,i,n,r,o,s,a){return this.addVertexTexPolytriangle(e,t,i,n,r,o,s,a,7)},l.prototype.addVertexTexPolytriangle=function(e,t,i,n,r,o,s,a,l){if(this.useInstancing)return;let c=this.vcount,h=this.vbf;this.addVertex(e,t,r,o,s,a,l),h[c*this.stride+2]=i,h[c*this.stride+3]=n,this.addToBounds(e,t)},l.prototype.isFull=function(e){e=e||3;var t=this.useInstancing?4:1;return this.vcount*t+e>this.FULL_COUNT},l.prototype.makeCompactVertexLayout=function(){var e=Object.keys(this.colors),t=Object.keys(this.dbIds);if(10!==this.stride)return null;var i=e.length+t.length;if(e.length+t.length>65536)return null;var n=new Int32Array(i+1);n[0]=0;var r=1;for(let t=0;t>8&255){case 0:a[_]=f(this.vbf[b]),a[_+1]=p(this.vbf[b+1]);break;case 1:case 8:case 9:case 10:a[_]=f(this.vbf[b]),a[_+1]=p(this.vbf[b+1]),a[_+2]=g(this.vbf[b+2]),a[_+3]=m(this.vbf[b+3]),a[_+4]=v(this.vbf[b+4]);break;case 2:a[_]=f(this.vbf[b]),a[_+1]=p(this.vbf[b+1]),a[_+2]=g(this.vbf[b+2]),a[_+3]=g(this.vbf[b+3]),a[_+4]=v(this.vbf[b+4]),a[_+5]=m(this.vbf[b+5]);break;case 3:case 11:break;case 4:a[_]=f(this.vbf[b]),a[_+1]=p(this.vbf[b+1]),a[_+2]=g(this.vbf[b+2]),a[_+3]=m(this.vbf[b+3]),a[_+4]=m(this.vbf[b+4]);break;case 5:a[_]=f(this.vbf[b]),a[_+1]=p(this.vbf[b+1]),a[_+2]=f(this.vbf[b+2]),a[_+3]=p(this.vbf[b+3]),a[_+4]=f(this.vbf[b+4]),a[_+5]=p(this.vbf[b+5]);break;default:console.error("Unknown geometry type")}a[_+6]=this.colors[this.vbi[b+6]]||0,a[_+7]=this.dbIds[this.vbi[b+7]]||0,s[x+4]=this.vbi[b+8],s[x+5]=this.vbi[b+9]}var E={};E.vb=new Float32Array(o),E.vbstride=6;var S=this.useInstancing?1:0;return E.vblayout={fields1:{offset:0,itemSize:2,bytesPerItem:2,divisor:S,normalized:!0},fields2:{offset:1,itemSize:4,bytesPerItem:2,divisor:S,normalized:!0},uvIdColor:{offset:3,itemSize:2,bytesPerItem:2,divisor:S,normalized:!1},flags4b:{offset:4,itemSize:4,bytesPerItem:1,divisor:S,normalized:!1},layerVp4b:{offset:5,itemSize:4,bytesPerItem:1,divisor:S,normalized:!1}},E.unpackXform={x:l,y:c,z:h,w:u},E.texData=n,E},l.prototype.makeWideVertexLayout=function(){var e={};e.vb=new Float32Array(this.vb.slice(0,this.vcount*this.stride*4)),e.vbstride=this.stride;var t=this.useInstancing?1:0;return e.vblayout={fields1:{offset:0,itemSize:2,bytesPerItem:4,divisor:t,normalized:!1},fields2:{offset:2,itemSize:4,bytesPerItem:4,divisor:t,normalized:!1},color4b:{offset:6,itemSize:4,bytesPerItem:1,divisor:t,normalized:!0},dbId4b:{offset:7,itemSize:4,bytesPerItem:1,divisor:t,normalized:!1},flags4b:{offset:8,itemSize:4,bytesPerItem:1,divisor:t,normalized:!1},layerVp4b:{offset:9,itemSize:4,bytesPerItem:1,divisor:t,normalized:!1}},e.vblayout.extraParams={offset:this.stride-2,itemSize:2,bytesPerItem:4,divisor:t,normalized:!1},e},l.prototype.toMesh=function(){var e=null;if(this.useCompactBuffers&&(e=this.makeCompactVertexLayout()),e||(e=this.makeWideVertexLayout()),this.useInstancing){e.numInstances=this.vcount;var t=new Int32Array([0,1,2,3]);e.vblayout.instFlags4b={offset:0,itemSize:4,bytesPerItem:1,divisor:0,normalized:!1},e.vblayout.instFlags4b.array=t.buffer,e.indices=new Uint16Array(r)}else e.indices=new Uint16Array(this.ib.buffer.slice(0,2*this.icount));e.dbIds=this.dbIds;var i=this.maxx-this.minx,n=this.maxy-this.miny,o=Math.max(i,n);return e.boundingBox={min:{x:this.minx,y:this.miny,z:.001*-o},max:{x:this.maxx,y:this.maxy,z:.001*o}},e.boundingSphere={center:{x:.5*(this.minx+this.maxx),y:.5*(this.miny+this.maxy),z:0},radius:.5*Math.sqrt(i*i+n*n)},e};var u=function(e,t){function i(){function i(e,t){return Math.abs(e-t)<.001}i(e,0)&&(e=0),i(t,0)&&(t=0),i(e,n)&&(e=n),i(t,n)&&(t=n)}if(i(),e>t)for(;e>n;)e-=n,t-=n;else for(;t>n;)e-=n,t-=n;return i(),e<0&&t>0&&(e+=n),{start:e,end:t}}},93509:(e,t,i)=>{"use strict";i.r(t),i.d(t,{F2D:()=>m,F2dDataType:()=>u,F2dSemanticType:()=>d,F2dShadowRatio:()=>f,restoreSignBitFromLSB:()=>p});var n=i(30514),r=i(21706),o=i(96118);const s=function(e,t){t.min.xe.max.x&&(e.max.x=t.max.x),t.max.y>e.max.y&&(e.max.y=t.max.y),t.max.z>e.max.z&&(e.max.z=t.max.z)};var a=i(83293),l=i(83081),c=i(57480),h=16383,u={dt_object:0,dt_void:1,dt_byte:2,dt_int:3,dt_float:4,dt_double:5,dt_varint:6,dt_point_varint:7,dt_byte_array:32,dt_int_array:33,dt_float_array:34,dt_double_array:35,dt_varint_array:36,dt_point_varint_array:37,dt_arc:38,dt_circle:39,dt_circular_arc:40,dt_string:63,dt_last_data_type:127},d={st_object_member:0,st_fill:1,st_fill_off:2,st_clip_off:3,st_layer:4,st_link:5,st_line_weight:6,st_miter_angle:7,st_miter_length:8,st_line_pattern_ref:9,st_back_color:10,st_color:11,st_markup:12,st_object_id:13,st_markup_id:14,st_reset_rel_offset:15,st_font_ref:16,st_begin_object:32,st_clip:33,st_line_caps:34,st_line_join:35,st_line_pattern_def:36,st_font_def:37,st_viewport:38,st_sheet:42,st_arc:43,st_polyline:44,st_raster:45,st_text:46,st_polytriangle:47,st_dot:48,st_end_object:63,st_last_semantic_type:127};const f=.0075;function p(e){return 1&e?-(e>>>1):e>>>1}function m(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(this.metadata=e,this.scaleX=1,this.scaleY=1,this.bbox={min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}},this.is2d=!0,this.layersMap={},this.fontDefs={},this.fontCount=0,this.fontId=0,this.manifestAvailable=!1,this.geomMetricsSum=0,this.objectMemberQueue=[],this.propertydb={attrs:[],avs:[],ids:[],values:[],offsets:[],viewables:[]},e){var s=e.page_dimensions;this.paperWidth=s.page_width,this.paperHeight=s.page_height,this.scaleX=this.paperWidth/s.plot_width,this.scaleY=this.paperHeight/s.plot_height,this.hidePaper=s.hide_paper;var a=this.paperWidth,l=this.paperHeight;this.bbox.max.x=a,this.bbox.max.y=l;var c=e.page_dimensions||{};if(isFinite(c.paper_rotation)&&0!==c.paper_rotation){var u=c.paper_rotation*Math.PI/180,d=Math.cos(u),f=Math.sin(u),p=a*d,m=a*f,g=-l*f,v=l*d;this.bbox.min.x=Math.min(0,p,g,p+g),this.bbox.max.x=Math.max(0,p,g,p+g),this.bbox.min.y=Math.min(0,m,v,m+v),this.bbox.max.y=Math.max(0,m,v,m+v)}isFinite(c.paper_offset_x)&&0!==c.paper_offset_x&&(this.bbox.min.x+=c.paper_offset_x,this.bbox.max.x+=c.paper_offset_x),isFinite(c.paper_offset_y)&&0!==c.paper_offset_y&&(this.bbox.min.y+=c.paper_offset_y,this.bbox.max.y+=c.paper_offset_y);var y=0;for(var b in this.layersMap[0]=y++,e.layers){var x=parseInt(b);this.layersMap[x]=y++}if(this.layerCount=y,this.createLayerGroups(e.layers),e.geom_metrics){var _=Object.keys(e.geom_metrics).map((function(t){return e.geom_metrics[t]}));this.geomMetricsSum=_.reduce(((e,t)=>e+t))}}this.hidePaper=this.hidePaper||o.modelSpace,this.noShadow=!!o.noShadow,this.hasPageShadow=!1,this.opCount=0,this.excludeTextGeometry=o.excludeTextGeometry,this.extendStringsFetching=o.extendStringsFetching,this.fontFaces=[],this.fontFamilies=[],this.viewports=[{}],this.currentVpId=0,this.viewports[0].geom_metrics=this.currentGeomMetrics={arcs:0,circles:0,circ_arcs:0,viewports:0,clips:0,colors:0,db_ids:0,dots:0,fills:0,layers:0,line_caps:0,line_joins:0,line_patterns:0,line_pat_refs:0,plines:0,pline_points:0,line_weights:0,links:0,miters:0,ptris:0,ptri_indices:0,ptri_points:0,rasters:0,texts:0,strings:[]},this.clips=[0],this.strings=[],this.stringDbIds=[],this.stringBoxes=[],this.extendStringsFetching&&(this.stringCharWidths=[],this.stringAngles=[],this.stringPositions=[],this.stringHeights=[]),this.currentStringNumber=-1,this.currentStringBox=new r.LmvBox3,this.linkBoxes=[],this.currentLinkBox=new r.LmvBox3,this.objectNumber=0,this.currentFakeId=-2,this.imageNumber=0,this.linkNumber=0,this.maxObjectNumber=0,this.objectStack=[],this.objectNameStack=[],this.parseObjState={polyTriangle:{},viewport:{},clip:{},raster:{},text:{},fontDef:{},uknown:{}},this.layer=0,this.bgColor="number"==typeof o.bgColor?o.bgColor:4294967295,this.contrastColor=this.color=this.fillColor=4278190080,this.hidePaper&&(this.contrastColor=4294967040),this.isMobile=o&&!!o.isMobile;var E=this.isMobile,S=this.isMobile;if(this.max_vcount=this.isMobile?h:void 0,this.currentVbb=new n.VertexBufferBuilder(E,void 0,this.max_vcount,S),this.meshes=[],this.numCircles=this.numEllipses=this.numPolylines=this.numLineSegs=0,this.numPolytriangles=this.numTriangles=0,this.error=!1,this.offsetX=0,this.offsetY=0,t){this.manifestAvailable=!0,this.imageId2URI={};for(var A=t.assets,w=0,T=A.length;w>16&255,i=e>>8&255,n=255&e;return(e>>24&255)<<24|(t=255-t)<<16|(i=255-i)<<8|(n=255-n)},m.prototype.mapColor=function(e,t){if(!this.hidePaper||0!==this.bgColor)return e;var i=255&e;return i<127||i===(65280&e)>>8&&i===(16711680&e)>>16&&t&&(e&=1442840575),e},m.prototype.parsePointPositions=function(){var e=this.stream.getVarints(),t=this.stream.getVarints();return e=p(e),t=p(t),e+=this.offsetX,t+=this.offsetY,this.offsetX=e,this.offsetY=t,[this.tx(e),this.ty(t)]},m.prototype.parserAssert=function(e,t,i){return e!=t&&(l.logger.warn("Expect "+t+"; actual type is "+e+"; in function "+i),this.error=!0,!0)},m.prototype.unhandledTypeWarning=function(e,t){l.logger.warn("Unhandled semantic type : "+t+" in function "+e)},m.prototype.parseObject=function(){var e=this.stream.getVarints();switch(this.objectStack.push(e),e){case d.st_sheet:this.objectNameStack.push("sheet"),this.objectMemberQueue.unshift("paperColor");break;case d.st_viewport:this.objectNameStack.push("viewport"),this.objectMemberQueue.unshift("units","transform");break;case d.st_clip:this.objectNameStack.push("clip"),this.objectMemberQueue.unshift("contourCounts","points","indices");break;case d.st_polytriangle:this.objectNameStack.push("polyTriangle"),this.objectMemberQueue.unshift("points","indices","colors");break;case d.st_raster:this.objectNameStack.push("raster"),this.objectMemberQueue.unshift("position","width","height","imageId");break;case d.st_text:this.currentStringNumber=this.strings.length,0===this.objectNumber&&(this.objectNumber=this.currentFakeId--),this.currentStringBox.makeEmpty(),this.objectNameStack.push("text"),this.objectMemberQueue.unshift("string","position","height","widthScale","rotation","oblique","charWidths");break;case d.st_font_def:this.objectNameStack.push("fontDef"),this.objectMemberQueue.unshift("name","fullName","flags","spacing","panose");break;case d.st_end_object:if(this.objectStack.pop(),this.objectStack.length){switch(this.objectStack.pop()){case d.st_polytriangle:this.actOnPolyTriangle();break;case d.st_viewport:this.actOnViewport();break;case d.st_clip:this.actOnClip();break;case d.st_raster:this.actOnRaster();break;case d.st_text:this.actOnText();break;case d.st_font_def:this.actOnFontDef()}var t=this.objectNameStack.pop(),i=this.parseObjState[t];for(var n in i)i[n]=null}else this.parserAssert(0,1,"parseEndObject (Stack Empty)");this.objectMemberQueue.length=0;break;default:this.objectNameStack.push("unknown"),this.error=!0,this.unhandledTypeWarning("parseObject",e)}},m.prototype.initSheet=function(e){if(!this.hidePaper&&(this.bgColor=e,this.metadata)){var t=this.paperWidth,i=this.paperHeight,n={x:0,y:0},r={x:t,y:0},o={x:0,y:i},s=this.metadata.page_dimensions||{};if(isFinite(s.paper_rotation)&&0!==s.paper_rotation){var a=s.paper_rotation*Math.PI/180,l=Math.cos(a),c=Math.sin(a);r.y=t*c,r.x=t*l,o.x=-i*c,o.y=i*l}isFinite(s.paper_offset_x)&&0!==s.paper_offset_x&&(n.x=s.paper_offset_x),isFinite(s.paper_offset_y)&&0!==s.paper_offset_y&&(n.y=s.paper_offset_y);var h=this.currentVbb,u=[n.x,n.y,n.x+r.x,n.y+r.y,n.x+r.x+o.x,n.y+r.y+o.y,n.x+o.x,n.y+o.y],d=[e,e,e,e],p=[0,1,2,0,2,3];if(!this.noShadow){var m=t*f,g={x:r.x*m/t,y:r.y*m/t},v={x:o.x*m/i,y:o.y*m/i},y={x:n.x+g.x,y:n.y+g.y},b={x:n.x+r.x,y:n.y+r.y},x=4283782485;u=u.concat([y.x-v.x,y.y-v.y,y.x-v.x+r.x,y.y-v.y+r.y,y.x+r.x,y.y+r.y,y.x,y.y,b.x,b.y,b.x+g.x,b.y+g.y,b.x+g.x-v.x+o.x,b.y+g.y-v.y+o.y,b.x-v.x+o.x,b.y-v.y+o.y]),d=d.concat([x,x,x,x,x,x,x,x]),p=p.concat([4,5,6,4,6,7,8,9,10,8,10,11]),this.hasPageShadow=!0}this.addPolyTriangle(u,d,p,4294967295,-1,0,!1),h.addSegment(n.x,n.y,n.x+r.x,n.y+r.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+r.x,n.y+r.y,n.x+r.x+o.x,n.y+r.y+o.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+r.x+o.x,n.y+r.y+o.y,n.x+o.x,n.y+o.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+o.x,n.y+o.y,n.x,n.y,0,1e-6,4278190080,-1,0,this.currentVpId)}},m.prototype.setObjectMember=function(e){if(!this.objectMemberQueue.length)return l.logger.warn("Unexpected object member. "+e+" on object "+this.objectNameStack[this.objectNameStack.length-1]),!1;var t=this.objectMemberQueue.shift(),i=this.objectNameStack[this.objectNameStack.length-1];return"sheet"==i&&"paperColor"==t?(this.initSheet(e),!0):!!i&&(this.parseObjState[i][t]=e,!0)},m.prototype.parseString=function(){var e=this.stream,t=e.getVarints(),i=e.getVarints(),n=e.getString(i);if(t===d.st_object_member){if(this.setObjectMember(n))return}else l.logger.info("Unexpected opcode semantic type for string.");return n},m.prototype.actOnFontDef=function(){var e=this.parseObjState.fontDef;this.fontDefs[++this.fontCount]=e,this.fontId=this.fontCount},m.prototype.parsePoint=function(){var e=this.stream.getVarints(),t=this.parsePointPositions();if(e===d.st_object_member){if(this.setObjectMember(t))return}else l.logger.info("Unexpected opcode semantic type for point.");return t},m.prototype.parsePointsArray=function(){var e=this.stream,t=e.getVarints(),i=e.getVarints();if(i){i/=2;for(var n,r=[],o=0;ot){var i=e;e=t,t=i}if(c[e]){var n=c[e],r=n.lastIndexOf(t);-1==r?n.push(t):n[r]=-1}else c[e]=[t]}function f(i,s){if(i>s){var u=i;i=s,s=u}var d=c[i];d&&(-1!=d.indexOf(s)&&(a.flushBuffer(4),a.currentVbb.addSegment(e[2*i],e[2*i+1],e[2*s],e[2*s+1],0,h,a.mapColor(t?t[i]:n,!0),r,o,a.currentVpId),t&&t[i]!=t[s]&&l.logger.warn("Gouraud triangle encountered. Will have incorrect antialiasing.")))}if(this.objectStack[this.objectStack.length-1]==d.st_text&&(h=-.5),s){c=new Array(e.length/2);for(let e=0,t=i.length;e1)for(var h=0;h{const t=new Array(256);for(let e=0;e<256;e++){let i=e.toString(16);1===i.length&&(i="0"+i),t[e]=i}var i=new Array(20),n=new Array(10);e.exports={binToPackedString:function(e,t,i){for(var r=20===i?n:[],o=0;o>8&255]}return n.join("")},packedToBin:function(e,t,i){for(let n=0;n>8&255}}}},58536:(e,t,i)=>{"use strict";i.r(t),i.d(t,{readLmvBufferGeom:()=>L,serializeLmvBufferGeom:()=>C});var n=i(55280),r=i(83293),o=i(21706);const s={Index:0,IndexEdges:1,Position:2,Normal:3,TextureUV:4,Color:5},a=0,l=1,c=2,h=3,u=4,d=5,f=6,p=7,m=8,g=9,v=10,y={TRIANGLES:0,LINES:1,POINTS:2,WIDE_LINES:3},b={position:s.Position,normal:s.Normal,index:s.Index,indexlines:s.IndexEdges,color:s.Color},x={};x[s.Position]="position",x[s.Normal]="normal",x[s.Index]="index",x[s.IndexEdges]="indexlines",x[s.Color]="color",x[s.TextureUV]="uv";const _={};function E(e){var t=[];for(let i=0;ie[1]){var i=e[0];e[0]=e[1],e[1]=i}t.sort((function(e,t){return e[0]-t[0]}));var n=t[0],r=0;e[r]=n[0],e[r+1]=n[1]-n[0],r+=2;for(let i=1;ir[1]||r[0]>r[2];)i=void 0,i=(t=r)[0],t[0]=t[1],t[1]=t[2],t[2]=i;n.sort((function(e,t){return e[0]-t[0]}));var r=n[0],o=0;e[o]=r[0],e[o+1]=r[1]-r[0],e[o+2]=r[2]-r[0],o+=3;for(let t=1;t>4,i.bytesPerItem=_[i.type],i.normalized=i.type===u||i.type===d||i.type===f||i.type===p,i.itemOffset=this.buffer.readUInt8(this.readOffset)/4,this.readOffset++,i.itemStride=this.buffer.readUInt8(this.readOffset)/4,this.readOffset++,i.bufferIndex=this.buffer.readUInt8(this.readOffset),this.readOffset++,this.attributes.push(i)}for(;this.readOffset%4!=0;)this.readOffset++;for(let e=0;e>4,i.bytesPerItem=_[i.type],i.normalized=i.type===u||i.type===d||i.type===f||i.type===p,i.itemOffset=e.getUint8()/4,i.itemStride=e.getUint8()/4,i.bufferIndex=e.getUint8(),this.attributes.push(i)}for(;e.offset%4!=0;)e.offset++;for(let t=0;t1&&(h+=r.toString())),n.vbstride?n.vbstride!==a.itemStride&&console.error("Unexpected vertex buffer stride mismatch."):n.vbstride=a.itemStride,a.itemOffset>=a.itemStride||(n.vblayout[h]={bytesPerItem:a.bytesPerItem,offset:a.itemOffset,normalized:a.normalized,itemSize:a.itemSize})}}return{mesh:n,packId:0,meshIndex:0}}},87816:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Empty2DModelLoader:()=>n});class n{constructor(e){this.viewer3DImpl=e}loadFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0;const r=t.width||100,o=t.height||100;n&&n(),this.svf={is2d:!0,viewports:[],layersMap:{0:0},layerCount:1,bbox:new THREE.Box3(new THREE.Vector3(0,0,0),new THREE.Vector3(r,o,0)),fragments:{length:1,fragId2dbId:[0],dbId2fragId:{},transforms:new Float32Array(12),boxes:[0,0,0,r,o,0]},loadOptions:{bubbleNode:new Autodesk.Viewing.BubbleNode({urn:"Dummy_urn",guid:"Dummy_guid"})},metadata:{page_dimensions:{page_width:r,page_height:o,logical_width:r,logical_height:o,logical_offset_x:0,logical_offset_y:0,page_units:"inch"}},strings:[],stringDbIds:[],loadDone:!0};const s=new Autodesk.Viewing.Model(this.svf);s.initialize(),s.loader=this,this.model=s,i(null,s),this.viewer3DImpl.api.dispatchEvent({type:Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT,svf:this.svf,model:s}),this.viewer3DImpl.onLoadComplete(s)}dtor(){}is2d(){return!0}is3d(){return!1}}},47261:(e,t,i)=>{"use strict";i.r(t),i.d(t,{F2DLoader:()=>x,OUTPUT_TYPE:()=>b});var n=i(83081),r=i(77201),o=i(22040),s=i(57480),a=i(28441),l=i(54393),c=i(84045),h=i(7756),u=i(13e3),d=i(55280),f=i(19556),p=i(90255),m=i(8412),g=i(63764),v=i(72091);const y=Autodesk.Viewing.Private,b={GEOMETRY:"geometry",VERTEX_BUFFER:"vertexBuffer"};function x(e){this.viewer3DImpl=e,this.loading=!1,this.tmpMatrix=new v.Matrix4,this.logger=n.logger,this.loadTime=0}x.prototype.dtor=function(){this.streamingWorker&&(this.streamingWorker.terminate(),this.streamingWorker=null,n.logger.debug("F2D loader dtor: on streaming worker.")),this.parsingWorker&&(this.parsingWorker.terminate(),this.parsingWorker=null,n.logger.debug("F2D loader dtor: on parsing worker.")),this.svf&&this.svf.propDbLoader&&(this.svf.propDbLoader.dtor(),this.svf.propDbLoader=null),this.viewer3DImpl=null,this.loading=!1,this.tmpMatrix=null,this.logger=null,this.loadTime=0,this.svf=null,this.model=null,this.options=null},x.prototype.isValid=function(){return!!this.viewer3DImpl},x.prototype.loadFile=function(e,t,i,r){if(!this.viewer3DImpl)return n.logger.log("F2D loader was already destructed. So no longer usable."),!1;if(this.loading)return n.logger.log("Loading of F2D already in progress. Ignoring new request."),!1;this.loading=!0;var o=e.indexOf("urn:");if(-1!=o){var s=(e=decodeURIComponent(e)).substr(o,e.substr(o).indexOf("/"));n.logger.log("Extracted URN: "+s);var a=s.lastIndexOf(":");this.svfUrn=s.substr(a+1)}else this.svfUrn=e;return this.sharedDbPath=t.sharedPropertyDbPath,this.currentLoadPath=e,this.acmSessionId=t.acmSessionId,this.queryParams="",this.acmSessionId&&(this.queryParams="acmsession="+this.acmSessionId),this.options=t,this.options.placementTransform?this.modelScale=this.options.modelScale||this.options.placementTransform.getMaxScaleOnAxis():this.modelScale=this.options.modelScale||1,this.isf2d=!0,this.loadFydoCB(e,t,i,r),!0},x.prototype.loadFydoCB=function(e,t,i,r){this.t0=Date.now();var o=(0,c.pathToURL)(e);this.streamingWorker=(0,h.createWorker)("F2DStreamWorker",!0),this.parsingWorker=(0,h.createWorker)("F2DParseWorker");var l=this,u=!0,p=function(){l.parsingWorker.terminate(),l.parsingWorker=null};this.streamingWorker.addEventListener("message",(function(e){var c;l.isValid()&&(u&&r&&(u=!1,r()),e.data&&"F2DBLOB"==e.data.type?(c={operation:"PARSE_F2D",data:e.data.buffer,metadata:e.data.metadata,manifest:e.data.manifest,basePath:e.data.basePath,f2dLoadOptions:{modelSpace:t.modelSpace,bgColor:t.bgColor,noShadow:t.noShadow,isMobile:(0,d.isMobileDevice)(),excludeTextGeometry:t.excludeTextGeometry,outputType:t.outputType||b.VERTEX_BUFFER,extendStringsFetching:t.extendStringsFetching},url:o},l.parsingWorker.doOperation(c,[c.data]),l.streamingWorker.terminate(),l.streamingWorker=null):e.data&&"F2DSTREAM"==e.data.type?(c={operation:"PARSE_F2D_FRAME",data:e.data.frames,url:o,f2dLoadOptions:{modelSpace:t.modelSpace,bgColor:t.bgColor,noShadow:t.noShadow,isMobile:(0,d.isMobileDevice)(),excludeTextGeometry:t.excludeTextGeometry,outputType:t.outputType||b.VERTEX_BUFFER,extendStringsFetching:t.extendStringsFetching}},e.data.metadata&&(c.metadata=e.data.metadata,c.manifest=e.data.manifest),e.data.finalFrame&&(c.finalFrame=!0,l.streamingWorker.terminate(),l.streamingWorker=null,l.fileMemorySize/=2),e.data.progress&&l.viewer3DImpl.signalProgress(100*e.data.progress,a.ProgressState.LOADING),l.parsingWorker.doOperation(c,c.data?[c.data]:void 0)):e.data&&"F2DAssetURL"==e.data.type||e.data&&e.data.progress||(e.data&&e.data.debug?n.logger.debug(e.data.message):e.data&&e.data.error?(l.loading=!1,l.streamingWorker.terminate(),l.streamingWorker=null,i&&i(e.data.error)):(n.logger.error("F2D download failed.",(0,s.errorCodeString)(s.ErrorCodes.NETWORK_FAILURE)),l.loading=!1,l.streamingWorker.terminate(),l.streamingWorker=null)))}),!1);var g=t.outputType===b.GEOMETRY?function(e){if(l.isValid()&&(u&&r&&(u=!1,r()),e.data&&e.data.f2d)){l.svf=e.data.f2d;const t=e.data.f2d.geometry;p(),n.logger.info("Num polylines: "+t.numPolylines),n.logger.info("Line segments: "+t.numLineSegs),n.logger.info("Circular arcs: "+t.numCircles),n.logger.info("Ellipitcal arcs:"+t.numEllipses),l.onModelRootLoadDone(l.svf),i&&i(null,l.model),l.viewer3DImpl.api.dispatchEvent({type:f.MODEL_ROOT_LOADED_EVENT,svf:l.svf,model:l.model}),l.onGeomLoadDone()}}:function(e){var t,o;if(l.isValid())if(u&&r&&(u=!1,r()),e.data&&e.data.f2d){for(t=l.svf=e.data.f2d,p(),n.logger.info("Num polylines: "+t.numPolylines),n.logger.info("Line segments: "+t.numLineSegs),n.logger.info("Circular arcs: "+t.numCircles),n.logger.info("Ellipitcal arcs:"+t.numEllipses),n.logger.info("Plain triangles:"+t.numTriangles),n.logger.info("Total # of op codes generated by fydo.parse: "+t.opCount),l.onModelRootLoadDone(l.svf),i&&i(null,l.model),l.viewer3DImpl.api.dispatchEvent({type:f.MODEL_ROOT_LOADED_EVENT,svf:l.svf,model:l.model}),o=0;oi.nextRepaintPolys&&(i.numRepaints++,i.nextRepaintPolys+=1e4*Math.pow(1.5,i.numRepaints),this.viewer3DImpl.api.dispatchEvent({type:f.LOADER_REPAINT_REQUEST_EVENT,loader:this,model:this.model})),x%20==0&&this.viewer3DImpl.api.dispatchEvent({type:f.LOADER_REPAINT_REQUEST_EVENT,loader:this,model:this.model})},x.prototype.processReceivedMesh2D=function(e,t){t>=this.bufferCount&&(this.bufferCount=t+1);var i={mesh:e,is2d:!0,packId:"0",meshIndex:t},n="0:"+t,r=this.svf.fragments;if(!r.fragId2dbId[t]){var o=Object.keys(i.mesh.dbIds).map((function(e){return parseInt(e)}));r.fragId2dbId[t]=o;for(var s=0;s{"use strict";i.r(t),i.d(t,{LeafletLoader:()=>m});var n=i(28441),r=i(57480),o=i(83081),s=i(84045),a=i(47712),l=i(90255),c=i(54393),h=i(63764),u=i(8412),d=i(19556),f=i(72091);const p=Autodesk.Viewing.Private;function m(e){var t=e;this.isLeafletLoader=!0,this.loading=!1;var i=function(e,t){var i=[80,75,1,2],n=t;if(e[n++]!==i[0]||e[n++]!==i[1]||e[n++]!==i[2]||e[n++]!==i[3])return o.logger.error("invalid file header signature"),null;var r={};return r.version=e[n++],r.os=e[n++],r.needVersion=e[n++]|e[n++]<<8,r.flags=e[n++]|e[n++]<<8,r.compression=e[n++]|e[n++]<<8,r.time=e[n++]|e[n++]<<8,r.date=e[n++]|e[n++]<<8,r.crc32=(e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24)>>>0,r.compressedSize=(e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24)>>>0,r.plainSize=(e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24)>>>0,r.fileNameLength=e[n++]|e[n++]<<8,r.extraFieldLength=e[n++]|e[n++]<<8,r.fileCommentLength=e[n++]|e[n++]<<8,r.diskNumberStart=e[n++]|e[n++]<<8,r.internalFileAttributes=e[n++]|e[n++]<<8,r.externalFileAttributes=e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24,r.relativeOffset=(e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24)>>>0,r.filename=String.fromCharCode.apply(null,e.slice(n,n+=r.fileNameLength)),r.extraField=e.slice(n,n+=r.extraFieldLength),r.comment=e.slice(n,n+r.fileCommentLength),r.length=n-t,r},c=function(e){var t=function(e){var t=[80,75,3,4],i=0;if(e[i++]!==t[0]||e[i++]!==t[1]||e[i++]!==t[2]||e[i++]!==t[3])return o.logger.error("invalid local file header signature"),null;var n={};return n.needVersion=e[i++]|e[i++]<<8,n.flags=e[i++]|e[i++]<<8,n.compression=e[i++]|e[i++]<<8,n.time=e[i++]|e[i++]<<8,n.date=e[i++]|e[i++]<<8,n.crc32=(e[i++]|e[i++]<<8|e[i++]<<16|e[i++]<<24)>>>0,n.compressedSize=(e[i++]|e[i++]<<8|e[i++]<<16|e[i++]<<24)>>>0,n.plainSize=(e[i++]|e[i++]<<8|e[i++]<<16|e[i++]<<24)>>>0,n.fileNameLength=e[i++]|e[i++]<<8,n.extraFieldLength=e[i++]|e[i++]<<8,n.filename=String.fromCharCode.apply(null,e.slice(i,i+=n.fileNameLength)),n.extraField=e.slice(i,i+=n.extraFieldLength),n.length=i,n}(e);if(!t)return null;var i=t.length,n=t.compressedSize;return e.slice(i,i+n)};this.continueLoadFile=function(e,i,s,l,c,u){var m,g,v=this;if(!v.loading)return void s({code:r.ErrorCodes.LOAD_CANCELED,msg:"Load canceled"},null);null!==(m=i.loadOptions)&&void 0!==m&&m.loadFromZip?g="{z}/{x}_{y}."+i.loadOptions.mime.split("/")[1]:g=e;c.initFromLoadOptions(g,i.loadOptions,u,i);let y=null;l&&l(),!c.valid()&&c.initForSimpleImage(e),c.onRootLoaded=function(){if(!v.loading)return void s({code:r.ErrorCodes.LOAD_CANCELED,msg:"Load canceled"},null);var a=new function(r){var o;this.bbox=new f.Box3,this.basePath=e,this.is2d=!0,this.urn=null===(o=i.bubbleNode)||void 0===o?void 0:o.getRootNode().urn();var s=r&&r.paperWidth>=0?r.paperWidth:c.texWidth,a=r&&r.paperHeight>=0?r.paperHeight:c.texHeight;this.pageToModelTransform=c.getPageToModelTransform(s,a),this.metadata={},this.metadata.page_dimensions={};var l=this.metadata.page_dimensions;l.page_width=s,l.page_height=a,l.page_units=r&&r.paperUnits,this.loadDone=!0,this.isLeaflet=!0,t.signalProgress(100,n.ProgressState.LOADING),c.texWidth>0&&(this.maxPixelPerUnit=c.texWidth/c.getQuadWidth(),c.isSimpleImage&&(this.maxPixelPerUnit*=10))}(i.loadOptions);a.loadOptions=i,a.bbox.copy(c.getBBox()),a.modelSpaceBBox=a.bbox.clone(),i.placementTransform&&(a.placementTransform=i.placementTransform.clone(),a.placementWithOffset=i.placementTransform.clone(),a.bbox.applyMatrix4(i.placementTransform));const l=new h.Model(a);return l.addTraversalController("Custom",y),l.loader=v,t.api.dispatchEvent({type:d.MODEL_ROOT_LOADED_EVENT,svf:a,model:l}),y.callWhenRefined((function(){var e,t=Date.now();a.loadTime=t-v.t0,o.logger.log("SVF load: "+a.loadTime),p.analytics.track("viewer.model.loaded",{load_time:a.loadTime,total_raster_pixels:null===(e=a.loadOptions.bubbleNode)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.totalRasterPixels,viewable_type:"2d",url:a.basePath,urn:a.urn})})),s(null,l),v.loading=!1,l.id},c.onDone=s,c.getPixelRatio=t.glrenderer().getPixelRatio,c.maxAnisotropy=t.glrenderer().getMaxAnisotropy(),c.placementTransform=i.placementTransform,y=new a.ModelIteratorTexQuad(c,t.getMaterials()),y.requestRootTile()},this.loadFile=function(e,t,n,h){if(this.loading)return o.logger.log("Loading of Leaflet already in progress. Ignoring new request."),!1;var d=this;this.loading=!0,this.options=t,this.t0=Date.now();var p=new a.TexQuadConfig,m=null,g=t.acmSessionId;if(t.loadOptions&&t.loadOptions.loadFromZip){m=function(e,t,i){for(var n,r=e.split("/")[0]-p.levelOffset,o=0;o0}))&&d.continueLoadFile(e,t,n,h,p,m)}),(function(e){o.logger.error("Zip download failed: "+e.statusText,(0,r.errorCodeString)(r.ErrorCodes.NETWORK_FAILURE)),n("Zip download failed: "+e.statusText,null)}))}))}else m=function(e,t,i){l.TextureLoader.loadTextureWithSecurity(e,f.UVMapping,t,i,g,!0)},this.continueLoadFile(e,t,n,h,p,m);return!0},this.dtor=function(){this.loading=!1}}m.prototype.is3d=function(){return!1},m.prototype.isPageCoordinates=function(){var e;return!(null===(e=this.options)||void 0===e||null===(e=e.loadOptions)||void 0===e||!e.fitPaperSize)},c.FileLoaderManager.registerFileLoader("Leaflet",["jpeg","jpg","png"],m)},91496:(e,t,i)=>{"use strict";i.r(t),i.d(t,{OtgLoader:()=>ve});var n=i(37365),r=i(21706),o=i(83081),s=i(90255),a=i(75468),l=i(68747),c=i(13e3),h=i(7756),u=i(8412),d=i(84045),f=i(96118);function p(e){switch(e){case"meter":case"meters":case"m":default:return 1;case"feet and inches":case"foot":case"feet":case"ft":return.3048;case"inch":case"inches":case"in":return.0254;case"centimeter":case"centimeters":case"cm":return.01;case"millimeter":case"millimeters":case"mm":return.001}}function m(e,t){if(e.metadata){var i=e.metadata["world bounding box"],o=new f.LmvVector3(i.minXYZ[0],i.minXYZ[1],i.minXYZ[2]),s=new f.LmvVector3(i.maxXYZ[0],i.maxXYZ[1],i.maxXYZ[2]);e.bbox=new r.LmvBox3(o,s),e.modelSpaceBBox=e.bbox.clone();var a=function(e,t){var i=e.metadata["custom values"];if(e.placementTransform=t.placementTransform,t.applyScaling){var r="m";e.metadata["distance unit"]&&(r=e.metadata["distance unit"].value),e.scalingUnit=r,"object"==typeof t.applyScaling?(t.applyScaling.from&&(r=t.applyScaling.from),t.applyScaling.to&&(e.scalingUnit=t.applyScaling.to)):e.scalingUnit=t.applyScaling;var o=p(r)/p(e.scalingUnit);if(1!=o){var s=new n.LmvMatrix4(!0),a=new n.LmvMatrix4(!0);a.elements[0]=o,a.elements[5]=o,a.elements[10]=o,t.placementTransform&&s.copy(t.placementTransform),t.applyPlacementInModelUnits?t.placementTransform=a.multiply(s):t.placementTransform=s.multiply(a),e.placementTransform=t.placementTransform,e.scalingFactor=o}}if(i&&i.refPointTransform){e.refPointTransform=new n.LmvMatrix4(!0);var l=e.refPointTransform.elements,c=i.refPointTransform;l[0]=c[0],l[1]=c[1],l[2]=c[2],l[4]=c[3],l[5]=c[4],l[6]=c[5],l[8]=c[6],l[9]=c[7],l[10]=c[8],l[12]=c[9],l[13]=c[10],l[14]=c[11]}else{var h=e.metadata.georeference,u=h&&h.refPointLMV,d=0;if(i&&Object.prototype.hasOwnProperty.call(i,"angleToTrueNorth")&&(d=Math.PI/180*i.angleToTrueNorth),u||d){var f=new n.LmvMatrix4(!0),m=f.elements;m[0]=m[5]=Math.cos(d),m[1]=-Math.sin(d),m[4]=Math.sin(d);var g=new n.LmvMatrix4(!0);m=g.elements,u&&(m[12]=-u[0],m[13]=-u[1],m[14]=-u[2]),e.refPointTransform=f.multiply(g)}}if(t.applyRefPoint&&e.refPointTransform){var v=new n.LmvMatrix4(!0);t.placementTransform&&v.copy(t.placementTransform),v.multiply(e.refPointTransform),e.placementTransform=t.placementTransform=v}else!t.applyRefPoint&&t.placementTransform&&(e.placementTransform=new n.LmvMatrix4(!0).copy(t.placementTransform));return e.placementTransform&&function(e){for(var t=e.elements,i=0;i<4;i++)for(var n=0;n<4;n++)if(i===n){if(1!==t[4*i+n])return!1}else if(0!==t[4*i+n])return!1;return!0}(e.placementTransform)&&(e.placementTransform=null),e.placementTransform}(e,t);a&&!e.bbox.isEmpty()&&e.bbox.applyMatrix4(a),t.globalOffset?e.globalOffset=t.globalOffset:e.globalOffset=e.bbox.getCenter(new f.LmvVector3),function(e,t){var i=e.globalOffset;if(i.x||i.y||i.z){if(t){var r=new n.LmvMatrix4(!0);r.copy(t),(t=r).elements[12]-=i.x,t.elements[13]-=i.y,t.elements[14]-=i.z}else(t=new n.LmvMatrix4(!0)).makeTranslation(-i.x,-i.y,-i.z);e.placementWithOffset=t}else e.placementWithOffset=t}(e,a),e.bbox.isEmpty()||(e.bbox.min.sub(e.globalOffset),e.bbox.max.sub(e.globalOffset)),Object.prototype.hasOwnProperty.call(e.metadata,"double sided geometry")&&e.metadata["double sided geometry"].value&&(e.doubleSided=!0)}}function g(e,t){e[0]-=t.x,e[1]-=t.y,e[2]-=t.z}function v(e,t){if(t&&(t.transformPoint(e.position),t.transformPoint(e.target),t.transformDirection(e.up),isFinite(e.orthoScale))){const i=t.getMaxScaleOnAxis();e.orthoScale*=i}}var y=i(35982),b=i(10149);function x(e,t){let i,n,r,s,a,l,c=0;let h,u,d=new Array,f=0,p=new Uint8Array(4),m=0,g=0;this.onData=function(v){for(v&&(h?d.push(v):(h=v,f=0));h;){let v=Math.min(p.length-m,h.length-f);if(v>0&&(p.set(h.subarray(f,f+v),m),f+=v,m+=v),c)if(u>0)m===p.length&&(u=0,r=new Uint8Array(1024*i),s=new Float32Array(r.buffer),a=new Uint32Array(r.buffer),l=new Uint16Array(r.buffer),p=r,m=0);else{for(;g+i<=m;){if(!e(this,g,c))return;g+=i,c++}m===p.length&&(g=0,m=0)}else m===p.length&&(i=p[1]<<8|p[0],i||(i=t||0),i||o.logger.error("Unknown byte stride."),i%4&&o.logger.error("Expected byte size to be multiple of 4, but got "+i),n=p[3]<<8|p[2],u=i-4,p=new Uint8Array(u),m=0,c++);f===h.length&&(h=d.shift(),f=0)}},this.flush=function(){this.onData(null),v(),m%i>0&&o.logger.warn("unexpected extra bytes at end of stream")},this.idata=function(){return a},this.i16data=function(){return l},this.fdata=function(){return s},this.bdata=function(){return r},this.version=function(){return n},this.byteStride=function(){return i};let v=()=>null;this.done=new Promise((e=>v=e))}var _,E,S,A,w,T=i(83293);function M(e){var t=this.stream=new T.z(e),i=t.getInt32();this.type=t.getString(i),this.version=t.getInt32(),this.types=null,this.entryOffsets=[];var n=t.offset;t.seek(t.byteLength-8);var r=t.getUint32();this.typesOffset=t.getUint32(),t.seek(this.typesOffset);var o=this.readU32V();this.types=[];for(var s=0;s=this.getEntryCounts())return null;this.stream.seek(this.entryOffsets[e]);var t=this.stream.getUint32();return t>=this.types.length?null:this.types[t]},M.prototype.readPathID=function(){let e,t=this.stream;if(this.version<2){let i=t.getUint16();if(!i)return null;if(t.getUint16(),1==i)return"";e=t.getUint16();for(let n=2;n2)return null;var r=e.stream,o={isPerspective:!r.getUint8(),position:e.readVector3f(),target:e.readVector3f(),up:e.readVector3f(),aspect:r.getFloat32(),fov:r.getFloat32()*(180/Math.PI)};return n.version<2&&(r.getFloat32(),r.getFloat32()),o.orthoScale=r.getFloat32(),o}(t,i)}if(r&P&&(n.cameraTransform=e.readTransform(),n.camera&&n.cameraTransform&&v(n.camera,n.cameraTransform)),r&D&&(n.renderMode=e.readU8()),r&L&&(n.primitiveDisplayFlags=e.readU8()),r&R&&(n.overrideSet=e.readVarint()),r&I)if(n.clipPlaneMode=e.readU8(),0===n.clipPlaneMode){n.sectionCount=e.readU8(),n.clipData={},n.sectionPlane=[];for(let t=0;t{const{defaultMaterialIndex:i,materialOverrides:n}=e;i&&t.add(i),null==n||n.forEach((e=>{t.add(e.materialIndex)}))}));const i=[...t].filter((e=>!this.materialIdToHash[e]));i.length&&(this.needExtraMaterials=!0);for(const e of i){const t=this.getMaterialHash(e);t&&(this.extraMatHashes[e]=t)}},q.prototype.getGeometryHash=function(e){var t;if(null===(t=this.geomMetadata)||void 0===t||!t.hashes)return null;var i=this.geomMetadata.hashes[e];return null!=i&&i.length?i:null},q.prototype.initEmptyLists=function(e){var t=this,i=t.fragments={};i.length=t.metadata.stats.num_fragments,i.numLoaded=0,i.boxes=e.fragmentTransformsDouble?new Float64Array(6*i.length):new Float32Array(6*i.length),i.transforms=e.fragmentTransformsDouble?new Float64Array(12*i.length):new Float32Array(12*i.length),i.materials=(0,b.z)(i.length,t.metadata.stats.num_materials),i.geomDataIndexes=(0,b.z)(i.length,t.metadata.stats.num_geoms),i.fragId2dbId=new Int32Array(i.length),i.visibilityFlags=new Uint8Array(i.length),i.topoIndexes=null,e.buildDbId2FragIdMap&&(i.dbId2fragId={}),t.geomMetadata={hashes:null,byteStride:0,version:0,numLoaded:0,hashToIndex:new Map},t.materialHashes={hashes:null,byteStride:0,version:0,numLoaded:0},t.materials={name:"LMVTK Simple Materials",version:"1.0",scene:{SceneUnit:8215,YIsUp:0},materials:{}}},q.prototype.loadAsyncResource=function(e,t,i,n){var r=this;this.pendingRequests++,t=(0,d.pathToURL)(t,e.basePath),d.ViewingService.getItem(e,t,(function(e){r.pendingRequests--,n(e)}),e.onFailureCallback,{responseType:i||"arraybuffer"})},q.prototype.loadAsyncProgressive=function(e,t,i,n,r){var o=this;t=(0,d.pathToURL)(t,e.basePath),d.ViewingService.getItem(e,t,(function(){o.postLoad(e,n)}),r||e.onFailureCallback,{responseType:"arraybuffer",ondata:function(e){i.onData(e)},abortSignal:o.abortController.signal,useFetch:!0})},q.prototype.loadMetadata=function(e,t){var i=this;this.loadAsyncResource(e,t,"json",(function(r){i.metadata=r,i.manifest=i.metadata.manifest,i.numGeoms=i.metadata.stats.num_geoms,i.processViewPointData(e),i.processMetadata(e),i.initEmptyLists(e);var o=i.metadata.manifest,s=o.shared_assets.pdb;for(let e in s)i.propertydb[e]&&i.propertydb[e].push({path:s[e],isShared:!0});var a=o.assets.pdb;for(let e in a)i.propertydb[e]&&i.propertydb[e].push({path:a[e],isShared:!1});o.assets.animations&&i.loadAsyncResource(e,o.assets.animations,"json",(function(e){i.animations=e,function(e){if(e.animations){var t=e.animations.animations;if(t)for(var i=e.globalOffset,r=(new n.LmvMatrix4).makeTranslation(i.x,i.y,i.z),o=(new n.LmvMatrix4).makeTranslation(-i.x,-i.y,-i.z),s=new n.LmvMatrix4,a=new n.LmvMatrix4,l=0;li.geomMetadata.numLoaded||g>i.materialHashes.numLoaded)return!1;f=!i.dbIdFilter||i.dbIdFilter[v]?1&y?l.MeshFlags.MESH_HIDE:0:l.MeshFlags.MESH_NOTLOADED,p.visibilityFlags[h]=f;var b=i.metadata.fragmentTransformsOffset||c,x=n+4;r.set(d[x+0]+b.x,d[x+1]+b.y,d[x+2]+b.z),s.x=d[x+3],s.y=d[x+4],s.z=d[x+5],s.w=d[x+6],o.set(d[x+7],d[x+8],d[x+9]),a.compose(r,s,o),i.placementWithOffset&&a.multiplyMatrices(i.placementWithOffset,a);var _=a.elements,E=p.transforms,S=12*h;if(E[S+0]=_[0],E[S+1]=_[1],E[S+2]=_[2],E[S+3]=_[4],E[S+4]=_[5],E[S+5]=_[6],E[S+6]=_[8],E[S+7]=_[9],E[S+8]=_[10],E[S+9]=_[12],E[S+10]=_[13],E[S+11]=_[14],!p.boxesLoaded){let e=p.boxes,t=6*h;for(let i=0;i<3;i++){let n=Math.abs(_[i]);n+=Math.abs(_[i+4]),n+=Math.abs(_[i+8]),n*=.5;let r=_[12+i];e[t+i]=r-n,e[t+i+3]=r+n}}return p.numLoaded=h+1,e.onLoaderEvent("fragment",h),!0}));return this.loadAsyncProgressive(e,t,h,"all_fragments"),h},q.prototype.handleHashListRequestFailures=function(e){this.metadata&&(this.geomHashListFailure&&this.metadata.stats.num_geoms>0&&e.onFailureCallback.apply(e,this.geomHashListFailure),this.matHashListFailure&&this.metadata.stats.num_materials>0&&e.onFailureCallback.apply(e,this.matHashListFailure),this.geomHashListFailure=null,this.matHashListFailure=null)},q.prototype.loadGeometryHashList=function(e,t){var i=this;let n=new x((function(e,t,n){return!!i.metadata&&(i.geomMetadata.hashes||(i.geomMetadata.hashes=new Array(i.numGeoms+1),i.geomMetadata.byteStride=e.byteStride(),i.geomMetadata.version=e.version()),i.geomMetadata.hashes[n]=(0,y.bin16ToPackedString)(e.i16data(),t/2),i.geomMetadata.numLoaded=n,!0)}),20);return this.loadAsyncProgressive(e,t,n,"geometry_ptrs",(function(){i.geomHashListFailure=arguments,i.handleHashListRequestFailures(e),i.postLoad(e,"geometry_ptrs",n)})),n},q.prototype.loadMaterialHashList=function(e,t){var i=this;let n=new x((function(e,t,n){return!!i.metadata&&(i.materialHashes.hashes||(i.numMaterials=i.metadata.stats.num_materials,i.materialHashes.hashes=new Array(i.numMaterials+1),i.materialHashes.byteStride=e.byteStride(),i.materialHashes.version=e.version()),i.materialHashes.hashes[n]=(0,y.bin16ToPackedString)(e.i16data(),t/2),i.materialHashes.numLoaded=n,!0)}),20);return this.loadAsyncProgressive(e,t,n,"material_ptrs",(function(){i.matHashListFailure=arguments,i.handleHashListRequestFailures(e),i.postLoad(e,"material_ptrs",n)})),n},q.prototype.processMetadata=function(e){var t=this,i=t.metadata;m(t,e);var n=t.placementWithOffset;if(i.cameras){t.cameras=i.cameras;for(var r=0;r!t(e,i)}static _buildOrCondition(e){const t=new Array;if(e instanceof Array)for(let i=0;i{for(const n of t)if(n(e,i))return!0;return!1}}static _buildAndCondition(e){const t=new Array;if(e instanceof Array)for(let i=0;i{let n=!0;for(const r of t)n&=r(e,i);return n}}static _buildEnclosesClause(e){const t=e[0];let i;for(i in t)break;const n=new ie.Box3;[n.min.x,n.min.y,n.min.z,n.max.x,n.max.y,n.max.z]=t[i];const r=e.length>1&&"number"==typeof e[2]?e[2]:1e-8;return 0!==r&&n.expandByScalar(r),(e,t)=>(e.getFragmentList().getWorldBounds(t,ne),n.containsBox(ne))}static _buildIntersectsClause(e){const t=e[0];let i;for(i in t)break;const n=new ie.Box3;return[n.min.x,n.min.y,n.min.z,n.max.x,n.max.y,n.max.z]=t[i],(e,t)=>(e.getFragmentList().getWorldBounds(t,ne),n.intersectsBox(ne))}static _buildExtentClause(e){return(t,i)=>{const n=new ie.Box3;t.getFragmentList().getWorldBounds(i,n);const r=new ie.Vector3;n.getSize(r);return r.x*r.y*r.z>e}}static _parse(e){let t;for(t in e)break;switch(t){case"$not":return this._buildNotCondition(e[t]);case"$or":return this._buildOrCondition(e[t]);case"$and":return this._buildAndCondition(e[t]);case"$encloses":return this._buildEnclosesClause(e[t]);case"$intersects":return this._buildIntersectsClause(e[t]);case"$extent":return this._buildExtentClause(e[t]);default:return void console.warn("Spatial Query Parser: condition type not supported, given",t)}}static parse(e){return this._parse(e)}}class oe{_source;_predicate;static validate(e){return!0}fromString(e){if(this._source!==e){if(this._predicate=void 0,void 0!==e&&0!==e.length)return oe.validate(e)?void(this._source=e):(console.warn("Validation of spatial query failed, given:",e),void(this._source=void 0));this._source=void 0}}fromObject(e){if(void 0===e||0===Object.keys(e).length)return this._source=void 0,void(this._predicate=void 0);const t=JSON.stringify(e);this.fromString(t)}isEmpty(){return void 0===this._source}isReady(){return!!this._predicate}initialize(){if(this.isEmpty()||this.isReady())return;const e=JSON.parse(this._source,((e,t)=>"number"==typeof t?parseFloat(t):t));this._predicate=re.parse(e)}get isFragmentPassing(){return this._predicate}}const se=/(?["'])\?(.*?)\k/g;class ae{_source;_fragmentIDs;_extension;_initializing=!1;static validate(e){return!0}static async preprocessAttributeLookups(e,t,i){const n=await e.getAttributeDefinitions(t)||new Array,r=i.matchAll(se);for(const e of r){const t=e[2].trim();let r=n.filter((e=>e.name===t)).map((t=>`${e[0][0]}s.props.${t.propertyHash}${e[0][0]}`));if(1===r.length)i=i.replace(e[0],r[0]);else console.error(`Expected unique property from hash lookup, found ${r.length}, given`,e[2]),i=i.replace(e[0],'"s.props.unresolved"')}return i}fromString(e){if(this._source!==e){if(this._fragmentIDs=void 0,void 0!==e&&0!==e.length)return ae.validate(e)?void(this._source=e):(console.warn("Validation of property query failed, given:",e),void(this._source=void 0));this._source=void 0}}fromObject(e){if(void 0===e||0===Object.keys(e).length)return this._source=void 0,void(this._fragmentIDs=void 0);const t=JSON.stringify(e);this.fromString(t)}fromDbIDs(e,t){if(void 0===e||void 0===t)return void(this._fragmentIDs=void 0);const i=e.getInstanceTree(),n=new Array;t.forEach((e=>i.enumNodeFragments(e,(e=>{n.push(e)}),!0))),this._fragmentIDs=new Set(n)}isEmpty(){return void 0===this._source}isReady(){return!!this._fragmentIDs}isInitializing(){return this._initializing}async initialize(e){var t;if(this.isEmpty()||this.isReady())return;if(this._initializing=!0,void 0===this._extension){const t=e.loader.viewer3DImpl.api;this._extension=await t.loadExtension("Autodesk.Filter")}if(void 0===this._extension)return void console.warn("Expected loading Autodesk.Filter extension to succeed.");const i=await ae.preprocessAttributeLookups(this._extension,e,this._source),n=JSON.parse(i,((e,t)=>"number"==typeof t?parseFloat(t):t)),r=await this._extension.getModelIdsWithFilter(e,n,void 0,void 0,!1),o=null===(t=r.ids)||void 0===t?void 0:t.concat(r.ids2??[]);this.fromDbIDs(e,o),this._initializing=!1}isFragmentPassing(e,t){return this._fragmentIDs.has(t)}}class le{_asyncInit;_match;_initializing=!1;_initialized=!1;fromObjects(e,t){this._asyncInit===e&&this._match===t||(this._asyncInit=e,this._match=t,this._initialized=!1)}isEmpty(){return void 0===this._match}isReady(){return!(void 0!==this._asyncInit)||!this._initializing&&this._initialized}needsInitializing(){return!(void 0!==this._asyncInit&&(this._initializing||this._initialized))}isInitializing(){return this._initializing}async initialize(e){if(!this.needsInitializing())return;this._initializing=!0;const t=e.loader.viewer3DImpl.api;await this._asyncInit(e,t),this._initializing=!1,this._initialized=!0}isFragmentPassing(e,t){return this._match(e,t)}}const ce=Object.freeze({FRAGMENT_LIST_READY:1,BOUNDING_VOLUME_HIERARCHY_READY:2,PROPERTIES_READY:4}),he=Object.freeze({ON_FRAGMENT_READY:"immediate",ON_FRAGMENT_LIST_READY:"fast",ON_BOUNDING_VOLUME_HIERARCHY_READY:"exact"}),ue=he.ON_BOUNDING_VOLUME_HIERARCHY_READY,de=Object.freeze({ANY:0,ALL:1}),fe=de.ALL;class pe{_model;_rootCondition=fe;_active=!1;_spatialQuery=new oe;_spatialQueryLoadTimeBehavior=ue;_propertyQuery=new ae;_lambdaQuery=new le;_state=0;constructor(e){this.evaluate=e,this._state=0,this._isFragmentPassingImpl=this._isFragmentPassing_true}onModelRootReady(e){this._model=e}onFragmentReady(e){this._isFragmentPassingImpl===this._isFragmentPassing_spatial&&this.evaluate(e)}onFragmentListReady(){this.update(ce.FRAGMENT_LIST_READY)}onBoundingVolumeHierarchyReady(){this.update(ce.BOUNDING_VOLUME_HIERARCHY_READY)}onPropertiesReady(){this.update(ce.PROPERTIES_READY)}setRootCondition(e){void 0!==e&&this._rootCondition!==e&&(this._rootCondition=e)}setSpatialQueryBehavior(e){void 0!==e&&this._spatialQueryLoadTimeBehavior!==e&&(this._spatialQueryLoadTimeBehavior=e)}setSpatialQuery(e){this._spatialQuery.fromObject(e),this._active||=!this._spatialQuery.isEmpty()}setPropertyQuery(e){this._propertyQuery.fromObject(e),this._active||=!this._propertyQuery.isEmpty()}setLambdaQuery(e,t){this._lambdaQuery.fromObjects(e,t),this._active||=!this._lambdaQuery.isEmpty()}prepare(e){var t,i,n,r,o,s;this.setSpatialQuery(null===(t=e.filter)||void 0===t?void 0:t.spatial_query),this.setPropertyQuery(null===(i=e.filter)||void 0===i?void 0:i.property_query),this.setLambdaQuery(null===(n=e.filter)||void 0===n?void 0:n.asyncInit,null===(r=e.filter)||void 0===r?void 0:r.match);switch(null===(o=e.filter)||void 0===o?void 0:o.root_condition){case"or":this.setRootCondition(de.ANY);break;case"and":this.setRootCondition(de.ALL);break;default:this.setRootCondition(fe)}const a=null===(s=e.filter)||void 0===s?void 0:s.spatial_behavior;switch(a){case he.ON_FRAGMENT_READY:case he.ON_FRAGMENT_LIST_READY:case he.ON_BOUNDING_VOLUME_HIERARCHY_READY:this.setSpatialQueryBehavior(a);break;default:this.setSpatialQueryBehavior(ue)}const l=!this._spatialQuery.isEmpty(),c=this._propertyQuery.isEmpty(),h=this._rootCondition===de.ANY||c,u=this._spatialQueryLoadTimeBehavior===he.ON_FRAGMENT_READY;l&&u&&h&&(this._spatialQuery.initialize(),this._isFragmentPassingImpl=this._isFragmentPassing_spatial)}update(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e&&this._state&e)return;this._state|=e;if(this._spatialQuery.isEmpty()&&this._propertyQuery.isEmpty()&&this._lambdaQuery.isEmpty()){if(this._isFragmentPassingImpl=this._isFragmentPassing_true,!this._active)return;return void this.evaluate()}this._state|=void 0!==e?e:0;const i=!this._lambdaQuery.isEmpty(),n=!this._lambdaQuery.needsInitializing()||!!(this._state&ce.FRAGMENT_LIST_READY);let r=!i;switch(this._spatialQueryLoadTimeBehavior){case he.ON_FRAGMENT_READY:r&&=!0;break;case he.ON_FRAGMENT_LIST_READY:r&&=!!(this._state&ce.FRAGMENT_LIST_READY);break;case he.ON_BOUNDING_VOLUME_HIERARCHY_READY:r&&=!!(this._state&ce.BOUNDING_VOLUME_HIERARCHY_READY)}const s=!i&&!!(this._state&ce.FRAGMENT_LIST_READY)&&!!(this._state&ce.PROPERTIES_READY),a=!this._spatialQuery.isEmpty();a&&r&&!this._spatialQuery.isReady()?(this._spatialQuery.initialize(),t=!0):!a||i||r||(t=!1);const l=!this._propertyQuery.isEmpty();if(l&&s&&!this._propertyQuery.isReady()&&!this._propertyQuery.isInitializing()){const e=this;return void this._propertyQuery.initialize(this._model).then((()=>e.update(void 0,!0)))}if(!l||i||s&&!this._propertyQuery.isInitializing()||(t=!1),i&&n&&!this._lambdaQuery.isReady()&&!this._lambdaQuery.isInitializing()){const e=this;return void this._lambdaQuery.initialize(this._model).catch((e=>{o.logger.warn("Filter initialization failed, falling back to load the whole model",e),this.setLambdaQuery(void 0)})).then((()=>e.update(void 0,!0)))}if(i&&n&&this._lambdaQuery.isReady())console.warn("Lambda queries are currently disabled."),this._isFragmentPassingImpl=this._isFragmentPassing_lambda,t=!0;else{const e=a&&r&&this._spatialQuery.isReady(),t=l&&s&&this._propertyQuery.isReady();switch(this._rootCondition|a<<1|e<<2|l<<3|t<<4){case 6:case 14:case 7:this._isFragmentPassingImpl=this._isFragmentPassing_spatial;break;case 24:case 26:case 25:this._isFragmentPassingImpl=this._isFragmentPassing_property;break;case 30:this._isFragmentPassingImpl=this._isFragmentPassing_any;break;case 31:this._isFragmentPassingImpl=this._isFragmentPassing_all;break;default:this._isFragmentPassingImpl=this._isFragmentPassing_false}}this._isFragmentPassingImpl!==this._isFragmentPassing_false&&t&&this.evaluate()}evaluate(){throw new TypeError("Method expected to be replaced.")}_isFragmentPassing_true(){return!0}_isFragmentPassing_false(){return!1}_isFragmentPassing_spatial(e){return this._spatialQuery.isFragmentPassing(this._model,e)}_isFragmentPassing_property(e){return this._propertyQuery.isFragmentPassing(this._model,e)}_isFragmentPassing_all(e){return this._spatialQuery.isFragmentPassing(this._model,e)&&this._propertyQuery.isFragmentPassing(this._model,e)}_isFragmentPassing_any(e){return this._spatialQuery.isFragmentPassing(this._model,e)||this._propertyQuery.isFragmentPassing(this._model,e)}_isFragmentPassing_lambda(e){return this._lambdaQuery.isFragmentPassing(this._model,e)}_isFragmentPassingImpl(e){throw new TypeError("This method must be set to a specific evaluation.")}isFragmentPassing(e){if(this._isFragmentPassingImpl===this._isFragmentPassing_true||this._isFragmentPassingImpl===this._isFragmentPassing_false||this._isFragmentPassingImpl===this._isFragmentPassing_lambda)return this._isFragmentPassingImpl(e);return this._isFragmentPassingImpl(e)}get isActive(){return this._active}}const me=Autodesk.Viewing,ge=Autodesk.Viewing.Private;function ve(e){this.viewer3DImpl=e,this.loading=!1,this.tmpMatrix=new n.LmvMatrix4,this.tmpBox=new r.LmvBox3,this.logger=o.logger,this.loadTime=0,this.pendingMaterials=new Map,this.pendingMeshes=new Array,this.pendingRequests=0,this.operationsDone=0,this.viewpointMatHashes=new Set,this.notifiesFirstPixel=!0,this._selectiveLoadingController=new pe(ve.prototype.evaluate.bind(this)),this._lineageUrn=null}function ye(e){var t="",i=e.lastIndexOf("/");return-1!=i&&(t=e.substr(0,i+1)),t}function be(e){return e.acmSessionId?"acmsession="+e.acmSessionId:""}function xe(e,t,i){var n={basePath:t,objectIds:e.ids,globalOffset:e.globalOffset,fragmentTransformsDouble:e.fragmentTransformsDouble,placementTransform:e.placementTransform,applyRefPoint:e.applyRefPoint,queryParams:i,bvhOptions:e.bvhOptions||{isWeakDevice:(0,$.isMobileDevice)()},applyScaling:e.applyScaling,applyPlacementInModelUnits:e.applyPlacementInModelUnits,loadInstanceTree:e.loadInstanceTree};return(0,u.initLoadContext)(n)}function _e(e){return Math.floor(100*e.fragsLoaded/e.metadata.stats.num_fragments)}ve.prototype.dtor=function(){this.bvhWorker&&(this.bvhWorker.terminate(),this.bvhWorker=null,o.logger.debug("SVF loader dtor: on svf worker.")),this.svf&&(this.svf.loadDone||console.log("stopping load before it was complete"),this.svf.abort(),this.svf.propDbLoader&&(this.svf.propDbLoader.dtor(),this.svf.propDbLoader=null)),this.viewer3DImpl.geomCache()&&this.model&&(this.loading&&this.viewer3DImpl.geomCache().cancelRequests(this.svf.geomMetadata.hashToIndex.keys()),this.pendingRequests=0,this.removeMeshReceiveListener()),this.viewer3DImpl=null,this.model=null,this.svf=null,this.logger=null,this.tmpMatrix=null,this.loading=!1,this.loadTime=0},ve.prototype.isValid=function(){return null!=this.viewer3DImpl},ve.prototype.removeMeshReceiveListener=function(){this.meshReceivedListener&&(this.viewer3DImpl.geomCache().loaderRemoved(),this.viewer3DImpl.geomCache().removeEventListener(J.MESH_RECEIVE_EVENT,this.meshReceivedListener),this.viewer3DImpl.geomCache().removeEventListener(J.MESH_FAILED_EVENT,this.meshFailedListener),this.viewer3DImpl.geomCache().removeEventListener(J.MATERIAL_RECEIVE_EVENT,this.materialReceiveListener),this.viewer3DImpl.geomCache().removeEventListener(J.MATERIAL_FAILED_EVENT,this.materialReceiveListener),this.meshReceivedListener=null,this.meshFailedListener=null)},ve.prototype.loadFile=function(e,t,i,n){if(!this.viewer3DImpl)return o.logger.log("SVF loader was already destructed. So no longer usable."),!1;if(this.viewer3DImpl._signalNoMeshes(),this.loading)return o.logger.log("Loading of SVF already in progress. Ignoring new request."),!1;if(this.loading=!0,t.acmSessionId)this.svfUrn=t.acmSessionId.split(",")[0];else{console.warn("DEPRECATED: Automatic derivation of URN will be removed in a future release. Please set the acmSessionId parameter when loading OTG data.");var r=e.indexOf(W);if(-1===r&&(r=e.indexOf(j)),-1!==r){var s=e.split("/"),a=s[1]+"?version="+s[2],l=me.toUrlSafeBase64(a);this.svfUrn=l}}return this.sharedDbPath=t.sharedPropertyDbPath,this.currentLoadPath=e,this.basePath=ye(e),this.acmSessionId=t.acmSessionId,this.options=t,this.queryParams=be(t),this.loadContext=xe(t,this.basePath,this.queryParams),this.loadContext.raiseError=function(e,t,n){i&&i({code:e,msg:t,args:n})},this.loadContext.onFailureCallback=d.ViewingService.defaultFailureCallback.bind(this.loadContext),this.viewer3DImpl.isWebGPU()&&(this.loadContext.buildDbId2FragIdMap=!0),this._selectiveLoadingController.prepare(t),this.loadModelRoot(this.loadContext,i),n&&n(),!0},ve.prototype._requestRepaint=function(){var e;null!==(e=this.viewer3DImpl)&&void 0!==e&&e.modelVisible(this.model.id)&&this.viewer3DImpl.api.dispatchEvent({type:me.LOADER_REPAINT_REQUEST_EVENT,loader:this,model:this.model})},ve.prototype.loadModelRoot=function(e,t){this.t0=(new Date).getTime(),this.firstPixelTimestamp=null;var i=this;i.viewer3DImpl.geomCache();var n=this.svf=new q;return n.basePath=e.basePath,e.onLoaderEvent=function(e,r){if(i.svf){if("otg_root"===e){i.onModelRootLoadDone(n),t&&t(null,i.model),i.makeBVHInWorker();var s=i.viewer3DImpl.geomCache();s||o.logger.error("geomCache is required for loading OTG models."),s.loaderAdded(i.options.acmSessionId,i._lineageUrn),i.meshReceivedListener=e=>i.onMeshReceived(e.geom),i.meshFailedListener=e=>i.onMeshError(e.hash),s.addEventListener(J.MESH_RECEIVE_EVENT,i.meshReceivedListener),s.addEventListener(J.MESH_FAILED_EVENT,i.meshFailedListener),i.materialReceiveListener=function(e){e.material&&e.material.length?i.onMaterialLoaded((0,ee.TN)(e.material),e.hash):i.onMaterialLoaded(null,e.hash)},s.addEventListener(J.MATERIAL_RECEIVE_EVENT,i.materialReceiveListener),s.addEventListener(J.MATERIAL_FAILED_EVENT,i.materialReceiveListener),i.svf.loadDone=!1}else if("fragment"===e){if(!i.options.skipMeshLoad){const e=r;i._selectiveLoadingController.isActive?i._selectiveLoadingController.onFragmentReady(e):i.tryToActivateFragment(e,"fragment")}i.options.onFragmentListLoadProgress&&i.trackFragmentListLoadProgress()}else if("all_fragments"===e)i.options.skipPropertyDb||(i.loadPropertyDb(),i._selectiveLoadingController.onPropertiesReady()),i.fragmentDataLoaded=!0,i._selectiveLoadingController.onFragmentListReady(),i.viewer3DImpl.api.fireEvent({type:Q.MODEL_ROOT_LOADED_EVENT,svf:n,model:i.model}),i.options.skipMeshLoad||!i.svf.fragments.length?i.onGeomLoadDone():i.onOperationComplete();else if("viewpointData"===e){if(i.svf.needExtraMaterials){Object.values(i.svf.extraMatHashes).forEach((e=>i.viewpointMatHashes.add(e))),i.tryToLoadExtraMaterials()}else i.onOperationComplete();i.svf.viewpointTreeRoot&&i.options.addViews&&i.options.addViews(i.svf.viewpointTreeRoot,i.model)}}else console.error("load callback called after load was aborted")},e.onOperationComplete=function(){i.onOperationComplete()},this.svf.beginLoad(this.loadContext,(0,d.pathToURL)(this.currentLoadPath)),!0},ve.prototype.makeBVHInWorker=function(){var e=this;e.bvhWorker=(0,h.createWorker)("OtgBvhWorker");e.bvhWorker.addEventListener("message",(function(t){console.log("Received BVH from worker");var i=t.data.bvh;e.model&&(e.svf.bvh=i,e.model.setBVH(new a.NodeArray(i.nodes,i.useLeanNodes),i.primitives,e.options.bvhOptions),e.model.setFragmentBoundingBoxes(t.data.boxes,t.data.boxStride),e._selectiveLoadingController.onBoundingVolumeHierarchyReady(),e._requestRepaint()),e.bvhWorker.terminate(),e.bvhWorker=null,e.onOperationComplete()}));var t=Object.assign({},e.loadContext);t.operation="LOAD_OTG_BVH",t.raiseError=null,t.onFailureCallback=null,t.onLoaderEvent=null,t.onOperationComplete=null,t.fragments_extra=(0,d.pathToURL)(e.basePath)+e.svf.manifest.assets.fragments_extra,t.placementTransform=e.svf.placementTransform,t.placementWithOffset=e.svf.placementWithOffset,t.fragmentTransformsOffset=e.svf.metadata.fragmentTransformsOffset,t.globalOffset=e.svf.globalOffset,te.USE_HLOD&&(t.wantSort=!0),t.fragments_extra?e.bvhWorker.doOperation(t):e.onOperationComplete()},ve.prototype.tryToActivateFragment=function(e,t){var i=this.svf,n=this.model;if(!n)return;const r=i.fragments.visibilityFlags[e],o=r&l.MeshFlags.MESH_NOTLOADED||this._selectiveLoadingController.isActive&&!this._selectiveLoadingController.isFragmentPassing(e),s=!!(r&l.MeshFlags.MESH_HIDE),a=i.loadOptions.skipHiddenFragments??!1;if(o||s&&a)return n.getFragmentList().setFlagFragment(e,l.MeshFlags.MESH_NOTLOADED,!0),n.getFragmentList().setFragOff(e,!0),void this.trackGeomLoadProgress(i,e,!1);s&&(n.getFragmentList().setFlagFragment(e,l.MeshFlags.MESH_HIDE,!1),n.getFragmentList().setFlagFragment(e,l.MeshFlags.MESH_VISIBLE,!1));var c=!1,h=i.fragments.materials[e],u=i.getMaterialHash(h),d=this.findOrLoadMaterial(n,u);d||("fragment"===t&&(this.pendingMaterials.get(u).push(e),this.pendingRequests++),"material"!==t&&(c=!0));var f=i.fragments.geomDataIndexes[e];if(0!==f){var p=n.getGeometryList().getGeometry(f);if(p?"fragment"===t&&n.getGeometryList().addInstance(f):("fragment"===t&&this.loadGeometry(f,e),c=!0),!c){n.getFragmentList().getOriginalWorldMatrix(e,this.tmpMatrix);var m=this.viewer3DImpl.setupMesh(n,p,u,this.tmpMatrix);m.geomId=f,n.activateFragment(e,m,!!i.placementTransform),this.viewer3DImpl.geomCache().updateGeomImportance(n,e),this.trackGeomLoadProgress(i,e,!1)}}else(d||"material"===t)&&this.trackGeomLoadProgress(i,e,!1)},ve.prototype.tryToLoadExtraMaterials=function(){var e=this.svf,t=this.model;if(t&&!e.extraMaterialLoaded){e.extraMaterialLoaded=!0;for(const i of Object.values(e.extraMatHashes))this.findOrLoadMaterial(t,i)}},ve.prototype.onModelRootLoadDone=function(e){var t;e.isOTG=!0,e.geomMetadata.hashToIndex=new Map,e.failedFrags={},e.failedMeshes={},e.failedMaterials={},e.fragsLoaded=0,e.fragsLoadedNoGeom=0,e.nextRepaintPolys=0,e.numRepaints=0,e.urn=this.svfUrn,e.acmSessionId=this.acmSessionId,e.basePath=this.basePath,e.loadOptions=this.options||{};var i=Date.now();o.logger.log("SVF load: "+(i-this.t0));var n=this.model=new Y.Model(e);n.loader=this,n.initialize(),this._selectiveLoadingController.onModelRootReady(n),this.t1=i,o.logger.log("scene bounds: "+JSON.stringify(e.bbox));var r={category:"metadata_load_stats",urn:e.urn,has_topology:!!e.topology,has_animations:!!e.animations,materials:e.metadata.stats.num_materials,is_mobile:(0,$.isMobileDevice)()};o.logger.track(r),this.viewer3DImpl.signalProgress(5,Z.ProgressState.ROOT_LOADED,this.model),e.handleHashListRequestFailures(this.loadContext),e.propDbLoader=new c.PropDbLoader(this.sharedDbPath,this.model,this.viewer3DImpl.api),this._lineageUrn=null===(t=n.getDocumentNode())||void 0===t?void 0:t.lineageUrn(),this._lineageUrn||(this._lineageUrn=K.BubbleNode.parseLineageUrnFromDecodedUrn(Autodesk.Viewing.fromUrlSafeBase64(e.urn)))},ve.prototype.trackGeomLoadProgress=function(e,t,i){if(i){if(e.failedFrags[t])return void console.log("Double fail",t);e.failedFrags[t]=1}var n=_e(e);e.fragsLoaded++;var r=_e(e);r>n&&this.viewer3DImpl.signalProgress(r,Z.ProgressState.LOADING,this.model),this.model.getGeometryList().geomPolyCount>e.nextRepaintPolys&&(this.firstPixelTimestamp||(this.firstPixelTimestamp=Date.now()),e.numRepaints++,e.nextRepaintPolys+=1e5*Math.pow(1.5,e.numRepaints),this._requestRepaint()),e.fragsLoaded===e.metadata.stats.num_fragments&&this.onOperationComplete(),this.trackOnDemandLoadProgress()},ve.prototype.trackFragmentListLoadProgress=function(){var e=this.svf;function t(e){return Math.floor(100*e.fragsLoadedNoGeom/e.metadata.stats.num_fragments)}var i=t(e);e.fragsLoadedNoGeom++;var n=t(e);n>i&&this.options.onFragmentListLoadProgress(this.model,n)},ve.prototype.onOperationComplete=function(){this.operationsDone++,4===this.operationsDone&&this.onGeomLoadDone()},ve.prototype.onMaterialLoaded=async function(e,t,i){if(this.loading){var n=this.pendingMaterials.get(t);if(n){var r=this.viewer3DImpl.matman();if(e){e.hash=t;try{var o=await r.convertSharedMaterial(this.model,e,t);s.TextureLoader.loadMaterialTextures(this.model,o,this.viewer3DImpl),r.hasTwoSidedMaterials()&&this.viewer3DImpl.renderer().toggleTwoSided(!0)}catch(e){this.svf.failedMaterials[t]=1}}else this.svf.failedMaterials[t]=1;for(var a=0;a0&&(n.first_pixel_time=i),o.logger.track(n,!0);const r=this.model.getGeometryList(),a={load_time:this.loadTime,polygons:r.geomPolyCount,fragments:this.model.getFragmentList().getCount(),mem_usage:r.gpuMeshMemory,time_to_first_pixel:this.firstPixelTimestamp-this.t0,viewable_type:"3d",url:this.currentLoadPath,urn:this.svfUrn};ge.analytics.track("viewer.model.loaded",a),this.currentLoadPath=null,this.viewer3DImpl.onLoadComplete(this.model)},ve.prototype.loadPropertyDb=function(){this.svf.propDbLoader.load()},ve.prototype.is3d=function(){return!0},ve.loadOnlyOtgRoot=function(e,t){const i=ye(e),n=xe(t,i,be(t)),r=new q;r.basePath=i;const o=(0,d.pathToURL)(e);return new Promise(((e,t)=>{n.onFailureCallback=()=>e(null),r.loadAsyncResource(n,o,"json",(function(t){r.metadata=t,r.manifest=t.manifest,r.numGeoms=r.metadata.stats.num_geoms,r.processMetadata(n),e(r)}))}))},ve.prototype.waitForFragmentData=async function(){if(this.fragmentDataLoaded)return!0;const e=this.viewer3DImpl.api;return new Promise((t=>{const i=()=>{e.removeEventListener(me.MODEL_ROOT_LOADED_EVENT,n),e.removeEventListener(me.MODEL_UNLOADED_EVENT,r)},n=e=>{e.model.loader===this&&(i(),t(!0))},r=e=>{e.model.loader===this&&(i(),t(!1))};e.addEventListener(me.MODEL_ROOT_LOADED_EVENT,n),e.addEventListener(me.MODEL_UNLOADED_EVENT,r)}))},ve.prototype.trackOnDemandLoadProgress=function(){this.svf.loadDone&&!1===this.fragLoadingInProgress&&0===this.pendingRequests&&this.viewer3DImpl.api.dispatchEvent({type:me.FRAGMENTS_LOADED_EVENT,loader:this,model:this.model})},ve.prototype.evaluate=function(e){if(!this.model||this.options.skipMeshLoad)return;if(void 0!==e)return void this.tryToActivateFragment(e,"fragment");const t=this.model.getFragmentList().fragments.length;for(let e=0;e{"use strict";i.r(t),i.d(t,{MATERIAL_FAILED_EVENT:()=>I,MATERIAL_RECEIVE_EVENT:()=>L,MESH_FAILED_EVENT:()=>D,MESH_RECEIVE_EVENT:()=>P,OtgResourceCache:()=>W});var n=i(55280),r=i(77201),o=i(7756),s=i(8412),a=i(25004),l=i(8600),c=i(96118),h=i(21706),u=i(4897),d=i(12153);function f(e,t,i){return Math.abs(e.x-t.x)3e3||!this.fullSortDone;this.fullSortDone=!s,this.prevNumTasks=this.waitingTasks.length;for(let n=this.waitingTasksHead;n10){o=!0;break}a.importanceNeedsUpdate=!1,a.importance=0;var l=0,c=a.hash;for(const e of i)if(e.isOTG()){var h=e.myData.geomMetadata.hashToIndex.get(c);if(h){var u=e.loader.pendingMeshes[h];if(u){var d=e.myData.fragments.boxes;for(const i of this.viewers)if(-1!==i.impl.modelQueue().getModels().indexOf(e))for(const e of u)l+=g(e,d,t[i.id])}}}if(a.importance=l,!s){for(var f=n;f>this.waitingTasksHead&&l>this.waitingTasks[f-1].importance;)this.waitingTasks[f]=this.waitingTasks[f-1],f--;this.waitingTasks[f]=a}}}return s&&!o&&(this._sortTasks(),this.fullSortDone=!0),!o}makeUrgent(e){var t=0;for(var i in e)!0===e[i]&&(this.urgentHashes[i]=!0,t++);if(0===t)return 0;for(var n=this.waitingTasksHead;n1e4&&this._removeGarbage(),this.waitingTasks[this.waitingTasksHead++]}isEmpty(){return this.waitCount()<=0}waitCount(){return this.waitingTasks.length-this.waitingTasksHead}}const y="otg",b="otg-content",x="otg-lru";class _{constructor(e){this.db=null,this.readTransaction=null,this.loaded=!1,this.opening=!1,this.dbDisabled=this._isDbDisabled(e),!(0,n.isNodeJS)()&&this.dbDisabled&&console.log("IndexedDb disabled"),this.storeName=b,this.storeNameTimestamp=x,this.bothStoreNames=[this.storeName,this.storeNameTimestamp],this.pendingTimestampUpdates={},this.pendingTimestampCount=0,this.pendingStores=[],this._pendingCallbacks=[]}_isDbDisabled(e){return e||(0,n.isNodeJS)()||(0,n.isSafari)()||(0,n.isMobileDevice)()||"undefined"==typeof indexedDB}notifyPendingCallbacks(e){this._pendingCallbacks.forEach((t=>t(e,this.db))),this._pendingCallbacks=[]}open(e){if(this.dbDisabled)return void(e&&e());if(this.loaded)return void(e&&e(null,this.db));if(e&&this._pendingCallbacks.push(e),this.opening)return;this.opening=!0;let t=indexedDB.open(y,1);t.onerror=e=>{console.error("Failed to open or create cache database."),this.dbDisabled=!0,this.notifyPendingCallbacks(e)},t.onsuccess=e=>{this.opening=!1,this.db=e.target.result,this.db.onerror=function(e){console.error("Database error",e)},this.loaded=!0,this.notifyPendingCallbacks()},t.onupgradeneeded=e=>{console.log("Db upgrade",this.storeName);let t=e.target.result;t.createObjectStore(b),t.createObjectStore(x).createIndex(x+"-index","t",{unique:!1})}}deleteOld(e){if(!this.db)return void e();if(this.deleteInProgress)return;this.deleteInProgress=!0;let t=IDBKeyRange.upperBound(Date.now()-3e5,!0),i=[];this.db.transaction([this.storeNameTimestamp]).objectStore(this.storeNameTimestamp).index(this.storeNameTimestamp+"-index").openCursor(t).onsuccess=t=>{let n=t.target.result;if(n&&i.length<200)return i.push(n.primaryKey),void n.continue();if(i.length){console.log("Deleting old objects.",i.length);let t=this.db.transaction(this.bothStoreNames,"readwrite");t.oncomplete=t=>{this.deleteInProgress=!1,console.log("Delete done"),e&&e()},t.onerror=e=>{this.deleteInProgress=!1,console.error("Transaction error.",e)},t.onabort=e=>{this.deleteInProgress=!1;let t=e.target.error;console.log("Failed to delete cached objects",t)};let n=t.objectStore(this.storeName),r=t.objectStore(this.storeNameTimestamp);for(let e=0;e{e()}),t.onerror=t=>{console.error("Transaction error.",t),e&&e(t.target.error)},t.onabort=t=>{"QuotaExceededError"===t.target.error.name&&this.deleteOld((()=>{})),e&&e(t.target.error)},this.writeTransaction=t}for(var t=0;t{console.error("Object store error.",e)},this.writeTransaction.objectStore(this.storeNameTimestamp).put({t:Date.now()},i)}this.pendingStores=[],this.writeTransaction=null}else e&&e()}store(e,t,i){this.db?(t=t.slice(),this.pendingStores.push(e),this.pendingStores.push(t),this.pendingStores.length<200||this.deleteInProgress?i&&i():this.flush(i)):i&&i()}flushTimestamps(e){let t=this.db.transaction([this.storeNameTimestamp],"readwrite");e&&(t.oncomplete=t=>{e()}),t.onerror=t=>{console.error("Transaction error.",t),e&&e(t.target.error)},t.onabort=t=>{"QuotaExceededError"===t.target.error.name&&(console.log("Quota exceeded"),this.deleteOld((()=>{}))),e&&e(t.target.error)};let i=t.objectStore(this.storeNameTimestamp);for(let e in this.pendingTimestampUpdates)i.put({t:this.pendingTimestampUpdates[e]},e);this.pendingTimestampUpdates={},this.pendingTimestampCount=0}_createReadTransaction(){let e=this.readTransaction=this.db.transaction(this.storeName);e.oncomplete=e=>{this.readTransaction=null},e.onerror=e=>{console.error("Transaction error.",e),this.readTransaction=null},e.onabort=e=>{console.warn("Transaction abort",e),this.readTransaction=null}}get(e,t){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void t(-1,null);if(!this.db)return void t(-1,null);let i;this.readTransaction||this._createReadTransaction();try{i=this.readTransaction.objectStore(this.storeName).get(e)}catch(t){this._createReadTransaction(),i=this.readTransaction.objectStore(this.storeName).get(e)}i.onsuccess=i=>{if(!i.target.result)return void t(-1,null);let n=i.target.result;t(null,n),this.pendingTimestampUpdates[e]=Date.now(),this.pendingTimestampCount++},i.onerror=e=>{t(e.target.errorCode)}}flushStoresAndTimestamps(){this.db&&this.flush((e=>{e||this.flushTimestamps()}))}size(e){if(!this.db)return void e();let t=0,i=0,n=this.db.transaction([this.storeName]).objectStore(this.storeName).openCursor();n.onsuccess=n=>{let r=n.target.result;if(r){let e=r.value;t+=e.length,i++,r.continue()}else e(null,{size:t,items:i})},n.onerror=function(t){e(t)}}estimateCachedHashCount(e){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void e(void 0);if(!this.db)return void e(void 0);let t,i=this.db.transaction(this.storeNameTimestamp);try{t=i.objectStore(this.storeNameTimestamp).openKeyCursor()}catch(t){return void e(void 0)}let n=2;const r=1e3;t.onsuccess=t=>{const o=t.target.result;if(o)if(--n>0)o.advance(999);else{const t=o.key.charCodeAt(0);e(65536e3/t),i.abort()}else e(2==n?0:1==n?r:void 0)},t.onerror=t=>{e(void 0)}}readAllCachedHashes(e){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void e([]);if(!this.db)return void e([]);let t,i=this.db.transaction(this.storeNameTimestamp);try{t=i.objectStore(this.storeNameTimestamp).getAllKeys()}catch(t){return void e([])}t.onsuccess=t=>{e(t.target.result)},t.onerror=t=>{e([])}}}var E=i(83081);const S=0,A=1,w={ws:{min:2,max:16},size:{min:500,max:4096}};class T{static FALLBACK_FLIGHT=3e3;static MIN_FLIGHT=1500;static MAX_FLIGHT=3e4;#p;CWND_DEVIATION=30;BETA=.8;FAST_CONVERGENCE=.7;wMax=0;lastReductionTs=performance.now();SCALING=.25;cwnd=0;initialAssetEstimate;#m=0;#g=1e3;#v=new M(1e3);#y=new M(20);wasReset=!1;#b=w.ws.min;#x={count:0,totalBytes:0};constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;this.onFlightSizeUpdated=n,this.onConnectionCountUpdated=r,this.#m=e,this.#x.totalBytes=i,this.#x.count=Math.round(i/t),this.initialAssetEstimate=t,this.wMax=this.#x.totalBytes,this.cwnd=this.wMax*this.BETA,this.#_()}hasCongestionEvent(){if(this.#v.count<3)return!1;const e=this.#v.tail.data,t=this.#v.head.data;if(this.cwndthis.CWND_DEVIATION}shouldTimeout(){if(this.#y.count0)return!1;e=e.prev}return t>=this.#y.MAX_SIZE/2}getMode(){return this.cwnd>this.wMax?A:S}#_(){if(this.shouldTimeout())return this.onFlightSizeUpdated(T.FALLBACK_FLIGHT),clearInterval(this.#p),void this.#E();const e=this.#S();let t=0,i=0,n=0;for(let{data:e}of this.#y){if(3==t++)break;i+=e.receivedBytes,n+=e.receivedCount}const r=Math.round(i/n||e.fragmentSize);let o;const s=e=>e/1e6,a=Math.cbrt(s(this.wMax)*(1-this.BETA)/this.SCALING),l=(performance.now()-this.lastReductionTs)/1e3;if(o=this.cwnd=1e6*(this.SCALING*Math.pow(l-a,3)+s(this.wMax)),this.hasCongestionEvent()){const e=this.getMode()===A?this.BETA:this.FAST_CONVERGENCE;this.lastReductionTs=performance.now(),this.wMax=this.#v.tail.prev.data.receivedBytes,this.#v.clear(),o=e*this.wMax}let c=Math.round(o/r);this.#m=c=Math.min(T.MAX_FLIGHT,Math.max(T.MIN_FLIGHT,c)),E.logger.debug(`${this.#v.head?"Increase":"Congestion"}: CWND=${(o/1e6).toFixed(2)}Mb RX=${(e.receivedBytes/1e6).toFixed(2)}Mb FLIGHT=${c} ( Average Size: ${r} )`),this.onFlightSizeUpdated(c),this.updateConnectionCount()}updateConnectionCount(){const{ws:e,size:t}=w;let i=1;let n=0;for(let{data:e}of this.#y){if(++n>6)break;i=Math.max(e.fragmentSize,i,t.min)}if(i>t.max)return;const r=(t.max-t.min)/(e.max-e.min),o=Math.round((t.max-i)/r);let s=0;for(let{data:e}of this.#y)if(6==++s||e.fragmentSize>i)break;let a=e.min+Math.round(o*Math.pow(s/6,3));a>this.#b&&(this.#b=a,this.onConnectionCountUpdated(a),E.logger.debug(`Updating connection count: ${a}`))}#E(){let e=0,t=0;for(let{data:i}of this.#y)t++{this.#_()}),this.#g))}deviation(e,t){return Math.abs(e-t)/((e+t)/2)*100}static createAndStart(e,t,i,n,r){const o=new T(e,t,i,n,r);return o.#p=setInterval((()=>{o.#_()}),o.#g),o}}class M{MAX_SIZE=2e3;#A=0;totalBytes=0;head;tail;get count(){return this.#A}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2e3,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e,t)=>this.count>this.MAX_SIZE;this.MAX_SIZE=e,this.trimEval=t}clear(){this.#A=0,this.totalBytes=0,this.head=null,this.tail=null}onReceived(e,t){this.addNode(new C(e),t)}addNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;for(0===this.#A?this.head=e:1===this.#A?(this.tail=e,this.head.setNext(e)):(this.tail.setNext(e),this.tail=e),this.#A+=t;this.trimEval(this.head,this.tail);){var i;const e=this.head.next;this.head.unlink(),this.totalBytes-=this.head.size,this.#A-=(null===(i=this.head.data)||void 0===i?void 0:i.count)||1,this.head=e}this.totalBytes+=e.size}}M.prototype[Symbol.iterator]=function*(){let e=this.tail;for(;e;)yield e,e=e.prev};class C{data;size=0;prev;next;timestamp;constructor(e){this.data=e,e.size&&(this.size=e.size),this.timestamp=Date.now()}setNext(e){return this.next=e,e&&(this.next.prev=this),this}setPrev(e){return this.prev=e,e&&(this.prev.next=this),this}unlink(){var e,t;null===(e=this.prev)||void 0===e||e.setNext(this.next),null===(t=this.next)||void 0===t||t.setPrev(this.prev),this.prev=null,this.next=null}}var P="meshReceived",D="meshFailed",L="materialReceived",I="materialFailed";let R=Autodesk.Viewing.Private,O="false"!==(0,l.getParameterByName)("useOPFS")&&!1!==(0,n.getGlobal)().USE_OPFS;const N=(0,l.getParameterByName)("useAdaptiveStreaming")||(0,n.getGlobal)().USE_ADAPTIVE_STREAMING,F="false"!==N&&!1!==N,U="true"===(0,l.getParameterByName)("disableIndexedDb").toLowerCase()||(0,n.getGlobal)().DISABLE_INDEXED_DB,B="true"===(0,l.getParameterByName)("disableWebSocket").toLowerCase()||(0,n.getGlobal)().DISABLE_WEBSOCKET;let k=U||O||!(0,n.isChrome)();const V={dummy_value:"error"},G={dummy_value:"error"};function z(e){var t=(0,s.initLoadContext)(e);return t.disableIndexedDb=U,t.disableWebSocket=B,t}function H(e,t){return e.importance-t.importance}function W(e){var t,i=new Map,s=new Map,a=new Map,l="OPFS"===(null==e||null===(t=e.cache)||void 0===t?void 0:t.type);(O||l)&&(O=!0,k=!0);var c=(0,o.createWorker)("OtgLoadWorker");c.addEventListener("message",q);for(var h=(0,n.isMobileDevice)()?2:4,u=[],d=[],f=0;f{if(g||y||(y=Date.now()),g||this.requestsReceived<2*S)return g;const e=this.byteSize/this.requestsReceived*.9,t=this.byteSize/((Date.now()-y)/1e3);return F&&(g=T.createAndStart(E+x,e,t,(e=>S=e),(e=>{w.waitingTasks.length/(this.requestsSent+w.waitingTasks.length)*100>5&&c.doOperation({operation:"SET_OTGWS_COUNT",count:e})}))),g},this.byteSize=0,this.refCount=0,this.cachedHashesDb=void 0,this.cachedHashes=null,this.cachedHashesPending=!1,this.cachedHashesEstimate=void 0,this.cachedHashesEstimatePending=!1,this.fromCacheCount=0,this.fromRemoteCount=0,this.requestsSent=0,this.requestsReceived=0;var x=0,E=0;var S=F?T.MIN_FLIGHT:T.FALLBACK_FLIGHT,A=void 0,w=new v,M=this,C=1048576;this._maxMemory=100*C,this._minCleanup=50*C;var N=new Map,B=[];function W(e,t){return!e.cachedHashes||e.cachedHashes.has(t)}function q(e){var t,n,o;if(e.data.event&&e.data.properties)return void R.analytics.track(e.data.event,e.data.properties);if(w.isEmpty()||A||(A=setTimeout(Y,0)),e.data.error){var l=e.data.error,c=l.args.hash;return"m"===l.args.resourceType?(x--,s.set(c,G),M.fireEvent({type:I,hash:c}),console.error("Error loading material.",l.msg,l.args)):(E--,i.set(c,V),M.fireEvent({type:D,hash:c}),console.error("Error loading mesh.",l.msg,l.args)),a.delete(l.hash),void M.requestsReceived++}let h=0;if(e.data.materials)for(let t=0;t{this.cachedHashesDb.readAllCachedHashes((e=>{this.cachedHashes=new Set(e),this.cachedHashesPending=!1})),this.cachedHashesDb=void 0})))},this._clearHashCache=function(){this.cachedHashes=null},this._getHashCacheEstimate=function(){this.cachedHashesEstimatePending||(this.cachedHashesDb=new _(U,!1),this.cachedHashesDb.open(null),this.cachedHashesEstimatePending=!0,this.cachedHashesDb.open((()=>{this.cachedHashesDb.estimateCachedHashCount((e=>{this.cachedHashesEstimate=e,this.cachedHashesEstimatePending=void 0===e}))})))},this._handleCache=function(){if(this.cachedHashes||k)return;const e=this.fromCacheCount+this.fromRemoteCount;if(e<200)return;const t=w.waitCount()*this.fromRemoteCount/e;null!=this.cachedHashesEstimate?this.cachedHashesEstimate<50*t&&this._loadHashCache():t>1e3&&this._getHashCacheEstimate()},this.loaderAdded=function(e,t){this._numActiveLoaders++;var i={operation:"ADD_MODEL_OTG",modelUrn:e,lineageUrn:t,useOpfs:O};c.doOperation(z(i)),this.fromCacheCount=0,this.fromRemoteCount=0},this.loaderRemoved=function(){if(this._numActiveLoaders--,0===this._numActiveLoaders){this._clearHashCache();c.doOperation({operation:"FLUSH_CACHE_AND_DISCONNECT_OTG"})}},this.requestGeometry=function(e,t,r,o,s,l){var c=i.get(r);if(c!==V)if(c)(0,n.isNodeJS)()?setImmediate((()=>this.fireEvent({type:P,geom:c}))):this.fireEvent({type:P,geom:c});else{var h=a.get(r);if(h&&h.refcount)return h.importanceNeedsUpdate=!0,void h.refcount++;var u={operation:"LOAD_CDN_RESOURCE_OTG",type:"g",url:e,lineageUrn:l,hash:r,queryParams:s,importance:0,importanceNeedsUpdate:!0,refcount:1};w.addTask(u),a.set(r,u),A||(A=setTimeout(Y,0))}else(0,n.isNodeJS)()?setImmediate((()=>this.fireEvent({type:D,hash:r}))):this.fireEvent({type:D,hash:r})},this.requestMaterial=function(e,t,i,n,r,o){var l=s.get(i);if(l!==G)if(l)setImmediate((()=>this.fireEvent({type:L,material:l,hash:i})));else{var h=a.get(i);if(h&&h.refcount)h.refcount++;else{var u={operation:"LOAD_CDN_RESOURCE_OTG",type:"m",urls:[e],lineageUrns:[o],hashes:[i],queryParams:r,refcount:1,couldBeInCache:[W(this,i)]};a.set(i,u),c.doOperation(z(u)),x++,this.requestsSent++}}else setImmediate((()=>this.fireEvent({type:I,error:l,hash:i,repeated:!0})))},this.cancelRequests=function(e){for(var t of e){var i=a.get(t);i&&i.refcount--}w.filterTasks((e=>{const t=a.get(e),i=t&&t.refcount;return i||a.delete(e),i}))},this.updateGeomImportance=function(e,t){return function(e,t){var i=e.getFragmentList(),n=i.getGeometry(t);if(i.getWorldBounds(t,m),n){var r,o,s,a,l=n.importance||0,c=2*((o=(r=m).max.x-r.min.x)*(s=r.max.y-r.min.y)+s*(a=r.max.z-r.min.z)+a*o);n.importance=Math.max(l,c)}}(e,t)},this.cleanup=function(e){if(!(0===N.size||!e&&this.byteSize=n;r++){var o=t[r];i.delete(o.hash),N.delete(o.id),this.byteSize-=o.byteSize,o.dispose()}}},this.waitForGeometry=function(e,t){var n=0,r=w.makeUrgent(e);if(0===r&&e)t(e);else{Y(),this.addEventListener(P,a),this.addEventListener(D,l);for(let t in e){var o=i.get(t);o&&s(t,o)}}function s(i,o){w.removeUrgent(i),!0!=!e[i]&&(e[i]=o,++n=1){N.get(e.id)&&N.delete(e.id)}else 0===t&&N.set(e.id,e);e._modelRefCount=t},this.addMaterialData=function(e,t){s.set(e,t)},this.clearOpfsCache=function(){c.doOperation({operation:"CLEAR_OPFS_CACHE"})},this.reportLoadingState=function(){console.log("OtgResourceCache:",{sent:this.requestsSent,received:this.requestsReceived});c.doOperation({operation:"REPORT_LOADING_STATE"})}}function j(){return this._modelRefCount}a.EventDispatcher.prototype.apply(W.prototype);let q=!1;function X(e,t){t?t.setGeomRefCount(this,e):(q||(console.warn("geometry_setModelRefCount: geomCache is not defined"),q=!0),this._modelRefCount=1)}},13e3:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PropDbLoader:()=>T,clearPropertyWorkerCache:()=>_,getPropWorker:()=>b,shutdownPropWorker:()=>x});var n,r=i(83081),o=i(84045),s=i(57480),a=i(19556),l=i(8412),c=i(41428),h=i(65435),u=i(7756),d=i(25004),f="GET_PROPERTIES",p="UNLOAD_PROPERTYDB",m=1,g={};function v(e){var t=e.data;if(t&&t.debug)r.logger.debug(t.message);else{var i=t&&t.cbId&&g[t.cbId];i&&(t.progress?i[2]&&i[2](t.progress):(t.error?i[1]&&i[1](t.error):i[0]&&i[0](t.result),delete g[t.cbId]))}}function y(e,t,i){var n=m++;return g[n]=[e,t,i],n}function b(){return n}function x(){n&&(n.terminate(),n=void 0)}function _(){n&&n.doOperation({operation:p,clearCaches:!0})}var E=0,S=1,A=2,w=3,T=function(e,t,i){var n,s;this.eventTarget=i||new d.EventDispatcher,this.model=t,this.svf=t&&t.getData(),this.dbPath="",this.sharedDbPath=!1;const a=this.svf&&this.svf.loadOptions.bubbleNode&&this.svf.loadOptions.bubbleNode.findViewableParent()._getOtgManifest(),l=a&&this.svf&&this.svf.is2d;if(this.svf&&!l&&this.svf.propertydb&&this.svf.propertydb.avs.length){for(var c in this.dbFiles=this.svf.propertydb,this.dbFiles)this.dbFiles[c][0]&&(this.dbFiles[c][0].path=this.dbFiles[c][0].path.replace(/\\/g,"/"));var h=(0,o.pathToURL)(this.svf.basePath);if(e){var u=o.ViewingService.simplifyPath(h+this.svf.propertydb.avs[0].path);if((u=u.slice(0,u.lastIndexOf("/")+1))===e){var f={};for(let t in this.dbFiles){var p=this.dbFiles[t][0],m=p.path;0===(m=o.ViewingService.simplifyPath(h+m)).indexOf(e)&&(m=m.slice(e.length)),f[t]=[{path:m,isShared:p.isShared}]}this.dbFiles=f,this.dbPath=e,this.sharedDbPath=!0}else this.dbPath=h,this.sharedDbPath=!1}else this.dbPath=h,this.sharedDbPath=!1}else{if(this.sharedDbPath=!0,this.svf&&this.svf.loadOptions.bubbleNode){this.dbPath=e;let t=this.svf.loadOptions.bubbleNode.getPropertyDbManifest();this.dbFiles=t.propertydb,this.needsDbIdRemap=t.needsDbIdRemap}else r.logger.warn("Deprecated shared property database initialization without bubbleNode in Model load options."),this.dbPath=e,this.dbFiles={attrs:[],avs:[],ids:[],values:[],offsets:[]};r.logger.log("Using shared db path "+e)}a&&(this.needsDbIdRemap=this.svf.loadOptions.needsDbIdRemap||this.needsDbIdRemap),this.queryParams="";let g=null===(n=this.model)||void 0===n||null===(n=n.getDocumentNode())||void 0===n||null===(n=n.getDocument())||void 0===n?void 0:n.getAcmSessionId(this.dbPath);g=g||(null===(s=this.svf)||void 0===s?void 0:s.acmSessionId),this.svf&&g&&(this.queryParams="acmsession="+g),this.loadProgress=0,this.cbId=void 0,this.idLoadState=E,this.waitingForExternalIds=[]};T.prototype.dtor=function(){this.asyncPropertyOperation({operation:p},(function(){}),(function(){}));var e,t=Boolean(this.cbId),i=this.instanceTree||this.propertyDbError;t&&!i&&(e=this.cbId,delete g[e],this.propertyDbError={propDbWasUnloaded:!0},this.eventTarget.dispatchEvent({type:a.OBJECT_TREE_UNAVAILABLE_EVENT,svf:this.svf,model:this.model,target:this})),this.model=null,this.svf=null},T.prototype.processLoadResult=function(e){if(e.instanceTreeStorage){var t=new h.InstanceTreeAccess(e.instanceTreeStorage,e.rootId,e.instanceBoxes);this.instanceTree=new c.InstanceTree(t,e.objectCount,e.maxTreeDepth),this.svf&&((i=this).svf.instanceTree=i.instanceTree,this.instanceTree.setFragmentList(this.model.getFragmentList()))}var i;e.objectCount&&(this.hasObjectProperties=e.objectCount,this.svf&&(this.svf.hasObjectProperties=e.objectCount)),e.dbidOldToNew&&this.model.setDbIdRemap(e.dbidOldToNew),this.onLoadProgress(100),this.eventTarget.dispatchEvent({type:a.OBJECT_TREE_CREATED_EVENT,svf:this.svf,model:this.model,target:this})},T.prototype.processLoadError=function(e){var t=this;t.propertyDbError=e,t.onLoadProgress(100),t.eventTarget.dispatchEvent({type:a.OBJECT_TREE_UNAVAILABLE_EVENT,svf:t.svf,model:t.model,target:t})},T.prototype.load=function(e){var t=this;e=T.prototype.useCustomProperties?Object.assign({useCustomProperties:!0},e):e||{},n||(n=(0,u.createWorker)("PropWorker",!0)).addEventListener("message",v);this.cbId=y((function(e){t.processLoadResult(e)}),(function(e){t.processLoadError(e)}),(function(e){t.onLoadProgress(e.percent)}));var i=this.svf&&this.svf.loadOptions,r=!(i&&i.disablePrecomputedNodeBoxes),o=!(!i||!i.skipExternalIds);let s;o||(this.idLoadState=S),s=this.svf&&this.svf.instanceTree&&this.svf.instanceBoxes?"CREATE_TREE":"LOAD_PROPERTYDB";var a={operation:s,dbPath:this.dbPath,sharedDbPath:this.sharedDbPath,propertydb:this.dbFiles,fragToDbId:this.svf&&this.svf.fragments.fragId2dbId,fragBoxes:r&&this.svf&&this.svf.fragments.boxes,needsDbIdRemap:this.needsDbIdRemap,is2d:this.svf&&this.svf.is2d,cbId:this.cbId,queryParams:this.queryParams,skipExternalIds:o,gltfTree:this.svf.instanceTree,dbToFragId:this.svf&&this.svf.fragments.dbToFragId,...e};n.doOperation((0,l.initLoadContext)(a))},T.prototype.asyncPropertyOperation=function(e,t,i,r){const o=this;if(e.dbPath=this.dbPath,o.instanceTree||o.hasObjectProperties)e.cbId=y(t,i,r),n.doOperation(e);else if(o.propertyDbError)i&&i(o.propertyDbError);else{const n=function(l){o.model===l.model&&(o.eventTarget.removeEventListener(a.OBJECT_TREE_CREATED_EVENT,n),o.eventTarget.removeEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,n),o.instanceTree||o.hasObjectProperties||o.propertyDbError?o.asyncPropertyOperation(e,t,i,r):i&&i({code:s.ErrorCodes.UNKNOWN_FAILURE,msg:"Failed to load properties"}))};o.eventTarget.addEventListener(a.OBJECT_TREE_CREATED_EVENT,n),o.eventTarget.addEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,n)}},T.prototype.getProperties=function(e,t,i){this.idLoadState===E&&r.logger.warn("Calling getProperties() will cause loading of the potentially large externalIDs file. Use getProperties2() to avoid this warning."),this.getProperties2(e,t,i,{needsExternalId:!0})},T.prototype.getProperties2=function(e,t,i,n){const r=()=>{this.asyncPropertyOperation({operation:f,dbId:e,gltfTree:this.svf&&this.svf.instanceTreeBackup},t,i)};n&&n.needsExternalId?this.loadExternalIds().then(r).catch(i):r()},T.prototype.getBulkProperties=function(e,t,i,n,o){const s={ignoreHidden:o,propFilter:t,needsExternalId:!t||t.includes("externalId")};s.needsExternalId&&this.idLoadState===E&&r.logger.warn("Calling getProperties() will cause loading of the potentially large externalIDs file. Use getProperties2() to avoid this warning."),this.getBulkProperties2(e,s,i,n)},T.prototype.getBulkProperties2=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0;const r=()=>{this.asyncPropertyOperation({operation:f,dbIds:e,propFilter:t.propFilter,categoryFilter:t.categoryFilter,ignoreHidden:t.ignoreHidden},i,n)};t&&t.needsExternalId?this.loadExternalIds().then(r).catch(n):r()},T.prototype.getPropertySet=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0;const r=()=>{this.asyncPropertyOperation({operation:"GET_PROPERTY_SET",dbIds:e,propFilter:t.propFilter,ignoreHidden:t.ignoreHidden,fileType:t.fileType},i,n)};t&&t.needsExternalId?this.loadExternalIds().then(r).catch(n):r()},T.prototype.searchProperties=function(e,t,i,n,r){this.asyncPropertyOperation({operation:"SEARCH_PROPERTIES",searchText:e,attributeNames:t,searchOptions:r},i,n)},T.prototype.findProperty=function(e){var t=this;return new Promise((function(i,n){t.asyncPropertyOperation({operation:"FIND_PROPERTY",propertyName:e},i,n)}))},T.prototype.diffProperties=function(e,t,i,n,r){this.asyncPropertyOperation({operation:"DIFF_PROPERTIES",dbPath2:e,diffOptions:n},t,i,r)},T.prototype.findLayers=function(){var e=this;return new Promise((function(t,i){e.asyncPropertyOperation({operation:"FIND_LAYERS"},t,i)}))},T.prototype.getExternalIdMapping=function(e,t,i){return this.loadExternalIds().then((()=>{this.asyncPropertyOperation({operation:"BUILD_EXTERNAL_ID_MAPPING",extIdFilter:i},e,t)}))},T.prototype.getLayerToNodeIdMapping=function(e,t){this.asyncPropertyOperation({operation:"BUILD_LAYER_TO_NODE_ID_MAPPING"},e,t)},T.prototype.executeUserFunction=function(e,t){if("function"==typeof e)e=e.toString();else if("string"!=typeof e)return Promise.reject("Expected Function or string.");let i;try{i=new Blob([e],{type:"application/javascript"})}catch(t){let n=new BlobBuilder;n.append(e),i=n.getBlob()}let n=URL.createObjectURL(i);return new Promise(((e,i)=>{this.asyncPropertyOperation({operation:"USER_FUNCTION",userFunction:n,userData:t},e,i)}))},T.prototype.isObjectTreeLoaded=function(){return!!this.instanceTree},T.prototype.getObjectTree=function(e,t){var i=this;if(i.instanceTree)e(i.instanceTree);else if(i.propertyDbError)t&&t(i.propertyDbError);else if("hasObjectProperties"in i)i.svf&&i.svf.is2d&&t?t("F2D files do not have an InstanceTree."):e(null);else{var n=function(){i.eventTarget.removeEventListener(a.OBJECT_TREE_CREATED_EVENT,n),i.eventTarget.removeEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,n),i.getObjectTree(e,t)};i.eventTarget.addEventListener(a.OBJECT_TREE_CREATED_EVENT,n),i.eventTarget.addEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,n)}},T.prototype.onLoadProgress=function(e){this.eventTarget.dispatchEvent({type:a.OBJECT_TREE_LOAD_PROGRESS_EVENT,percent:e,svf:this.svf,model:this.model,target:this}),this.loadProgress=e},T.prototype.getLoadProgress=function(){return this.loadProgress},T.prototype.isLoadDone=function(){return 100==this.loadProgress},T.prototype.loadExternalIds=function(){switch(this.idLoadState){case S:return Promise.resolve();case w:return Promise.reject();case E:{this.idLoadState=A;const e=()=>{this.idLoadState=S,this.waitingForExternalIds.forEach((e=>e.resolve()))},t=()=>{this.idLoadState=w,this.waitingForExternalIds.forEach((e=>e.reject()))},i={operation:"LOAD_EXTERNAL_IDS",idsFile:this.dbFiles.ids[0],queryParams:this.queryParams};(0,l.initLoadContext)(i),this.asyncPropertyOperation(i,e,t);break}}return new Promise(((e,t)=>{this.waitingForExternalIds.push({resolve:e,reject:t})}))},T.prototype.refreshCustomProperties=function(e){return new Promise(((t,i)=>{e.operation="REFRESH_CUSTOM_PROPERTIES",e.cbId=y(t,i),e.dbPath=this.dbPath,n.doOperation(e)}))},T.prototype.applyCustomProperties=function(e){return new Promise(((t,i)=>{e.operation="APPLY_CUSTOM_PROPERTIES",e.cbId=y(t,i),e.dbPath=this.dbPath,n.doOperation(e)}))},T.prototype.refreshCustomPropertiesValues=function(e){return new Promise(((t,i)=>{e.operation="REFRESH_CUSTOM_PROPERTIES_VALUES",e.dbPath=this.dbPath;e.cbId=y((r=>{if(this.instanceTree||"hasObjectProperties"in this)t(r);else{const r=this.eventTarget,o=()=>{r.removeEventListener(a.OBJECT_TREE_CREATED_EVENT,o),r.removeEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,o),e.cbId=y(t,i),n.doOperation(e)};r.addEventListener(a.OBJECT_TREE_CREATED_EVENT,o),r.addEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,o)}}),i),n.doOperation(e)}))},T.prototype.setCustomPropertiesValues=function(e){return new Promise(((t,i)=>{e.operation="SET_CUSTOM_PROPERTIES_VALUES",e.dbPath=this.dbPath;e.cbId=y((r=>{if(this.instanceTree||"hasObjectProperties"in this)t(r);else{const r=this.eventTarget,o=()=>{r.removeEventListener(a.OBJECT_TREE_CREATED_EVENT,o),r.removeEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,o),e.cbId=y(t,i),n.doOperation(e)};r.addEventListener(a.OBJECT_TREE_CREATED_EVENT,o),r.addEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,o)}}),i),n.doOperation(e)}))},T.prototype.useCustomProperties=!1},5968:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SvfLoader:()=>w});var n=i(55280),r=i(83081),o=i(37365),s=i(57480),a=i(75468),l=i(68747),c=i(22040),h=i(68630),u=i(84045),d=i(77201),f=i(13e3),p=i(90255),m=i(7756),g=i(19556),v=i(63764),y=i(72091),b=i(54393),x=i(8412),_=i(28441);const E=Autodesk.Viewing,S=E.Private;var A=(0,n.isNodeJS)()?10:(0,n.isMobileDevice)()?2:6,w=function(e){this.viewer3DImpl=e,this.next_pack=0,this.loading=!1,this.loadedPacksCount=0,this.tmpMatrix=new y.Matrix4,this.tmpBox=new y.Box3,this.fetchingTopology=!1,this.loadTime=0,this.notifiesFirstPixel=!0};w.prototype.dtor=function(){if(this.svfWorker&&(this.svfWorker.terminate(),this.svfWorker=null,r.logger.debug("SVF loader dtor: on svf worker.")),this.pack_workers){for(var e=0;e{setTimeout((()=>{this.loadGeometryPack(e.id,e.uri)}),200*i)})(r)}},w.prototype.createModel=function(e){var t=this.model=new v.Model(e);return t.loader=this,t.initialize(),t},w.prototype.isValid=function(){return this.viewer3DImpl},w.prototype.loadFile=function(e,t,i,n){if(!this.viewer3DImpl)return r.logger.log("SVF loader was already destructed. So no longer usable."),!1;if(this.loading)return r.logger.log("Loading of SVF already in progress. Ignoring new request."),!1;this.loading=!0;var o=e.indexOf("urn:");if(-1!=o){var s=(e=decodeURIComponent(e)).substr(o,e.substr(o).indexOf("/"));r.logger.log("Extracted URN: "+s);var a=s.lastIndexOf(":");this.svfUrn=s.substr(a+1)}else this.svfUrn=e;this.sharedDbPath=t.sharedPropertyDbPath,this.currentLoadPath=e;var l=this.currentLoadPath.lastIndexOf("/");return-1!=l&&(this.basePath=this.currentLoadPath.substr(0,l+1)),this.acmSessionId=t.acmSessionId,this.queryParams="",this.acmSessionId&&(this.queryParams="acmsession="+this.acmSessionId),this.options=t,this.loadSvfCB(e,t,i,n),!0},w.prototype.loadSvfCB=function(e,t,i,o){this.t0=(new Date).getTime(),this.firstPixelTimestamp=null,this.failedToLoadSomeGeometryPacks=null,this.failedToLoadPacksCount=0;var l=!0,c=this,h={url:(0,u.pathToURL)(e),basePath:this.currentLoadPath,objectIds:t.ids,globalOffset:t.globalOffset,fragmentTransformsDouble:t.fragmentTransformsDouble,placementTransform:t.placementTransform,applyRefPoint:t.applyRefPoint,queryParams:this.queryParams,bvhOptions:t.bvhOptions||{isWeakDevice:(0,n.isMobileDevice)()},applyScaling:t.applyScaling,applyPlacementInModelUnits:t.applyPlacementInModelUnits,loadInstanceTree:t.loadInstanceTree};this.viewer3DImpl._signalNoMeshes();var d=this.svfWorker=this.createWorker();return d.addEventListener("message",(async function(e){var t=function(){d.terminate(),c.svfWorker=null,d=null};if(l&&o&&(l=!1,o()),e.data&&e.data.manifest)c.interceptManifest(e.data.manifest),h.operation="LOAD_SVF_CONTD",h.manifest=e.data.manifest,d.doOperation(h);else if(e.data&&e.data.svf){var n=c.svf=e.data.svf;c.failedToLoadSomeGeometryPacks&&(i&&i(c.failedToLoadSomeGeometryPacks),c.failedToLoadSomeGeometryPacks=null),await c.onModelRootLoadDone(n),i&&i(null,c.model),c.svf.viewpointTreeRoot&&c.options.addViews&&c.options.addViews(c.svf.viewpointTreeRoot,c.model),c.viewer3DImpl.api.dispatchEvent({type:g.MODEL_ROOT_LOADED_EVENT,svf:n,model:c.model}),n.loadDone=!1;var u=!1;n.metadata&&n.metadata.gltf&&(u=!0),u||(0==n.geompacks.length?c.onGeomLoadDone():c.startWorkers()),1==e.data.progress&&(c.loading=!1,t()),n.fragments.polygonCounts||(n.fragments.polygonCounts=new Int32Array(n.fragments.length)),e.data.bvh&&(n.bvh=e.data.bvh,c.model.setBVH(new a.NodeArray(n.bvh.nodes,n.bvh.useLeanNodes),n.bvh.primitives,c.options.bvhOptions),c.viewer3DImpl.api.dispatchEvent({type:g.LOADER_REPAINT_REQUEST_EVENT,loader:c,model:c.model}))}else e.data&&e.data.bvh?(c.svf&&!c.svf.bvh&&(c.svf.bvh=e.data.bvh,c.model.setBVH(new a.NodeArray(c.svf.bvh.nodes,c.svf.bvh.useLeanNodes),c.svf.bvh.primitives,c.options.bvhOptions),c.viewer3DImpl.api.dispatchEvent({type:g.LOADER_REPAINT_REQUEST_EVENT,loader:c,model:c.model})),c.loading=!1,t()):e.data&&e.data.mesh?(c.processReceivedMesh(e.data),1===e.data.progress&&(c.onGeomLoadDone(),c.loading=!1,t())):e.data&&e.data.progress?1==e.data.progress&&(c.loading=!1,t()):e.data&&e.data.error?(c.loading=!1,t(),r.logger.error("Error while processing SVF: "+JSON.stringify(e.data.error.args)),i&&i(e.data.error,null)):e.data&&e.data.debug?r.logger.debug(e.data.message):(r.logger.error("SVF download failed.",(0,s.errorCodeString)(s.ErrorCodes.NETWORK_FAILURE)),c.loading=!1,t())})),h.operation="LOAD_SVF",h.interceptManifest=!!this.interceptManifest,d.doOperation((0,x.initLoadContext)(h)),!0},w.prototype.loadGeometryPack=function(e,t){var i,n,o,s,a=this;if(this.svf&&this.isValid()){var l=this.pack_workers;if(l||(l=this.pack_workers=[]),l.length<(E.NUM_WORKER_THREADS||A)){var c=!0;for(o=0;o=1){a.pack_workers[e.data.workerId].queued-=1,a.loadedPacksCount++,a.viewer3DImpl.signalProgress(100*a.loadedPacksCount/a.svf.geompacks.length,_.ProgressState.LOADING,a.model);var l=!0;for(s=0;si.nextRepaintPolys&&(this.firstPixelTimestamp=this.firstPixelTimestamp||Date.now(),i.numRepaints++,i.nextRepaintPolys+=1e4*Math.pow(1.5,i.numRepaints),this.viewer3DImpl.api.dispatchEvent({type:g.LOADER_REPAINT_REQUEST_EVENT,loader:this,model:this.model})),u},w.prototype.setupCamera=function(e){return e.position=(new y.Vector3).copy(e.position),e.target=(new y.Vector3).copy(e.target),e.up=(new y.Vector3).copy(e.up),isFinite(e.position.x+e.position.y+e.position.z+e.target.x+e.target.y+e.target.z+e.up.x+e.up.y+e.up.z)||(e.target=this.svf.bbox.getCenter(new y.Vector3),e.position.copy(e.target),e.position.z+=this.svf.bbox.max.z-this.svf.bbox.min.z,e.up.set(0,1,0)),isFinite(e.aspect)||(e.aspect=1),isFinite(e.fov)||(e.fov=90),isFinite(e.orthoScale)||(e.orthoScale=1),e},w.prototype.onModelRootLoadDone=async function(e){e.fragments.numLoaded=0,e.nextRepaintPolys=0,e.numRepaints=0,e.urn=this.svfUrn,e.acmSessionId=this.acmSessionId,e.basePath=this.basePath,e.loadOptions=this.options,e.verylargebbox&&this.viewer3DImpl.setNearRadius(this.options.nearRadius||1);var t=Date.now();r.logger.log("SVF load: "+(t-this.t0));var i=this.createModel(e);this.options.skipPropertyDb||this.loadPropertyDb();var s=await this.convertMaterials(i);if(this.viewer3DImpl.matman().hasTwoSidedMaterials()&&this.viewer3DImpl.renderer().toggleTwoSided(!0),this.t1=t,e.bbox=(new y.Box3).copy(e.bbox),e.refPointTransform&&(e.refPointTransform=new o.LmvMatrix4(!0).copy(e.refPointTransform)),e.placementTransform&&(e.placementTransform=new o.LmvMatrix4(!0).copy(e.placementTransform)),e.placementWithOffset&&(e.placementWithOffset=new o.LmvMatrix4(!0).copy(e.placementWithOffset)),e.cameras)for(var a=0;a0&&(n.first_pixel_time=i),r.logger.track(n,!0);const o=this.model.getGeometryList(),s={load_time:this.loadTime,polygons:o.geomPolyCount,fragments:this.model.getFragmentList().getCount(),mem_usage:o.gpuMeshMemory,viewable_type:"3d",url:this.currentLoadPath,urn:this.svfUrn};S.analytics.track("viewer.model.loaded",s),this.currentLoadPath=null,this.viewer3DImpl.onLoadComplete(this.model)},w.prototype.loadPropertyDb=function(){this.svf.propDbLoader=new f.PropDbLoader(this.sharedDbPath,this.model,this.viewer3DImpl.api),this.svf.propDbLoader.load()},w.prototype.fetchTopologyFile=function(e,t){if(!this.fetchingTopology){this.fetchingTopology=!0;var i=this.createWorker();i.addEventListener("message",(function(e){if(e.data["status-topology"])return n=(new Date).getTime(),s=Math.round((n-l)/1e3),void r.logger.log("Topology file downloaded. ("+s+" seconds). Processing...");var a=e.data["fetch-topology"];a&&(o=(new Date).getTime(),s=Math.round((o-n)/1e3),a.topology?r.logger.log("Topology file processed successfully! ("+s+" seconds)."):r.logger.log("Topology file processed, but an error ocurred. ("+s+" seconds)."),t(a),c.fetchingTopology=!1,i.terminate(),i=null)}));var n,o,s,a={path:e,queryParams:this.queryParams},l=(new Date).getTime();r.logger.log("Fetching topology file..."),a.operation="FETCH_TOPOLOGY",i.doOperation((0,x.initLoadContext)(a));var c=this}},w.prototype.is3d=function(){return!0},b.FileLoaderManager.registerFileLoader("svf",["svf"],w)},90255:(e,t,i)=>{"use strict";i.r(t),i.d(t,{TextureLoader:()=>M});var n=i(84045),r=i(55280),o=i(57480),s=i(68630),a=i(12360),l=i(83081),c=i(72091),h=i(8412),u=i(9341),d=function(e){this.manager=void 0!==e?e:c.DefaultLoadingManager,this._parser=d.parse};d.prototype=Object.create(c.CompressedTextureLoader.prototype),d.prototype.constructor=d,d.parse=function(e,t){var i=new Uint32Array(e,0,13),n={buffer:e,header:i,loadMipmaps:t};if(55727696===i[0])return d._parseV3(n);if(559044176===i[11])return d._parseV2(n);throw new Error("[THREE.PVRLoader] Unknown PVR format")},d._parseV3=function(e){var t,i,n=e.header,r=n[12],o=n[2],s=n[6],a=n[7],l=(n[9],n[10]),h=n[11];switch(o){case 0:t=2,i=c.RGB_PVRTC_2BPPV1_Format;break;case 1:t=2,i=c.RGBA_PVRTC_2BPPV1_Format;break;case 2:t=4,i=c.RGB_PVRTC_4BPPV1_Format;break;case 3:t=4,i=c.RGBA_PVRTC_4BPPV1_Format;break;default:throw new Error("pvrtc - unsupported PVR format "+o)}return e.dataPtr=52+r,e.bpp=t,e.format=i,e.width=a,e.height=s,e.numSurfaces=l,e.numMipmaps=h,e.isCubemap=6===l,d._extract(e)},d._parseV2=function(e){var t,i=e.header,n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=(i[5],i[6]),h=(i[7],i[8],i[9],i[10]),u=(i[11],i[12]),f=255&a,p=h>0;if(25===f)t=p?c.RGBA_PVRTC_4BPPV1_Format:c.RGB_PVRTC_4BPPV1_Format,l=4;else{if(24!==f)throw new Error("pvrtc - unknown format "+f);t=p?c.RGBA_PVRTC_2BPPV1_Format:c.RGB_PVRTC_2BPPV1_Format,l=2}return e.dataPtr=n,e.bpp=l,e.format=t,e.width=o,e.height=r,e.numSurfaces=u,e.numMipmaps=s+1,e.isCubemap=6===u,d._extract(e)},d._extract=function(e){var t,i={mipmaps:[],width:e.width,height:e.height,format:e.format,mipmapCount:e.numMipmaps,isCubemap:e.isCubemap},n=e.buffer,r=e.dataPtr,o=e.bpp,s=e.numSurfaces,a=0,l=0,c=0,h=0,u=0;2===o?(l=8,c=4):(l=4,c=4),t=l*c*o/8,i.mipmaps.length=e.numMipmaps*s;for(var d=0;d>d,p=e.height>>d;(h=f/l)<2&&(h=2),(u=p/c)<2&&(u=2),a=h*u*t;for(var m=0;m{c.ImageUtils.loadTexture(e,t,i,n)};function E(e,t,i,s,a,f,y){var b=h.endpoint.getUseCredentials(),E=h.endpoint.getUseCookie();b&&E?c.ImageUtils.crossOrigin="use-credentials":h.endpoint.getUseCredentials()?c.ImageUtils.crossOrigin="anonymous":c.ImageUtils.crossOrigin="";var S="";b&&a&&(S="acmsession="+a),y&&y.queryParams&&(S=S?S+"&":"",S+=y.queryParams);const A=h.endpoint.initLoadContext({queryParams:S});e.startsWith("blob:")&&(A.queryParams=void 0),v++,g.go((function(a){var h=function(e,t){v--,t&&s?s(t):i(e),a()},g=f?h:function(e){function t(t){e&&(e.image=t),v--,i(e),a()}e&&e.image?function(e,t){let i,n,r=e.width,s=e.height;if(r&r-1||s&s-1){for(i=1;1.5*ix;)i=Math.max(i/2,1),n=Math.max(n/2,1);let a=m.createElement("canvas"),c=a.getContext("2d");a.width=i,a.height=n,c.drawImage(e,0,0,i,n);const h=new Image;h.src=a.toDataURL(),h.onload=function(){t(h)},h.onerror=function(e){l.logger.error(e,(0,o.errorCodeString)(o.ErrorCodes.UNKNOWN_FAILURE)),t(null)}}(e.image,t):t()},S=function(e){v--,l.logger.error("Texture load error",e),i(null),a()};if((0,r.isNodeJS)())return void function(e,t,i,r,s){var a=new c.DataTexture(void 0,i);function h(e){s&&s.extractImage&&(e=s.extractImage(e)),a.image={data:e,width:void 0,height:void 0},a.needsUpdate=!0,r&&r(a)}function u(e,t){var i="Error: "+e+" ("+t+")";l.logger.error(i,(0,o.errorCodeString)(o.ErrorCodes.NETWORK_SERVER_ERROR)),r&&r(null,{msg:t,args:e})}n.ViewingService.getItem(t,e,h,u)}(e,A,t,h,y);const w=A.queryParams?`?${A.queryParams}`:"";let T=`${e}${w}`;if(e.toLocaleLowerCase().endsWith(".dds"))(0,r.isIOSDevice)()?(T=`${e.slice(0,e.length-4)}.pvr${w}`,(new d).load(T,h,S)):(new u.DDSLoader).load(T,h,S);else if(b&&!E||y&&(y.rawData||y.extractImage))!function(e,t,i,r,s){var a=new c.Texture(void 0,i);function h(e){s&&s.extractImage&&(e=s.extractImage(e));var t,i,n=new Image;a.image=n,n.onload=function(){a.needsUpdate=!0,r&&r(a),p.URL.revokeObjectURL(n.src),n.onload=null,n.onerror=null},n.onerror=function(e){l.logger.error(e,(0,o.errorCodeString)(o.ErrorCodes.UNKNOWN_FAILURE)),r&&r(null),n.onload=null,n.onerror=null},n.src=(t=new Uint8Array(e),i=new Blob([t],{type:"image/jpeg"}),(p.URL||p.webkitURL).createObjectURL(i))}function u(e,t){var i="Error: "+e+" ("+t+")";l.logger.error(i,(0,o.errorCodeString)(o.ErrorCodes.NETWORK_SERVER_ERROR)),r&&r(null,{msg:t,args:e})}s&&s.rawData?h(s.rawData):n.ViewingService.getItem(t,e,h,u,s)}(e,A,t,g,y);else if(e.startsWith("data:"))_(e,t,g,S);else{/(\w+):\/\//gi.exec(e)&&!/^(https?|file|blob:\w+):\/\//gi.test(e)?Autodesk.Viewing.Private.ViewingService.rawGet("","",e,(function(i){let n=/\.(\w+)$/gi.exec(e);n=n?n[1]:"png";var r,o,s=`data:image/${n};base64, `+(r=i,o=Array.prototype.map.call(r,(function(e){return String.fromCharCode(e)})).join(""),btoa(o));_(s,t,g,S)}),console.error):_(T,t,g,S)}}))}function S(e,t,i){var r=t.getData();let o;return e.startsWith("embed:")?o=r.loadedBuffers[e.charAt(e.length-1)]:(e=e.replace(/\\/g,"/"),o=t.isOTG()?function(e){var t=h.endpoint.initLoadContext({});return r.makeSharedResourcePath(t.otg_cdn,"textures",e)}(e):function(e){for(var t=null,i=0;i=0&&(b=e,x=Math.max(16384,y/(4*b)))}const M={loadTextureWithSecurity:E,loadMaterialTextures:A,loadModelTextures:function(e,t){var i=t.matman(),n=i._getModelHash(e),r=e.isOTG(),o=0;if(r)o=e.getData().metadata.stats.num_textures||0;else for(let e in i._materials){if(-1===e.indexOf(n))continue;let t=i._materials[e];t.textureMaps&&(o+=Object.keys(t.textureMaps).length)}T(o);for(let o in i._materials){if(!r&&-1===o.indexOf(n))continue;A(e,i._materials[o],t)}var s=e.getData();!w()&&t&&s.loadDone&&!s.texLoadDone&&(s.texLoadDone=!0,t.onTextureLoadComplete(e))},loadCubeMap:function(e,t,i){var n,r=function(n){n?(n.mapping=c.CubeReflectionMapping,n.LogLuv=-1!==e.indexOf("logluv"),n.RGBM=-1!==e.indexOf("rgbm"),(0,a.DecodeEnvMap)(n,t,!1/*!isMobileDevice()*/,i)):i&&i(n)};return c.ImageUtils.crossOrigin="",Array.isArray(e)?(n=c.ImageUtils.loadTextureCube(e,c.CubeReflectionMapping,r)).format=c.RGBFormat:"string"==typeof e?-1!==e.toLowerCase().indexOf(".dds")?(n=(new u.DDSLoader).load(e,r)).mipmaps=n.mipmaps||[]:(n=_(e,c.SphericalReflectionMapping,i)).format=c.RGBFormat:e?i&&i(e):i&&i(null),n},requestsInProgress:w,calculateTextureSize:function(e){var t=4;switch(e.format){case c.AlphaFormat:t=1;break;case c.RGBFormat:t=3;break;case c.LuminanceFormat:t=1;break;case c.LuminanceAlphaFormat:t=2}switch(e.type){case c.ShortType:case c.UnsignedShortType:case c.HalfFloatType:t*=2;break;case c.IntType:case c.UnsignedIntType:case c.FloatType:t*=4;break;case c.UnsignedShort4444Type:case c.UnsignedShort5551Type:case c.UnsignedShort565Type:t=2}var i=t*e.image.width;return i+=e.unpackAlignment-1,i-=i%e.unpackAlignment,e.image.height*i},imageToCanvas:function(e,t,i){let n=e.width,r=e.height,o=m.createElement("canvas"),s=o.getContext("2d");return s.globalCompositeOperation="copy",o.width=n,o.height=r,t&&(s.fillStyle=i||"#FFFFFF",s.fillRect(0,0,n,r)),s.drawImage(e,0,0,n,r),o}}},7756:(e,t,i)=>{const{isNodeJS:n}=i(55280);var r,o,s,a,l=i(8600).getResourceUrl;n()?(a=i(86059).MainWorker,e.exports={createWorker:function(){return new a},initWorkerScript:function(){}}):(r=Autodesk.Viewing.Private,o=r.LMV_WORKER_URL||"src/file-loaders/workers/MainWorker-web.js",s=null,e.exports={createWorker:function(e,t){if(!s){const e=new URL(l(o),document.baseURI).href,t=new Blob([`\n try {\n importScripts("${e}");\n } catch (e) {\n console.warn("Failed to import worker script. Could be a network failure or just the worker closing." + e);\n }\n `],{type:"application/javascript"});s=URL.createObjectURL(t)}let i=new Worker(s,{name:e});return i.doOperation=i.postMessage,!0===t&&r.ViewingService.forwardProtocolHandlerToWorker(i),i},initWorkerScript:function(){fetch(l(o))}})},82076:(e,t,i)=>{"use strict";i.r(t),i.d(t,{loadWasmWorker:()=>o});const{getResourceUrl:n}=i(8600),{getGlobal:r}=i(55280);function o(e){const t={},i=n("wasm.worker.js");return new Promise(((t,s)=>{(function(e){const t=Autodesk.Viewing.Private;return new Promise((function(i){if(t.ENABLE_INLINE_WORKER){let t=new XMLHttpRequest;t.open("GET",e,!0),t.withCredentials=!1,t.onload=function(){let e,n=r();n.URL=n.URL||n.webkitURL;try{e=new Blob([t.responseText],{type:"application/javascript"})}catch(i){let n=new BlobBuilder;n.append(t.responseText),e=n.getBlob()}i(URL.createObjectURL(e))},t.send()}else i(e)}))})(i).then((function(i){const r=new Worker(i),a={},l=n(e);r.postMessage({eventType:"INITIALIZE",eventData:l}),r.addEventListener("message",(function(e){if("INITIALIZED"===e.data.eventType){e.data.eventData.forEach((e=>{a[e]=function(){return o(e,r,(t=>{t.postMessage({eventData:{method:e,arguments:Array.from(arguments)}})}))}}));const i="getBuffer";return a[i]=function(){return o(i,r,(e=>{e.postMessage({eventType:"GET_BUFFER"})}))},void t(a)}})),r.addEventListener("error",(function(e){s(e)}))}))}));function o(e,i,n){return new Promise(((r,o)=>{const s=function(e,i){let n,r;t&&Object.prototype.hasOwnProperty.call(t,e)?(n=t[e][0],r=n.inUse):(t[e]=[],r=!0);r&&(n={channel:new MessageChannel,inUse:!1},t[e].push(n),i.postMessage({eventType:"SET_CHANNEL_PORT",eventData:{method:e,port:n.channel.port2}},[n.channel.port2]));return n}(e,i),a=s.channel;s.inUse=!0,n(a.port1),a.port1.onmessage=function(i){s.inUse=!1;const n=i.data.eventType,a=i.data.eventData;"ERROR"===n?o(a):r(a),function(e,t){for(let i=1;i{"use strict";i.r(t),i.d(t,{ErrorCodes:()=>n,errorCodeString:()=>r,getErrorCode:()=>o});const n={UNKNOWN_FAILURE:1,BAD_DATA:2,NETWORK_FAILURE:3,NETWORK_ACCESS_DENIED:4,NETWORK_FILE_NOT_FOUND:5,NETWORK_SERVER_ERROR:6,NETWORK_UNHANDLED_RESPONSE_CODE:7,BROWSER_WEBGL_NOT_SUPPORTED:8,BAD_DATA_NO_VIEWABLE_CONTENT:9,BROWSER_WEBGL_DISABLED:10,BAD_DATA_MODEL_IS_EMPTY:11,UNSUPORTED_FILE_EXTENSION:13,VIEWER_INTERNAL_ERROR:14,WEBGL_LOST_CONTEXT:15,LOAD_CANCELED:16};function r(e){return"ErrorCode:"+e+"."}function o(e){return 403===e||401===e?n.NETWORK_ACCESS_DENIED:404===e?n.NETWORK_FILE_NOT_FOUND:e>=500?n.NETWORK_SERVER_ERROR:n.NETWORK_UNHANDLED_RESPONSE_CODE}},84045:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ViewingService:()=>z,pathToURL:()=>j,textToArrayBuffer:()=>q});i(74423),i(69479),i(28845),i(17656),i(55105),i(7467),i(10586),i(71517),i(93777),i(14190),i(12359),i(86097),i(39172),i(57019),i(17273),i(81723),i(27415),i(19929),i(37583),i(55122),i(16385),i(20230),i(57268),i(79733),i(58179),i(30456),i(74017),i(79310),i(83062),i(96369),i(15637),i(2848),i(24842),i(24746),i(33454),i(6660),i(15941),i(82101),i(2917),i(47628),i(65186),i(42978),i(72527),i(79852),i(42376),i(40617),i(73067),i(66820),i(8288),i(25509),i(65223),i(60321),i(41927),i(11632),i(64377),i(49522),i(66771),i(12516),i(68931),i(52514),i(35694),i(52774),i(23283),i(49536),i(21926),i(94483),i(16215),i(78898),i(74176),i(43275),i(42793),i(77208),i(67348),i(26957),i(79732),i(83742),i(56422),i(82451),i(46270),i(59848);var n=i(83081),r=i(57480),o=i(42759),s=i(8412),a=i(55280),l=i(84406),c=Uint8Array,h=Uint16Array,u=Int32Array,d=new c([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),f=new c([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),p=new c([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),m=function(e,t){for(var i=new h(31),n=0;n<31;++n)i[n]=t+=1<>1|(21845&E)<<1;S=(61680&(S=(52428&S)>>2|(13107&S)<<2))>>4|(3855&S)<<4,_[E]=((65280&S)>>8|(255&S)<<8)>>1}var A=function(e,t,i){for(var n=e.length,r=0,o=new h(t);r>l]=c}else for(s=new h(n),r=0;r>15-e[r]);return s},w=new c(288);for(E=0;E<144;++E)w[E]=8;for(E=144;E<256;++E)w[E]=9;for(E=256;E<280;++E)w[E]=7;for(E=280;E<288;++E)w[E]=8;var T=new c(32);for(E=0;E<32;++E)T[E]=5;var M=A(w,9,1),C=A(T,5,1),P=function(e){for(var t=e[0],i=1;it&&(t=e[i]);return t},D=function(e,t,i){var n=t/8|0;return(e[n]|e[n+1]<<8)>>(7&t)&i},L=function(e,t){var i=t/8|0;return(e[i]|e[i+1]<<8|e[i+2]<<16)>>(7&t)},I=function(e){return(e+7)/8|0},R=function(e,t,i){return(null==t||t<0)&&(t=0),(null==i||i>e.length)&&(i=e.length),new c(e.subarray(t,i))},O=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],N=function(e,t,i){var n=new Error(t||O[e]);if(n.code=e,Error.captureStackTrace&&Error.captureStackTrace(n,N),!i)throw n;return n},F=function(e,t,i,n){var r=e.length,o=n?n.length:0;if(!r||t.f&&!t.l)return i||new c(0);var s=!i,a=s||2!=t.i,l=t.i;s&&(i=new c(3*r));var h=function(e){var t=i.length;if(e>t){var n=new c(Math.max(2*t,e));n.set(i),i=n}},u=t.f||0,m=t.p||0,g=t.b||0,y=t.l,b=t.d,_=t.m,E=t.n,S=8*r;do{if(!y){u=D(e,m,1);var w=D(e,m+1,3);if(m+=3,!w){var T=e[(j=I(m)+4)-4]|e[j-3]<<8,O=j+T;if(O>r){l&&N(0);break}a&&h(g+T),i.set(e.subarray(j,O),g),t.b=g+=T,t.p=m=8*O,t.f=u;continue}if(1==w)y=M,b=C,_=9,E=5;else if(2==w){var F=D(e,m,31)+257,U=D(e,m+10,15)+4,B=F+D(e,m+5,31)+1;m+=14;for(var k=new c(B),V=new c(19),G=0;G>4)<16)k[G++]=j;else{var X=0,Y=0;for(16==j?(Y=3+D(e,m,3),m+=2,X=k[G-1]):17==j?(Y=3+D(e,m,7),m+=3):18==j&&(Y=11+D(e,m,127),m+=7);Y--;)k[G++]=X}}var K=k.subarray(0,F),Q=k.subarray(F);_=P(K),E=P(Q),y=A(K,_,1),b=A(Q,E,1)}else N(1);if(m>S){l&&N(0);break}}a&&h(g+131072);for(var Z=(1<<_)-1,$=(1<>4;if((m+=15&X)>S){l&&N(0);break}if(X||N(2),ee<256)i[g++]=ee;else{if(256==ee){J=m,y=null;break}var te=ee-254;if(ee>264){var ie=d[G=ee-257];te=D(e,m,(1<>4;ne||N(3),m+=15≠Q=x[re];if(re>3){ie=f[re];Q+=L(e,m)&(1<S){l&&N(0);break}a&&h(g+131072);var oe=g+te;if(g>3&1)+(t>>4&1);n>0;n-=!e[i++]);return i+(2&t)},k=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0};function V(e,t){var i=B(e);return i+8>e.length&&N(6,"invalid gzip data"),F(e.subarray(i,-8),{i:2},t&&t.out||new c(k(e)),t&&t.dictionary)}var G="undefined"!=typeof TextDecoder&&new TextDecoder;try{G.decode(U,{stream:!0}),1}catch(e){}"function"==typeof queueMicrotask?queueMicrotask:"function"==typeof setTimeout&&setTimeout;let z={WORKER_REGISTER_FILE_PORT:"REGISTER_FILE_PORT",WORKER_READ_FILE:"READ_FILE"};var H=!1;function W(e){var t=e.split("/");if(0==t.length)return e;for(var i=[],n=0;n=200&&e.statusCode<400),o=e;!i&&function(e,t){return!!("gzip"===e.headers["content-encoding"]||t.endsWith(".json.gz")||t.endsWith("FragmentList.pack")||t.endsWith("LightList.bin")||t.endsWith("CameraList.bin")||t.endsWith("CameraDefinitions.bin")||t.endsWith("LightDefinitions.bin"))}(e,v.pathname)&&(o=e.pipe(t.createGunzip())),"json"!==m.responseType&&"text"!==m.responseType&&m.responseType||o.setEncoding("utf8");var s=[],a=(Buffer.allocUnsafe(65536),0);o.on("data",(function(e){s.push(e),m.ondata&&m.ondata(e)})),o.on("end",(function(){if(e.statusCode>=200&&e.statusCode<400){if("json"===m.responseType){var i=JSON.parse(s.join(""));return void f(i)}if("text"===m.responseType||""===m.responseType){var o=s.join("");return void f(o)}var l=Buffer.concat(s);if(31===l[0]&&139===l[1]){n.logger.warn("An LMV resource ("+d+") was double compressed, or Content-Encoding header missing");try{l=t.gunzipSync(l),a=l.length}catch(e){p(r.ErrorCodes.BAD_DATA,"Malformed data received when requesting file",{url:d,exception:e.toString(),stack:e.stack})}}200===x.status&&m.range&&(l=new Uint8Array(l,m.range.min,m.range.max-m.range.min)),f(l,a)}else p&&p(e.statusCode,e.statusMessage,{url:d})}))}));x.on("error",(function(e){p&&p(e.code,e.message,{url:d})})),m.postData&&x.write(m.postData),x.end()}else!function(i,n,r,o){function s(e){if("json"===o.responseType)try{return JSON.parse(e.toString("utf8"))}catch(e){r(e)}return e}0===i.indexOf("file://")&&(i=i.substr(7)),e.readFile(i,(function(e,a){e?r(0,0,{httpStatusText:e,url:i}):31===a[0]&&139===a[1]?t.gunzip(a,null,(function(e,t){e?r(0,0,{httpStatusText:e,url:i}):(t=s(t),o.ondata&&o.ondata(t),n(t))})):(a=s(a),o.ondata&&o.ondata(a),n(a))}))}(d,f,p,m)}}();else{var Y=new(i(51436));Y.max=25;var K={},Q={},Z={};z.registerProtocolPort=function(e,t){/^(http(s)?|file):/gi.test(e)?console.warn("http(s) or file protocol were not allowed to be handled"):t?(K[e]=t,t.onmessage=function(e){var t=e.data.url;if(Q[t]){var i=Q[t];if(e.data.error)i.onFailureWrapped(r.ErrorCodes.BAD_DATA,"Malformed data received when requesting file",{url:t,exception:e.data.error.message,stack:e.data.error.stack});else{var n=e.data.buffer;if(Q[t]=void 0,31===n[0]&&139===n[1]&&t.match(/(.f2d|.gz)$/gi))try{n=V(n),i.options&&i.options.ondata&&i.options.ondata(n),i.onSuccessWrapped(n)}catch(e){i.onFailureWrapped(r.ErrorCodes.BAD_DATA,"Malformed data received when requesting file",{url:t,exception:e.toString(),stack:e.stack})}else i.onSuccessWrapped(n)}}else if(Z[t]){var o=[];e.data&&e.data.buffer&&e.data.buffer.buffer instanceof ArrayBuffer&&o.push(e.data.buffer.buffer),Z[t].postMessage(e.data,o),Z[t]=void 0}}):K[e]&&K[e]instanceof MessagePort&&(K[e].onmessage=void 0,K[e]=void 0)},z.handlerProtocol=function(e,t,i,n,r){var o=K[e];Q[t]={onSuccessWrapped:i,onFailureWrapped:n,options:r},o.postMessage({operation:z.WORKER_READ_FILE,url:t})},z.forwardProtocolHandlerToWorker=function(e){var t={},i=new MessageChannel;for(var n in i.port1.onmessage=function(e){var t=new URL(e.data.url);K[t.protocol].postMessage(e.data),Z[t]=i.port1},K)K[n]instanceof MessagePort&&(t[n]=i.port2);e.doOperation({operation:z.WORKER_REGISTER_FILE_PORT,protocolPortMap:t},[i.port2])},z.rawGet=function(e,t,i,r,o,s){Y.go((a=>{let l=function(){a();for(var e=arguments.length,t=new Array(e),i=0;i=500);if((arguments.length<=2?void 0:arguments[2]).aborted&&(o=!1),o){const o=arguments.length<=3?void 0:arguments[3];let a=100,h=5,u=!1;if(429!==r&&503!==r||null==o||!o.getResponseHeader("Retry-After")?0===r&&(u=3,h=2):u=o.getResponseHeader("Retry-After"),u){const e=Number(u);a=!isNaN(e)&&1e3*e||Date.parse(u)-(new Date).getTime(),a=a>100?a:100}z._retryRequest(e,t,i,s,a,h).then((e=>{n.logger.warn(`request ${i} successful after retries.`),c(...e)})).catch((e=>{n.logger.warn(`request ${i} unsuccessful after retries.`),l(...e)}))}else l(...arguments)}),s)}}))},z._retryRequest=function(e,t,i,r,o,s){const a={delayFirstAttempt:!0,startingDelay:o,numOfAttempts:4,retry:(e,t)=>{let[i,r,{url:o}]=e;return n.logger.warn(`request ${o} failed with status ${i} ${r}. Attempt ${t}`),!0},timeMultiple:s};return(0,l.backOff)((()=>new Promise(((n,o)=>{let s=z._rawGet;null!=r&&r.useFetch&&(s=z._rawGetFetch),s(e,t,i,(function(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=e.indexOf("?acmsession=");-1!==i&&(e=e.substring(0,i)),e+="/signeds3download?useCdn=true";const n=new XMLHttpRequest;n.open("GET",e),n.setRequestHeader("Authorization",s.endpoint.HTTP_REQUEST_HEADERS.Authorization),n.responseType="json",n.send();const r=()=>{t(null)};n.onload=e=>{const i=e.currentTarget.response;t(i.url)},n.onerror=r,n.ontimeout=r,n.onabort=r}))},z._rawGet=async function(e,t,i,s,a,l){l=l||{},i=z.generateUrl(e,t,i,l.apiData,l.escapeOssObjects,l.guid);let c=!1;if(z.isOSSUrl(i)){const e=await z.getSignedS3DownloadUrl(i);e?(i=e,c=!0):console.warn("Failed getting signed URL - Fallback to direct OSS resource.")}if(l.queryParams&&!c){var h=-1===i.indexOf("?")?"?":"&";i=i+h+l.queryParams}var u=new XMLHttpRequest;function d(e){a&&a(u.status,u.statusText,{url:i},u)}function f(e){if("json"===l.responseType)try{if(e instanceof Uint8Array)return(0,o.TN)(e);if("string"==typeof e)return JSON.parse(e)}catch(e){}return e}function p(e){if(u.status>=200&&u.status<400)if(u.response&&u.response instanceof ArrayBuffer){var t;if(31===(t=200===u.status&&l.range?new Uint8Array(u.response,l.range.min,l.range.max-l.range.min):new Uint8Array(u.response))[0]&&139===t[1]){H||(H=!0,n.logger.warn("An LMV resource ("+i+") was not uncompressed by the browser. This hurts performance. Check the Content-Encoding header returned by the server and check whether you're getting double-compressed streams. The warning prints only once but it's likely the problem affects multiple resources."));try{t=V(t)}catch(e){a(r.ErrorCodes.BAD_DATA,"Malformed data received when requesting file",{url:i,exception:e.toString(),stack:e.stack},u)}}s&&s(f(t))}else{var o=u.response;o||l.responseType&&"text"!==l.responseType||(o=u.responseText),s&&s(f(o))}else d()}try{var m=!Object.prototype.hasOwnProperty.call(l,"asynchronous")||l.asynchronous;if(u.open(l.method||(l.noBody?"HEAD":"GET"),i,m),Object.prototype.hasOwnProperty.call(l,"responseType")&&(u.responseType=l.responseType),l.range&&u.setRequestHeader("Range","bytes="+l.range.min+"-"+l.range.max),!c&&(u.withCredentials=!0,Object.prototype.hasOwnProperty.call(l,"withCredentials")&&(u.withCredentials=l.withCredentials),l.headers))for(var g in l.headers)u.setRequestHeader(g,l.headers[g]),"authorization"===g.toLocaleLowerCase()&&(u.withCredentials=!1);m&&(u.onload=p,u.onerror=d,u.ontimeout=d,u.onabort=function(e){a&&a(u.status,"request was aborted",{url:i,aborted:!0},u)},l.ondata&&(u.overrideMimeType("text/plain; charset=x-user-defined"),l._dlProgress={streamOffset:0},u.onreadystatechange=function(){if(u.readyState>2&&200===u.status&&l.ondata){var e=u.responseText;if(l._dlProgress.streamOffset>=e.length)return;var t=q(e,l._dlProgress.streamOffset);l._dlProgress.streamOffset=e.length,l.ondata(t)}})),u.send(l.postData),m||p()}catch(e){a(u.status,u.statusText,{url:i,exception:e},u)}},z._rawGetFetch=async function(e,t,i,n,r,o){o=o||{},i=z.generateUrl(e,t,i,o.apiData,o.escapeOssObjects,o.guid);let s=!1;if(z.isOSSUrl(i)){const e=await z.getSignedS3DownloadUrl(i);e?(i=e,s=!0):console.warn("Failed getting signed URL - Fallback to direct OSS resource.")}if(o.queryParams&&!s){var a=-1===i.indexOf("?")?"?":"&";i=i+a+o.queryParams}var l,c=new Request(i);function h(e){return{getResponseHeader:t=>{var i;return null==e||null===(i=e.headers)||void 0===i?void 0:i.get(t)}}}try{const e={method:o.method||(o.noBody?"HEAD":"GET"),body:o.postData,headers:o.headers||{},signal:o.abortSignal};if(o.range&&(e.headers.Range="bytes="+o.range.min+"-"+o.range.max),!s&&(e.credentials="include",Object.prototype.hasOwnProperty.call(o,"withCredentials")&&!1===o.withCredentials&&(e.credentials="omit"),o.headers))for(var u in o.headers)"authorization"===u.toLocaleLowerCase()&&(e.credentials="omit");if(!(l=await fetch(c,e)).ok){let e=await l.text();return void r(l.status,e,{url:i},h(l))}if(o.ondata){const e=l.body.getReader();for(;;){let{done:t,value:i}=await e.read();if(t)return void(n&&n(null));o.ondata(i)}}else{let e;o.responseType&&"text"!==o.responseType?"json"===o.responseType?e=await l.json():(e=await l.arrayBuffer(),200===c.status&&o.range&&(e=new Uint8Array(e,o.range.min,o.range.max-o.range.min))):e=await l.text(),n&&n(e)}}catch(e){"AbortError"===e.name?r(0,"request was aborted",{url:i,aborted:!0},h(l)):l?r(l.status,l.statusText,{url:i,exception:e},h(l)):r(0,"network error",{url:i,exception:e})}}}function $(e,t){Object.prototype.hasOwnProperty.call(t,"responseType")||(t.responseType="arraybuffer"),Object.prototype.hasOwnProperty.call(t,"withCredentials")||(t.withCredentials=!!e.auth),t.headers=e.headers,t.queryParams=e.queryParams,t.endpoint=e.endpoint,t.escapeOssObjects=e.escapeOssObjects}z.defaultFailureCallback=function(e,t,i){403==e?this.raiseError(r.ErrorCodes.NETWORK_ACCESS_DENIED,"Access denied to remote resource",{url:i.url,httpStatus:e,httpStatusText:t}):404==e?this.raiseError(r.ErrorCodes.NETWORK_FILE_NOT_FOUND,"Remote resource not found",{url:i.url,httpStatus:e,httpStatusText:t}):0===e&&i.aborted?this.raiseError(r.ErrorCodes.LOAD_CANCELED,"Request aborted",{url:i.url,httpStatus:e,httpStatusText:t}):e>=500&&e<600?this.raiseError(r.ErrorCodes.NETWORK_SERVER_ERROR,"Server error when accessing resource",{url:i.url,httpStatus:e,httpStatusText:t}):i.exception?this.raiseError(r.ErrorCodes.NETWORK_FAILURE,"Network failure",{url:i.url,exception:i.exception.toString(),stack:i.exception.stack}):this.raiseError(r.ErrorCodes.NETWORK_UNHANDLED_RESPONSE_CODE,"Unhandled response code from server",{url:i.url,httpStatus:e,httpStatusText:t,data:i})},z.getItem=function(e,t,i,n,r){if($(e,r=r||{}),r.range&&!e.supportsRangeRequests){let e="start="+r.range.min+"&end="+r.range.max;r.queryParams?r.queryParams+="&"+e:r.queryParams=e,r.range=void 0}z.rawGet(e.endpoint,"items",t,i,n,r)},z.getManifest=function(e,t,i,n,r){r=r||{},Object.prototype.hasOwnProperty.call(r,"responseType")||(r.responseType="json"),$(e,r),z.rawGet(e.endpoint,"bubbles",t,i,n,r)},z.getProperties=function(e,t,i,n,r,o){const s={};$(e,s),s.responseType="json",s.guid=i,s.method="POST",s.postData=JSON.stringify(n),s.headers["Content-Type"]="application/json",s.headers.accept="application/json",s.headers["Access-Control-Allow-Origin"]="*",z.rawGet(e.endpoint,"properties",t,r,o,s)},z.getThumbnail=function(e,t,i,n,r){$(e,r=r||{});var o=r.queryParams||"",s=[];if(-1===o.indexOf("guid=")&&r.guid&&s.push("guid="+encodeURIComponent(r.guid)),-1===o.indexOf("role=")){var a=r.role||"rendered";s.push("role="+a)}if(-1===o.indexOf("width=")){let e=r.size||400;s.push("width="+e)}if(-1===o.indexOf("height=")){let e=r.size||400;s.push("height="+e)}-1===o.indexOf("acmsession=")&&r.acmsession&&s.push("acmsession="+r.acmsession);var l=s.join("&");r.queryParams?r.queryParams=r.queryParams+"&"+l:r.queryParams=l,z.rawGet(e.endpoint,"thumbnails",t,i,n,r)},z.getACMSession=function(e,t,i,r){const o={numOfAttempts:4,timeMultiple:5,retry:(e,t)=>(n.logger.warn(`acmsession request failed. Attempt #${t}`),!0)};(0,l.backOff)((()=>new Promise(((i,n)=>{z._getACMSession(e,t,i,n)}))),o).then((function(){return i(...arguments)})).catch((function(){return r(...arguments)}))},z._getACMSession=function(e,t,i,n){var r,o={};for(var s in t)"oauth2AccessToken"===s?r=t[s]:-1!==s.indexOf("x-ads-acm")&&(o[s]=t[s]);o.application="autodesk";var a=new XMLHttpRequest;a.open("POST",e+"/oss-ext/v2/acmsessions",!0),a.setRequestHeader("Content-Type","application/json"),a.setRequestHeader("Authorization","Bearer "+r),a.responseType="json",a.onload=function(){if(200===a.status&&a.response){var e="string"==typeof a.response?JSON.parse(a.response):a.response;e&&e.acmsession?i(e.acmsession):n(a.status,"Can't get acm session from response.")}else n(a.status)},a.onerror=n,a.ontimeout=n,a.send(JSON.stringify(o)),delete o.application}},8412:(e,t,i)=>{"use strict";i.r(t),i.d(t,{endpoint:()=>A,getEnv:()=>g,getOfflineResourcePrefix:()=>S,initLoadContext:()=>w,isOffline:()=>b,setEnv:()=>v,setOffline:()=>x,setOfflineResourcePrefix:()=>E});var n=i(55280),r=i(8600);const o=(0,n.getGlobal)();var s={},a=null;s.ENDPOINT_API_DERIVATIVE_SERVICE_V2="derivativeV2",s.ENDPOINT_API_MODEL_DERIVATIVE_V2="modelDerivativeV2",s.ENDPOINT_API_FLUENT="fluent",s.ENDPOINT_API_D3S="D3S",s.ENDPOINT_API_DERIVATIVE_STREAMING="streamingV2";var l,c={derivativeV2:{baseURL:"/derivativeservice/v2",itemURL:"/derivativeservice/v2/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",propertyQueryURL:"/modelderivative/v2/designdata/:urn/metadata/:guid/properties:query"},derivativeV2_EU:{baseURL:"/derivativeservice/v2/regions/eu",itemURL:"/derivativeservice/v2/regions/eu/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/regions/eu/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn"},derivativeV2_APAC:{baseURL:"/derivativeservice/v2/regions/apac",itemURL:"/derivativeservice/v2/regions/apac/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/regions/apac/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/apac/thumbnails/:urn"},derivativeV2_Fedramp:{baseURL:"/derivativeservice/v2",itemURL:"/derivativeservice/v2/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn"},modelDerivativeV2:{baseURL:"/modelderivative/v2/",itemURL:"/modelderivative/v2/designdata/:urn/manifest/:derivativeurn",manifestURL:"/modelderivative/v2/designdata/:urn/manifest",thumbnailsURL:"/modelderivative/v2/designdata/:urn/thumbnail",propertyQueryURL:"/modelderivative/v2/designdata/:urn/metadata/:guid/properties:query"},fluent:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S_EU:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S_APAC:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/APAC/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2_EU:{baseURL:"/regions/eu/modeldata",itemURL:"/regions/eu/modeldata/file/:derivativeurn",manifestURL:"/regions/eu/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn",cdnURL:"/regions/eu/cdn",cdnWS:"/regions/eu/cdnws"},streamingV2_APAC:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2_Fedramp:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"}},h="",u=s.ENDPOINT_API_DERIVATIVE_SERVICE_V2,d=!1,f=!1,p="",m=!1;function g(){return l}function v(e){l=e,e.startsWith("MD20")&&console.warn(`env=${e} is deprecated and will be removed in a future release. Use Autodesk{env}2 instead, where env=Development, Staging, or Production`)}s.HTTP_REQUEST_HEADERS={},s.queryParams={},s.setEndpointAndApi=function(e,t){null!=e&&(h=e),t&&(u=t,t.startsWith("D3S")&&console.warn(`api=${t} is deprecated and will be removed in a future release. Use streamingV2 or streamingV2_EU (europe region) instead`))},s.getEndpointAndApi=function(){return h+c[u].baseURL},s.getApiEndpoint=function(){return h},s.getApiFlavor=function(){return u},s.getCdnUrl=function(){return a||(h?h+c[u].cdnURL:void 0)},s.getCdnWebSocketEndpoint=function(){return h+(c[u].cdnWS||"")},s.setCdnUrl=function(e){a=e},s.getCdnRedirectUrl=function(){var e=c[u].cdnRedirectURL;return e?h+e:null},s.setAcmSession=function(e){p=e},s.getAcmSession=function(){return p},s.getManifestApi=function(e,t,i){var n=e||h;return t=t||"",n=(n+=c[i=i||u].manifestURL).replace(":urn",t)},s.getItemApi=function(e,t,i){var n=i||u,r=(e||h)+c[n].itemURL;t=t||"";var o=decodeURIComponent(t);if(-1!==r.indexOf(":urn")){var a=o.split("/")[0]||"";a=(a=a.split(":"))[a.length-1]||"",r=r.replace(":urn",a)}return n===s.ENDPOINT_API_MODEL_DERIVATIVE_V2&&(t=encodeURIComponent(o)),r=r.replace(":derivativeurn",t)},s.getThumbnailApi=function(e,t,i){return((e||h)+c[i||u].thumbnailsURL).replace(":urn",t||"")},s.getPropertyQueryApi=function(e,t,i,n){let r=(e||h)+c[i||u].propertyQueryURL;return r=r.replace(":urn",t||""),r.replace(":guid",n||"")},s.getUseCredentials=function(){return d},s.getDomainParam=function(){return console.warn("getDomainParam is deprecated, switch to getQueryParams instead."),this.getUseCredentials()&&!(0,n.isNodeJS)()?"domain="+encodeURIComponent(o.location.origin):""},s.addQueryParam=function(e,t){this.queryParams[e]=t},s.deleteQueryParam=function(e){delete this.queryParams[e]},s.getQueryParams=function(e){let t=this.getUseCredentials()&&!(0,n.isNodeJS)()?"domain="+encodeURIComponent(o.location.origin):"";(0,r.getParameterByName)("bypassds")&&(t=t?t+"&bypassds=1":"bypassds=1");let i=[];for(let e in this.queryParams)i.push(encodeURIComponent(e)+"="+encodeURIComponent(this.queryParams[e]));return i.length&&(t?t+="&"+i.join("&"):t=i.join("&")),t&&e&&(e.queryParams?e.queryParams+="&"+t:e.queryParams=t),t},s.setUseCredentials=function(e){d=e},s.setUseCookie=function(e){f=e},s.getUseCookie=function(){return f},s.isOtgBackend=function(){return this.getApiFlavor()===this.ENDPOINT_API_FLUENT},s.isSVF2Backend=function(){let e=this.getApiFlavor();return e.startsWith(this.ENDPOINT_API_D3S)||e.startsWith(this.ENDPOINT_API_DERIVATIVE_STREAMING)},s.setEscapeOssObjects=function(e){m=e},s.getEscapeOssObjects=function(){return m},s.initLoadContext=function(e){for(var t in(e=e||{}).auth=this.getUseCredentials(),e.endpoint||(e.endpoint=this.getApiEndpoint()),e.api||(e.api=this.getApiFlavor()),e.headers||(e.headers={}),this.HTTP_REQUEST_HEADERS)e.headers[t]=this.HTTP_REQUEST_HEADERS[t];return e.api,this.ENDPOINT_API_FLUENT,this.getQueryParams(e),e.otg_cdn=a||this.getCdnUrl(),e.otg_ws=this.getCdnWebSocketEndpoint(),e.escapeOssObjects=this.getEscapeOssObjects(),e};var y=!1;function b(){return y}function x(e){y=e}var _="";function E(e){_=e}function S(){return _}let A=s,w=s.initLoadContext.bind(s)},38685:(e,t,i)=>{"use strict";function n(e){return e[e.LMV_APP_NAMESPACE]=e[e.LMV_APP_NAMESPACE]||{}}function r(){const e="undefined"!=typeof window&&null!==window?window:"undefined"!=typeof self&&null!==self?self:i.g;return e.USE_LMV_APP_NAMESPACES?(e.globalProxy||(e.globalProxy=new Proxy({},{get(t,i){let n=e[i];return"function"==typeof n?function(e,t){return new Proxy(t,{get:(e,t)=>e[t],apply:(t,i,n)=>t.call(e||i,...n)})}(e,n):n},set:(t,i,r)=>(Object.prototype.hasOwnProperty.call(e,i)?e[i]!==r&&(e[i]=r):(n(e)[i]=r,Object.defineProperty(e,i,{get:()=>n(e)[i],set:t=>{n(e)[i]=t}})),!0)})),e.globalProxy):e}i.r(t),i.d(t,{getGlobal:()=>r})},16271:(e,t,i)=>{"use strict";i.r(t),i.d(t,{extendLocalization:()=>w,initializeLocalization:()=>M,setLanguage:()=>T});var n=i(55280);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}var o=[],s=o.forEach,a=o.slice;function l(e){return s.call(a.call(arguments,1),(function(t){if(t)for(var i in t)void 0===e[i]&&(e[i]=t[i])})),e}function c(){return"function"==typeof XMLHttpRequest||"object"===("undefined"==typeof XMLHttpRequest?"undefined":r(XMLHttpRequest))}var h,u,d,f=i(85178),p=i.t(f,2);function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}"function"==typeof fetch&&(h="undefined"!=typeof global&&global.fetch?global.fetch:"undefined"!=typeof window&&window.fetch?window.fetch:fetch),c()&&("undefined"!=typeof global&&global.XMLHttpRequest?u=global.XMLHttpRequest:"undefined"!=typeof window&&window.XMLHttpRequest&&(u=window.XMLHttpRequest)),"function"==typeof ActiveXObject&&("undefined"!=typeof global&&global.ActiveXObject?d=global.ActiveXObject:"undefined"!=typeof window&&window.ActiveXObject&&(d=window.ActiveXObject)),h||!p||u||d||(h=f||p),"function"!=typeof h&&(h=void 0);var g=function(e,t){if(t&&"object"===m(t)){var i="";for(var n in t)i+="&"+encodeURIComponent(n)+"="+encodeURIComponent(t[n]);if(!i)return e;e=e+(-1!==e.indexOf("?")?"&":"?")+i.slice(1)}return e},v=function(e,t,i){h(e,t).then((function(e){if(!e.ok)return i(e.statusText||"Error",{status:e.status});e.text().then((function(t){i(null,{status:e.status,data:t})})).catch(i)})).catch(i)},y=!1;const b=function(e,t,i,n){return"function"==typeof i&&(n=i,i=void 0),n=n||function(){},h?function(e,t,i,n){e.queryStringParams&&(t=g(t,e.queryStringParams));var r=l({},"function"==typeof e.customHeaders?e.customHeaders():e.customHeaders);i&&(r["Content-Type"]="application/json");var o="function"==typeof e.requestOptions?e.requestOptions(i):e.requestOptions,s=l({method:i?"POST":"GET",body:i?e.stringify(i):void 0,headers:r},y?{}:o);try{v(t,s,n)}catch(e){if(!o||0===Object.keys(o).length||!e.message||e.message.indexOf("not implemented")<0)return n(e);try{Object.keys(o).forEach((function(e){delete s[e]})),v(t,s,n),y=!0}catch(e){n(e)}}}(e,t,i,n):c()||"function"==typeof ActiveXObject?function(e,t,i,n){i&&"object"===m(i)&&(i=g("",i).slice(1)),e.queryStringParams&&(t=g(t,e.queryStringParams));try{var r;(r=u?new u:new d("MSXML2.XMLHTTP.3.0")).open(i?"POST":"GET",t,1),e.crossDomain||r.setRequestHeader("X-Requested-With","XMLHttpRequest"),r.withCredentials=!!e.withCredentials,i&&r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),r.overrideMimeType&&r.overrideMimeType("application/json");var o=e.customHeaders;if(o="function"==typeof o?o():o)for(var s in o)r.setRequestHeader(s,o[s]);r.onreadystatechange=function(){r.readyState>3&&n(r.status>=400?r.statusText:null,{status:r.status,data:r.responseText})},r.send(i)}catch(e){console&&console.log(e)}}(e,t,i,n):void n(new Error("No fetch and no xhr implementation found!"))};function x(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.services=t,this.options=i,this.allOptions=n,this.type="backend",this.init(t,i,n)}var t,i,n;return t=e,i=[{key:"init",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.services=e,this.options=l(i,this.options||{},_()),this.allOptions=n,this.services&&this.options.reloadInterval&&setInterval((function(){return t.reload()}),this.options.reloadInterval)}},{key:"readMulti",value:function(e,t,i){this._readAny(e,e,t,t,i)}},{key:"read",value:function(e,t,i){this._readAny([e],e,[t],t,i)}},{key:"_readAny",value:function(e,t,i,n,r){var o,s=this,a=this.options.loadPath;"function"==typeof this.options.loadPath&&(a=this.options.loadPath(e,i)),(a=function(e){return!!e&&"function"==typeof e.then}(o=a)?o:Promise.resolve(o)).then((function(o){if(!o)return r(null,{});var a=s.services.interpolator.interpolate(o,{lng:e.join("+"),ns:i.join("+")});s.loadUrl(a,r,t,n)}))}},{key:"loadUrl",value:function(e,t,i,n){var r=this;this.options.request(this.options,e,void 0,(function(o,s){if(s&&(s.status>=500&&s.status<600||!s.status))return t("failed loading "+e+"; status code: "+s.status,!0);if(s&&s.status>=400&&s.status<500)return t("failed loading "+e+"; status code: "+s.status,!1);if(!s&&o&&o.message&&o.message.indexOf("Failed to fetch")>-1)return t("failed loading "+e+": "+o.message,!0);if(o)return t(o,!1);var a,l;try{a="string"==typeof s.data?r.options.parse(s.data,i,n):s.data}catch(t){l="failed parsing "+e+" to json"}if(l)return t(l,!1);t(null,a)}))}},{key:"create",value:function(e,t,i,n,r){var o=this;if(this.options.addPath){"string"==typeof e&&(e=[e]);var s=this.options.parsePayload(t,i,n),a=0,l=[],c=[];e.forEach((function(i){var n=o.options.addPath;"function"==typeof o.options.addPath&&(n=o.options.addPath(i,t));var h=o.services.interpolator.interpolate(n,{lng:i,ns:t});o.options.request(o.options,h,s,(function(t,i){a+=1,l.push(t),c.push(i),a===e.length&&r&&r(l,c)}))}))}}},{key:"reload",value:function(){var e=this,t=this.services,i=t.backendConnector,n=t.languageUtils,r=t.logger,o=i.language;if(!o||"cimode"!==o.toLowerCase()){var s=[],a=function(e){n.toResolveHierarchy(e).forEach((function(e){s.indexOf(e)<0&&s.push(e)}))};a(o),this.allOptions.preload&&this.allOptions.preload.forEach((function(e){return a(e)})),s.forEach((function(t){e.allOptions.ns.forEach((function(e){i.read(t,e,"read",null,null,(function(n,o){n&&r.warn("loading namespace ".concat(e," for language ").concat(t," failed"),n),!n&&o&&r.log("loaded namespace ".concat(e," for language ").concat(t),o),i.loaded("".concat(t,"|").concat(e),n,o)}))}))}))}}}],i&&x(t.prototype,i),n&&x(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();E.type="backend";const S=E;var A=i(77427),w=function(e){return null!==e&&"object"==typeof e&&(Object.keys(e).forEach((function(t){Autodesk.Viewing.i18n.addResourceBundle(t,"allstrings",e[t],!0,!0)})),!0)},T=function(e,t){return(0,n.getGlobal)().LOCALIZATION_REL_PATH="res/locales/"+e+"/",Autodesk.Viewing.i18n.changeLanguage(e).then((()=>Autodesk.Viewing.i18n.reloadResources())).then((()=>{t&&t()}))},M=function(e){const t=(0,n.getGlobal)(),i=t&&t.document;Autodesk.Viewing.i18n.localize=function(e){var t=e||i;Array.prototype.forEach.call(t.querySelectorAll("[data-i18n]"),(function(e){var t=e.getAttribute("data-i18n"),i=[null,t],n=i[0],r=i[1],o=Autodesk.Viewing.i18n.translate(r);o?n?e.setAttribute(n,o):e.placeholder?e.placeholder=o:e.textContent=o:n?e.setAttribute(n,r):e.textContent=r}))};var r=e&&e.language||navigator.language;return r=A.Lang.getSupported(r),Autodesk.Viewing.i18n.use(S).init({lng:r,backend:{loadPath:Autodesk.Viewing.Private.getResourceUrl("res/locales/%(lng)/%(ns).json")},ns:"allstrings",defaultNS:"allstrings",fallbackLng:"en",debug:!1,useCookie:!1,interpolation:{prefix:"%(",suffix:")",escapeValue:!1}}),T(r)}},77427:e=>{"use strict";let t=new function(){this.names=[{symbol:"en",label:"English"},{symbol:"zh-Hans",label:"Chinese Simplified"},{symbol:"zh-Hant",label:"Chinese Traditional"},{symbol:"zh-HK",label:"Hong Kong Traditional"},{symbol:"ja",label:"Japanese"},{symbol:"cs",label:"Czech"},{symbol:"ko",label:"Korean"},{symbol:"pl",label:"Polish"},{symbol:"ru",label:"Russian"},{symbol:"fr",label:"French"},{symbol:"fr-CA",label:"Canadian French"},{symbol:"de",label:"German"},{symbol:"it",label:"Italian"},{symbol:"nl",label:"Dutch"},{symbol:"es",label:"Spanish"},{symbol:"pt-PT",label:"Portuguese Portugal"},{symbol:"pt-BR",label:"Portuguese Brazil"},{symbol:"tr",label:"Turkish"},{symbol:"sv",label:"Swedish"},{symbol:"da",label:"Danish"},{symbol:"no",label:"Norwegian"},{symbol:"en-GB",label:"British English"}],this.isSupported=function(e){for(var t=0;t1){let i=t[1].toUpperCase();i.length>2&&(i=i[0]+i.substring(1).toLowerCase()),e+="-"+i}return this.isSupported(e)||(e=e.indexOf("zh-CN")>-1?"zh-Hans":e.indexOf("zh-TW")>-1?"zh-Hant":t.length>1&&this.isSupported(t[0].toLowerCase())?t[0]:"en"),e},this.getLanguages=function(){return this.names.slice()}};e.exports={Lang:t}},8600:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DISABLE_FORGE_CANVAS_LOGO:()=>l,DISABLE_FORGE_LOGO:()=>a,fromUrlSafeBase64:()=>y,getHtmlTemplate:()=>u,getParameterByName:()=>p,getParameterByNameFromPath:()=>m,getResourceUrl:()=>f,getScript:()=>c,injectCSS:()=>h,isExperimentalFlagEnabled:()=>d,stringToDOM:()=>g,toUrlSafeBase64:()=>v});var n=i(55280),r=(0,n.getGlobal)(),o=r,s=o&&o.document;r.LOCALIZATION_REL_PATH="",r.LMV_VIEWER_VERSION="7.99.1",r.LMV_BUILD_TYPE="Production",r.LMV_RESOURCE_ROOT="",r.LMV_IS_FLUENT_BUILD=!1,r.USE_OTG_DS_PROXY=!1,r.LMV_THIRD_PARTY_COOKIE=!(0,n.isNodeJS)()&&void 0,"v"===r.LMV_VIEWER_VERSION.charAt(0)&&(r.LMV_VIEWER_VERSION=r.LMV_VIEWER_VERSION.substr(1)),r.LMV_VECTOR_PDF=!1,r.LMV_RASTER_PDF=!0;let a=!1,l=!0;function c(e){e=e.toLowerCase();var t=s.getElementsByTagName("SCRIPT");if(t&&t.length>0)for(var i=0;i0?e:f(e),r=s.getElementsByTagName("link"),o=0,a=r.length;o0?e:f(e),n=new XMLHttpRequest;function r(e){t(e,null)}n.onload=function(e){var i=e.currentTarget.responseText;t(null,i)},n.onerror=r,n.ontimeout=r,n.open("GET",i,!0),n.send()}function d(e,t){return!(!t||!Array.isArray(t.experimental))&&-1!==t.experimental.indexOf(e)}function f(e){return r.LMV_RESOURCE_ROOT+e}function p(e){return"undefined"==typeof window?"":m(e,o.location.href)}function m(e,t){e=e.replace(/[[]/,"\\[").replace(/[\]]/,"\\]");var i=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(t);return null==i?"":decodeURIComponent(i[1].replace(/\+/g," "))}function g(e){var t=s.createElement("div");return t.innerHTML=e,t.firstChild}function v(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function y(e){for(e=(e=e.replace(/-/g,"+")).replace(/_/g,"/");e.length%4;)e+="=";return(0,n.isNodeJS)()?Buffer.from(e,"base64").toString():atob(e)}},1581:(e,t,i)=>{"use strict";i.r(t),i.d(t,{AlertBox:()=>r});var n=i(38842);function r(){}r.instances=[],r.displayError=function(e,t,i,o,s,a){var l=e.ownerDocument,c=l.createElement("div");c.className="alert-box error",e.appendChild(c);var h=o;h||(h="img-item-not-found");var u=l.createElement("div");u.className="alert-box-image "+h,c.appendChild(u);var d=l.createElement("div");d.className="alert-box-msg",c.appendChild(d);var f=i;f||(f=n.A.t("Error Occurred",{defaultValue:"Error Occurred"}));var p=l.createElement("div");p.className="alert-box-title",p.textContent=f,p.setAttribute("data-i18n",f),d.appendChild(p);var m=l.createElement("div");if(m.className="alert-box-text",m.textContent=t,m.setAttribute("data-i18n",t),d.appendChild(m),s){var g=l.createElement("div");g.className="alert-box-content",d.appendChild(g);var v=l.createElement("ul");v.className="alert-box-content";for(var y=0;y")){var i=e.split("
    ");t.msg=i[0],i=i[1].split("
"),t.list=i[0].split(", "),1===t.list.length&&(t.list=i[0].split(","))}return t},r.generateListElement=function(e,t){for(var i=t.createElement("ul"),n=0;nt&&t.tag===e));if(-1==t)return!1;var i=r.instances[t];return i.alertBox.style.visibility="hidden",i.container.removeChild(i.alertBox),r.instances.splice(t,1),!0},r.dismiss=function(){if(r.instances.length>0){var e=r.instances.pop();return e.alertBox.style.visibility="hidden",e.container.removeChild(e.alertBox),!0}return!1}},86022:(e,t,i)=>{"use strict";i.r(t),i.d(t,{OptionButton:()=>u,OptionCheckbox:()=>c,OptionDropDown:()=>d,OptionLabel:()=>h,OptionRow:()=>p,OptionSlider:()=>l,ResizeFooter:()=>f,SimpleList:()=>m});var n=i(25004),r=i(38842),o=i(55280),s=i(26206);const a=i(41944);function l(e,t,i,n,o){var s=this;this.tbody=n;var a=o&&o.insertAtIndex?o.insertAtIndex:-1;this.hideStepper=o&&o.hideStepper;var l=o&&o.hideCaption;this.sliderRow=this.tbody.insertRow(a),this.sliderRow.classList.add("switch-slider-row");var c=this.getDocument(),h=this.sliderRow.insertCell(0);function u(e){e.target!=s.stepperElement&&(s.stepperElement.value=s.sliderElement.value),s.fireChangeEvent()}this.caption=c.createElement("div"),this.caption.setAttribute("data-i18n",e),this.caption.textContent=r.A.t(e),l&&(this.caption.style.display="none"),h.appendChild(this.caption),h=this.sliderRow.insertCell(1),this.sliderElement=c.createElement("input"),this.sliderElement.type="range",this.sliderElement.id=e+"_slider",this.sliderElement.min=t,this.sliderElement.max=i,this.sliderElement.style.width="85%",h.appendChild(this.sliderElement),h=this.sliderRow.insertCell(2),this.stepperElement=c.createElement("input"),this.stepperElement.type="number",this.stepperElement.id=e+"_stepper",this.stepperElement.min=t,this.stepperElement.max=i,this.stepperElement.step=1,this.stepperElement.style.width="64px",this.hideStepper&&(this.stepperElement.style.display="none"),h.appendChild(this.stepperElement),this.blockEvent=!1,this.stepperElement.addEventListener("change",(function(e){e.target!=s.sliderElement&&(s.sliderElement.value=s.stepperElement.value),s.fireChangeEvent()}),!1),this.sliderElement.addEventListener("change",u,!1),this.sliderElement.addEventListener("input",u,!1)}function c(e,t,i,n,s,l){var c=this;this.tbody=t;var h=l&&l.insertAtIndex?l.insertAtIndex:-1;this.sliderRow=this.tbody.insertRow(h),this.sliderRow.classList.add("switch-slider-row");var u=this.getDocument(),d=this.sliderRow.insertCell(0);if(this.caption=u.createElement("div"),this.caption.setAttribute("data-i18n",e),this.caption.textContent=r.A.t(e,null==l?void 0:l.i18nOptions),d.appendChild(this.caption),l&&!0===l.betaLabel){let e=u.createElement("div");e.setAttribute("data-i18n","BETA"),e.textContent=r.A.t("BETA",null==l?void 0:l.i18nOptions),e.classList.add("switch-slider-row-beta-label"),this.caption.appendChild(e)}d=this.sliderRow.insertCell(1),n&&(this.description=u.createElement("div"),this.description.setAttribute("data-i18n",n),this.description.textContent=r.A.t(n,null==l?void 0:l.i18nOptions),d.appendChild(this.description),d=this.sliderRow.insertCell(2));var f=u.createElement("label");f.classList.add("switch"),this.checkElement=u.createElement("input"),this.checkElement.type="checkbox",this.checkElement.id=e+"_check",this.checkElement.checked=i,f.appendChild(this.checkElement);var p=u.createElement("div");p.classList.add("slider"),f.appendChild(p),d.appendChild(f),this.blockEvent=!1,this.checked=i,this.checkElement.addEventListener("change",(function(e){c.fireChangeEvent()}),!1),(0,o.isTouchDevice)()&&(this.sliderRowHammer=new a.Manager(this.sliderRow,{recognizers:[[a.Tap]],handlePointerEventMouse:!1,inputClass:a.TouchInput}),this.sliderRowHammer.on("tap",(function(e){e.preventDefault(),e.target.click()}))),this.checkElement.addEventListener("click",(function(e){e.stopPropagation()}),!1),this.sliderRow.addEventListener("click",(function(e){c.checkElement.disabled||(c.checkElement.checked=!c.checkElement.checked,c.fireChangeEvent())}),!1),s&&this.setGlobalManager(s)}function h(e,t,i,n){this.tbody=t;var o=n&&n.insertAtIndex?n.insertAtIndex:-1;this.sliderRow=this.tbody.insertRow(o);var s=this.getDocument(),a=this.sliderRow.insertCell(0);this.caption=s.createElement("div"),this.caption.setAttribute("data-i18n",e),this.caption.textContent=r.A.t(e),a.appendChild(this.caption),a.colSpan="3",this.blockEvent=!1,this.removeFromParent=function(){this.tbody.removeChild(this.sliderRow),this.tbody=null,this.sliderRow=null,this.caption=null}}function u(e,t,i,n){this.tbody=t;var o=n&&n.insertAtIndex?n.insertAtIndex:-1;this.sliderRow=this.tbody.insertRow(o),this.sliderRow.insertCell();var s=this.sliderRow.insertCell();this.sliderRow.insertCell();var a=this.getDocument();this.caption=a.createElement("div"),this.caption.setAttribute("data-i18n",e),this.caption.textContent=r.A.t(e),this.caption.classList.add("adsk-button"),this.caption.classList.add("table-button"),s.appendChild(this.caption),this.removeFromParent=function(){this.tbody.removeChild(this.sliderRow),this._onClick&&(this.caption.removeEventListener("click",this._onClick),this._onClick=null),this.tbody=null,this.sliderRow=null,this.caption=null},this.setOnClick=function(e){this._onClick=e,this.caption.addEventListener("click",e,!1)}}function d(e,t,i,n,o,s,a){var l=this;this.tbody=t;var c=a&&a.insertAtIndex?a.insertAtIndex:-1;this.sliderRow=this.tbody.insertRow(c);var h=this.getDocument();this.dropdownElement=h.createElement("select"),this.dropdownElement.id=e+"_dropdown",this.dropdownElement.classList.add("option-drop-down");for(var u=0;u{"use strict";i.r(t),i.d(t,{ContextMenu:()=>l});var n=i(55280),r=i(83081),o=i(38842),s=i(26206),a=i(24840);function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.viewer=e,this.setGlobalManager(e.globalManager),this.menus=[],this.container=null,this.open=!1,this._onDOMevent=this._onDOMevent.bind(this),this.onHide=t.onHide}l.prototype.constructor=l,s.GlobalManagerMixin.call(l.prototype),l.prototype.show=function(e,t){var i=this.viewer.container.getBoundingClientRect();Array.isArray(e.changedPointers)&&e.changedPointers.length>0&&(e.clientX=e.changedPointers[0].clientX,e.clientY=e.changedPointers[0].clientY);var n=e.clientX-i.left,r=e.clientY-i.top;this.open||(this.showMenu(t,n,r),this.open=!0),this._startX=e.clientX,this._startY=e.clientY},l.prototype.showMenu=function(e,t,i,o){var s,a=[],l=this.getDocument(),c=l.createElement("div");c.style.left="0",c.style.top="0",c.style.width="100%",c.style.height="100%",c.style.position="absolute",c.style.zIndex="10";var h=l.createElement("div");h.classList.add("menu"),h.classList.add("docking-panel"),h.classList.add("docking-panel-container-solid-color-a"),c.appendChild(h),this.viewer.container.appendChild(c),this.container=c,this.menus.push(h);let u=!1;for(var d=0;d0&&i.removeChild(n[0])}}var b=h.getBoundingClientRect(),x=b.width,_=b.height,E=this.viewer.container.getBoundingClientRect(),S=E.width,A=E.height;(o=!!o||(0,n.isTouchDevice)()&&!this.viewer.navigation.getUseLeftHandedInput())&&(t-=x),t<0&&(t=0),S{const i=e.getElementsByClassName("menu-item-expand");e.removeChild(i[0]);const n=e.getElementsByClassName("menu-item-icon");n.length>0&&e.insertBefore(n[0],e.childNodes[e.length-1]),this.setMenuExpand(e,!0,t)};let T=!1;for(d=0;d0&&T){const e=h.children;for(let t=0;t2&&-1!==i.children[2].className.indexOf("menu-item-expand")&&w(i,!1)}}this.container.addEventListener("touchend",this._onDOMevent),this.container.addEventListener("mousedown",this._onDOMevent),this.container.addEventListener("mouseup",this._onDOMevent),(0,n.isTouchDevice)()||this.container.addEventListener("mousemove",this._onDOMevent)},l.prototype._onDOMevent=function(e){switch(e.type){case"touchend":this._isContextMenu(e)||this.hide();break;case"mousedown":this._startX=e.clientX,this._startY=e.clientY;break;case"mouseup":this._isContextMenu(e)||(this.hide(),a.EventUtils.isRightClick(e)&&e.clientX===this._startX&&e.clientY===this._startY&&this.viewer.triggerContextMenu(e));break;case"mousemove":{if(!this.currentItem||this.menus.length<2)break;const t=this._isInside(e,this.currentItem),i=this._isInside(e,this.menus[1]);t||i?this.currentItem.backgroundColor&&(this.currentItem.style.backgroundColor=this.currentItem.backgroundColor):(this.hideMenu(this.menus[1]),this.currentItem.style.backgroundColor=null,this.currentItem=null);break}}},l.prototype.createMenuItem=function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];var r=this.getDocument().createElement("div");return r.className="menu-item",i=i||"",this.setMenuItemIcon(r,t),this.setMenuItemText(r,e),this.setMenuExpand(r,!1,n),this.setMenuItemShortcut(r,i),r},l.prototype.createDivider=function(){var e=this.getDocument(),t=e.createElement("div");t.className="menu-divider-container";var i=e.createElement("div");return i.className="menu-divider",t.appendChild(i),t},l.prototype.setMenuItemIcon=function(e,t){var i=this.getDocument().createElement("div");i.classList.add("menu-item-icon"),t&&i.classList.add(t),e.appendChild(i)},l.prototype.setMenuItemText=function(e,t){var i=this.getDocument().createElement("div");i.classList.add("menu-item-text"),i.setAttribute("data-i18n",t),i.textContent=o.A.t(t),e.appendChild(i)},l.prototype.setMenuItemShortcut=function(e,t){var i=this.getDocument().createElement("div");i.classList.add("menu-item-shortcut"),i.textContent=t,e.appendChild(i)},l.prototype.setMenuExpand=function(e,t,i){var n=this.getDocument().createElement("div");n.classList.add("menu-item-expand"),t?(n.style.transform="scale(-1)",e.insertBefore(n,e.childNodes[0])):e.appendChild(n);const r=0|i;n.style.opacity=r},l.prototype.addCallbackToMenuItem=function(e,t){var i=this;e.addEventListener("click",(function(e){return i.hide(),t(),e.preventDefault(),!1}),!1)},l.prototype.addSubmenuCallbackToMenuItem=function(e,t,i,r,o){var s=this;t.isChild=!0,(0,n.isTouchDevice)()?e.addEventListener("click",(function(){s.open=!0,s.currentItem=e,s.showMenu(t,i,r,o)}),!1):e.addEventListener("mouseenter",(function(){s.open=!0,s.currentItem=e;const n=s.getWindow().getComputedStyle(s.currentItem).getPropertyValue("background-color");s.currentItem.backgroundColor=n,s.showMenu(t,i,r,o)}),!1)},l.prototype.hideMenu=function(e){const t=e=>{e.removeEventListener("touchend",this._onDOMevent),e.removeEventListener("mousedown",this._onDOMevent),e.removeEventListener("mouseup",this._onDOMevent),(0,n.isTouchDevice)()||e.removeEventListener("mousemove",this._onDOMevent),e.parentNode.removeChild(e)};e&&-1!==this.menus.indexOf(e)&&e.parentNode&&(t(e.parentNode),this.menus.splice(this.menus.indexOf(e),1)),0===this.menus.length?(this.open=!1,this.container=null):1===this.menus.length&&(this.container=this.menus[0].parentNode)},l.prototype.hide=function(){if(this.open){for(;this.menus.length>0;)this.hideMenu(this.menus[0]);return this.onHide&&this.onHide(),!0}return!1},l.prototype._isContextMenu=function(e){for(let i=0;i0&&(e.clientX=e.changedPointers[0].clientX,e.clientY=e.changedPointers[0].clientY);var n=Math.ceil(e.clientX-i.left),r=Math.ceil(e.clientY-i.top);const o=t.getBoundingClientRect(),s=Math.floor(o.top-i.top)-1,a=Math.floor(o.left-i.left)-1,l=Math.ceil(o.bottom-i.top),c=Math.ceil(o.right-i.left);return r>=s&&r<=l&&n>=a&&n<=c}},82024:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DataTable:()=>o});var n=i(8939);const r=Autodesk.Viewing.UI;function o(e){if(!(e instanceof r.DockingPanel))throw new Error("Invalid docking panel");this.dockingPanel=e;let t=this.dockingPanel.getDocument();this.datatableDiv=t.createElement("div"),this.datatableDiv.setAttribute("id","datatable"),this.datatableDiv.setAttribute("class","datatable"),e.container.appendChild(this.datatableDiv),e.footerInstance&&(e.footerInstance.resizeCallback=this._fitHeaderColumns.bind(this)),this.groupedByColumn=!1,this.aggregated=!1}o.prototype._createColumns=function(e){let t=this.dockingPanel.getDocument();var i=t.createElement("div");i.setAttribute("id","columnArea"),i.setAttribute("class","clusterize-headers");var n='
';i.innerHTML=n,this.datatableDiv.appendChild(i);var r=i.querySelector("tr");e.forEach((function(e){var i=t.createElement("th");i.appendChild(t.createTextNode(e)),r.appendChild(i)})),n=this.datatableDiv.querySelector("table"),this._makeTableSortable(n)},o.prototype._createRows=function(){var e=this.dockingPanel.getDocument().createElement("div");e.innerHTML='
Loading data…
',this.datatableDiv.appendChild(e)},o.prototype.setData=function(e,t){if(t.length!==e[0].length)throw new Error("Column length should be same as the row length");this._createColumns(t),this._createRows();var i=this;this.rowData=e,this.clusterize=new n({rows:this.rowData.map((function(e){return""+e.map((function(e){return""+e+""})).join(" ")+""})),scrollId:"scrollArea",contentId:"contentArea",callbacks:{clusterChanged:function(){i._fitHeaderColumns(),i._syncHeaderWidth(),i.groupedByColumn&&i._updateClusterGroup()}}}),this.datatableDiv.querySelector(".clusterize-scroll").addEventListener("scroll",(function(){var e=this.scrollLeft;r(e)}));var r=function(e){i.datatableDiv.querySelector("#headersArea").style.setProperty("margin-left",-e+"px")}},o.prototype.destroyTable=function(){this.clusterize.destroy(!0),this.clusterize=null,this.rowData=null,this.groupedByColumn=!1},o.prototype._makeTableSortable=function(e){var t,i=this,n=e.tHead;if(n&&n.rows[0]&&(n=n.rows[0].cells),n)for(t=n.length;--t>=0;)!function(e){var t=1;n[e].addEventListener("click",(function(){i._sortTable(e,t=1-t)}))}(t)},o.prototype._sortTable=function(e,t){var i=this.rowData;this.sortFunction||this.restoreDefaultSortFunction();var n=this.sortFunction&&this.sortFunction.bind(this),r=(i=i.sort(n(e,t))).map((function(e){return""+e.map((function(e){return""+e+""})).join(" ")+""}));this.clusterize.update(r);var o=this.datatableDiv.querySelector("#bodyArea");o.classList.contains("table-striped")||o.classList.add("table-striped")},o.prototype.setSortFunction=function(e){this.sortFunction=e},o.prototype.getSortFunction=function(){return this.sortFunction},o.prototype.restoreDefaultSortFunction=function(){this.sortFunction=function(e,t){return t=-(+t||-1),function(i,n){return t*i[e].localeCompare(n[e])}}},o.prototype.getGroupByColumn=function(e){var t=this.rowData,i={};for(let r=0;r0)o=""+o.map((function(e){return""+e+""})).join(" ")+"";else{const e=o.length;o=""+o.map((function(t,i){return e===i+1?""+t+'':""+t+""})).join(" ")+""}i[n].push(o)}var r=[];for(let e in i){var o=i[e];for(let e=0;e{this._slideDown(e),e.style.fontSize="14px"}));var a=this._fitHeaderColumns.bind(this),l=this._expandContent.bind(this);this.datatableDiv.querySelectorAll("span").forEach((e=>{e.addEventListener("click",(function(e){l(this,e),a()}))})),this._fitHeaderColumns(),this.groupedByColumn||(this.groupedByColumn=!0)},o.prototype._updateClusterGroup=function(){var e=this._fitHeaderColumns.bind(this),t=this._expandContent.bind(this);this.datatableDiv.querySelectorAll("span").forEach((i=>{i.addEventListener("click",(function(i){t(this,i),e()}))})),this.datatableDiv.querySelectorAll(".subrow").forEach((e=>{this._slideDown(e),e.style.fontSize="14px"}))},o.prototype._expandContent=function(e){var t=!1;"collapsed"===e.className&&(t=!0);var i=t?14:0,n=e.closest("tr"),r=this._nextUntil(n,":not(.subrow)");for(let e=0;e{e.style.removeProperty("height"),e.style.removeProperty("overflow"),e.style.removeProperty("transition-duration"),e.style.removeProperty("transition-property")}),t)},o.prototype.getAggregate=function(e,t){var i,n=this.rowData,r=null;switch(e){case"MIN":r=function(){var e=n[0][t];for(let i=1;in[i][t]&&(e=n[i][t]);return e||0}();break;case"MAX":r=function(){var e=n[0][t];for(let i=1;i',this.datatableDiv.appendChild(a)}for(var l=this.datatableDiv.querySelector("#aggregateArea"),c=0;c-1)return}for(var h=0;h{"use strict";i.r(t),i.d(t,{DockingPanel:()=>o});var n=i(38842),r=i(86022);function o(e,t,i,n){this.kMinWdth=100,this.kMinHeight=100,this.visibilityCallbacks=[],this.movedSinceLastClick=!1,this.movedSinceCreate=!1,this.parentContainer=e;var r=this.getDocument();this.container=r.createElement("div"),this.container.id=t,this.container.lastWidth="",this.container.dockRight=!1,this.container.dockBottom=!1,this.titleLabel=i,n=n||{},Object.prototype.hasOwnProperty.call(n,"localizeTitle")||(n.localizeTitle=!0),Object.prototype.hasOwnProperty.call(n,"addFooter")||(n.addFooter=!0),this.options=n,this.container.classList.add("docking-panel"),e.appendChild(this.container),this.listeners=[],this.initialize(),this.setVisible(!1)}i(26206).GlobalManagerMixin.call(o.prototype),o.prototype.onSetGlobalManager=function(e){this.footerInstance&&this.footerInstance.setGlobalManager(e)},o.prototype.initialize=function(){this.title=this.createTitleBar(this.titleLabel||this.container.id),this.container.appendChild(this.title),this.initializeMoveHandlers(this.title),this.setTitle(this.titleLabel||this.container.id,this.options),this.closer=this.createCloseButton(),this.container.appendChild(this.closer),this.options.addFooter&&(this.footer=this.createFooter(),this.container.appendChild(this.footer))},o.prototype.uninitialize=function(){for(var e=0;e0?l+"px":0}this.container.style.maxHeight=t.height+"px",this.container.style.maxWidth=t.width+"px",this.container.style.display="block",this.bringToFront()}else this.container.lastWidth=this.container.style.width,this.container.lastHeight=this.container.style.height,this.container.style.display="none";for(var c=0;cparseInt(c.style.maxWidth)&&(c.style.width=c.style.maxWidth),c.style.maxHeight&&parseInt(c.style.height)>parseInt(c.style.maxHeight)&&(c.style.height=c.style.maxHeight),parseInt(c.style.width)o&&(t=o),this.container.style.maxHeight=o.toString()+"px",this.container.style.height=t.toString()+"px"}},o.prototype.getContainerBoundingRect=function(){return this.parentContainer.getBoundingClientRect()},o.prototype.animateScroll=function(e,t,i){var n=this.scrollEaseCurve,r=this.scrollEaseSpeed,o=this.scrollContainer;var s=performance.now();requestAnimationFrame((function a(l){var c=(l-s)*r;c=Math.min(c,1);var h=function(e,t){var i=3*e[1],n=3*(e[3]-e[1])-i;return(((1-i-n)*t+n)*t+i)*t}(n,c),u=e+(t-e)*h;o.scrollTop=u,i&&i(u),c<1&&requestAnimationFrame(a)}))},o.prototype.onViewerResize=function(e,t,i,n,r,o){var s=this.container,a=s.getBoundingClientRect(),l=a.width,c=a.height;if(!l||!c)return!1;var h=a.top,u=a.bottom,d=a.left,f=a.right;return r{"use strict";i.r(t),i.d(t,{ErrorHandler:()=>l});var n=i(1581),r=i(83081),o=i(38842),s=i(11653),a={1:{img:"img-reload","globalized-msg":"Viewer-UnknownFailure","default-msg":" Sorry We seem to have some technical difficulties and couldn't complete your request.Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem."},2:{img:"img-unsupported","globalized-msg":"Viewer-BadData","default-msg":" Sorry The item you are trying to view was not processed completely. Try loading the item again.Please upload the file again to see if that fixes the issue."},3:{img:"img-reload","globalized-msg":"Viewer-NetworkError","default-msg":" Sorry We seem to have some technical difficulties and couldn't complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem."},4:{img:"img-unlock","globalized-msg":"Viewer-AccessDenied","default-msg":" No access Sorry. You don’t have the required privileges to access this item. Please contact the author"},5:{img:"img-item-not-found","globalized-msg":"Viewer-FileNotFound","default-msg":' Sorry We can’t display the item you are looking for. It may not have been processed yet. It may have been moved, deleted, or you may be using a corrupt file or unsupported file format. Try loading the item again. Please upload the file again to see if that fixes the issue.
See a list of supported formats.'},6:{img:"img-reload","globalized-msg":"Viewer-ServerError","default-msg":" Sorry We seem to have some technical difficulties and couldn't complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem."},7:{img:"img-reload","globalized-msg":"Viewer-UnhandledResponseCode","default-msg":" Network problem Sorry. We seem to have some technical difficulties and couldn't complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem."},8:{img:"img-unsupported","globalized-msg":"Viewer-WebGlNotSupported","default-msg":'SorryWe can\'t show this item because this browser doesn\'t support WebGL.Try Google Chrome, Mozilla Firefox, or another browser that supports WebGL 3D graphics.For more information, see the A360 browser reqirements.'},9:{img:"img-item-not-found","globalized-msg":"Viewer-NoViewable","default-msg":" No viewable content There’s nothing to display for this item. It may not have been processed or it may not have content we can display. Please contact the author. Please upload the file again to see if that fixes the issue."},10:{img:"img-unsupported","globalized-msg":"Viewer-WebGlDisabled","default-msg":'SorryWe can\'t show this item because WebGL is disabled on this device. For more information see the A360 Help.'},11:{img:"img-item-not-found","globalized-msg":"Viewer-ModeIsEmpty","default-msg":"Model is emptyModel is empty, there is no geometry for the viewer to show. Please contact the author. Please upload the file again to see if that fixes the issue."},13:{img:"img-unsupported","globalized-msg":"Viewer-FileExtNotSupported","default-msg":{title:"Sorry",message:"The file extension loaded into the Viewer is not supported",hints:["Try a different file"]}},15:{img:"img-unsupported","globalized-msg":"Viewer-WebGlContextLost","default-msg":{title:"WebGL context lost",message:"Unable to recover from software mode. Please restart your browser and reload the Viewer.",hints:["If you continue to encounter this issue when viewing this model, we recommend switching to a different browser."]}}};function l(){}l.prototype.constructor=l,l.reportError=function(e,t,i,c,h,u){if(l.currentError=null,l.currentErrors=null,t){var d={category:"error",code:t,message:i,httpStatusCode:c,httpStatusText:h};r.logger.track(d,!0),l.currentError=[e,t,i,u];var f=a[t];if(f){(b={defaultValue:""}).defaultValue=f["default-msg"];var p=f.img,m=f["globalized-msg"],g=this.parseErrorString(m,b);if(t===Autodesk.Viewing.ErrorCodes.BROWSER_WEBGL_DISABLED||t===Autodesk.Viewing.ErrorCodes.BROWSER_WEBGL_NOT_SUPPORTED)for(var v=(0,s.getWebGLHelpLink)()||"http://www.autodesk.com/a360-browsers",y=0;y")){var s=r.split("")[1].split("");i.header=s[0],r=s[1]}if(r&&-1!=r.indexOf("")){s=r.split("")[1].split("");i.msg=s[0],r=s[1]}else i.msg=r;if(r&&-1!=r.indexOf("")){i.hints=[];for(var a=r.split(""),l=0;l0)if(n.AlertBox.dismiss(),l.currentError){var e=l.currentError.shift(),t=l.currentError;l.reportError(e,t[0],t[1],t[2])}else{e=l.currentErrors.shift();var i=l.currentErrors[0];l.reportErrors(e,i)}},l.dismissError=function(e){return n.AlertBox.dismissByTag(e)}},66316:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GuiViewer3D:()=>D});var n=i(19556),r=i(35922),o=i(91735),s=i(55280),a=i(57480),l=i(16271),c=i(38842),h=i(77427),u=i(8600),d=i(83081),f=i(4746),p=i(1581),m=i(22767),g=i(37463),v=i(91904),y=i(36523),b=i(88946),x=i(42440),_=i(47898),E=i(94589),S=i(92037),A=i(41129),w=i(4355);function T(e,t){null!=t&&t.globalManager&&this.setGlobalManager(t.globalManager),w.ToolBar.call(this,e,t),this.onToolbarUpdated=(null==t?void 0:t.onToolbarUpdated)||function(){},this.screenModeDelegate=null==t?void 0:t.screenModeDelegate,this.navigation=null==t?void 0:t.navigation,this.onClickViewerOption=(null==t?void 0:t.onClickViewerOption)||function(){},this.onClickRenderOptions=(null==t?void 0:t.onClickRenderOptions)||function(){},this.onClickFullScreen=(null==t?void 0:t.onClickFullScreen)||function(){},this.navTools=new A.RadioButtonGroup(y.TOOLBAR.NAVTOOLSID),this.modelTools=new g.ControlGroup(y.TOOLBAR.MODELTOOLSID),this.settingsTools=new g.ControlGroup(y.TOOLBAR.SETTINGSTOOLSID),this.addControl(this.navTools),this.addControl(this.modelTools),this.addControl(this.settingsTools)}i(26206).GlobalManagerMixin.call(T.prototype),T.prototype=Object.create(w.ToolBar.prototype),T.prototype.constructor=T,T.prototype.initRenderOptionsButton=function(){this.settingsTools&&!this.renderOptionsButton&&(this.renderOptionsButton=new m.Button("toolbar-renderOptionsTool"),this.renderOptionsButton.setToolTip("Rendering options"),this.renderOptionsButton.setIcon("adsk-icon-settings-render"),this.renderOptionsButton.onClick=this.onClickRenderOptions,this.settingsTools.addControl(this.renderOptionsButton))},T.prototype.initSettingsOptionsButton=function(){var e=new m.Button("toolbar-settingsTool");this.viewerOptionButton=e,e.setIcon("adsk-icon-settings"),e.setToolTip("Settings"),this.viewerOptionButton.onClick=this.onClickViewerOption,this.settingsTools.addControl(e)},T.prototype.initModelTools=function(){if(!this.settingsTools.fullscreenbutton){var e=new m.Button("toolbar-fullscreenTool",{collapsible:!1});e.setToolTip("Full screen"),e.setIcon("adsk-icon-fullscreen"),e.onClick=this.onClickFullScreen,this.settingsTools.addControl(e),this.settingsTools.fullscreenbutton=e,this.updateFullscreenButton(this.screenModeDelegate.getMode())}},T.prototype.updateFullscreenButton=function(e){var t="adsk-icon-fullscreen";switch(e){case S.ScreenMode.kNormal:this.screenModeDelegate.isModeSupported(S.ScreenMode.kFullBrowser)||(t="adsk-icon-fullscreen");break;case S.ScreenMode.kFullBrowser:t=this.screenModeDelegate.isModeSupported(S.ScreenMode.kFullScreen)?"adsk-icon-fullscreen":"adsk-icon-fullscreen-exit";break;case S.ScreenMode.kFullScreen:t="adsk-icon-fullscreen-exit"}this.settingsTools.fullscreenbutton.setIcon(t)},T.prototype.updateToolbarButtons=function(e,t){var i,n,r;r=e>310,(n=this.modelTools.getControl("toolbar-explodeTool"))&&n.setVisible(r),r=e>380?"block":"none",(n=this.modelTools.getControl("toolbar-collaborateTool"))&&n.setDisplay(r),r=e>515?"block":"none";var o=this.navTools.getControl("toolbar-cameraSubmenuTool");o&&(o.setDisplay(r),(n=o.subMenu.getControl("toolbar-homeTool"))&&n.setDisplay(this.navigation.isActionEnabled("gotoview")?"block":"none"),(n=o.subMenu.getControl("toolbar-fitToViewTool"))&&n.setDisplay(this.navigation.isActionEnabled("gotoview")?"block":"none"),(n=o.subMenu.getControl("toolbar-focalLengthTool"))&&n.setDisplay(this.navigation.isActionEnabled("fov")?"block":"none"),(n=o.subMenu.getControl("toolbar-rollTool"))&&n.setDisplay(this.navigation.isActionEnabled("roll")?"block":"none")),r=e>700?"block":"none",(n=this.modelTools.getControl("toolbar-measureTool"))&&n.setDisplay(r),(n=this.modelTools.getControl("toolbar-sectionTool"))&&n.setDisplay(r),r=e>740?"block":"none",(n=this.navTools.getControl("toolbar-beelineTool"))&&n.setDisplay(this.navigation.isActionEnabled("walk")?r:"none"),(n=this.navTools.getControl("toolbar-firstPersonTool"))&&n.setDisplay(this.navigation.isActionEnabled("walk")?r:"none"),(n=this.navTools.getControl("toolbar-zoomTool"))&&n.setDisplay(this.navigation.isActionEnabled("zoom")?r:"none"),(n=this.navTools.getControl("toolbar-panTool"))&&n.setDisplay(this.navigation.isActionEnabled("pan")?r:"none"),(n=this.navTools.getControl("toolbar-orbitTools"))&&n.setDisplay(this.navigation.isActionEnabled("orbit")?r:"none"),null===(i=this.onToolbarUpdated)||void 0===i||i.call(this,e,t)},T.prototype.registerCustomizeToolbarCB=function(e){this.onToolbarUpdated=e};var M=i(11337),C=i(28441),P=i(57872);function D(e,t){t||(t={}),t.startOnInitialize=!1,o.Viewer3D.call(this,e,t),this.toolbar=null,this.dockingPanels=[],this.onFullScreenModeEvent=this.onFullScreenModeEvent.bind(this),this.onProgressBarUpdate=this.onProgressBarUpdate.bind(this),this.progressInModelLoad=!1,this.progressInModelOptimizing=!1}D.prototype=Object.create(o.Viewer3D.prototype),D.prototype.constructor=D,D.prototype.initialize=function(e){var t=o.Viewer3D.prototype.initialize.call(this,e);if(t>0)return v.ErrorHandler.reportError(this.container,t),t;var i=this;if(this.toolController){var r=new f.HotGestureTool(this);this.toolController.registerTool(r),this.toolController.activateTool(r.getName())}return this.addEventListener(n.FULLSCREEN_MODE_EVENT,this.onFullScreenModeEvent),this.contextMenu||this.setDefaultContextMenu(),this.progressbar=new x.ProgressBar(this.container,P.USE_HLOD),this.addEventListener(n.PROGRESS_UPDATE_EVENT,this.onProgressBarUpdate),this.addEventListener(n.VIEWER_RESIZE_EVENT,(function(e){var t;i.resizePanels(),null===(t=i.toolbar)||void 0===t||t.updateToolbarButtons(e.width,e.height)})),this.addEventListener(n.NAVIGATION_MODE_CHANGED_EVENT,(function(){var e;null===(e=i.toolbar)||void 0===e||e.updateToolbarButtons(i.container.clientWidth,i.container.clientHeight)})),this.initEscapeHandlers(),this.localize(),this.addEventListener(n.WEBGL_CONTEXT_LOST_EVENT,function(){for(var e=this.container,t=e.childElementCount,i=0;i=0;t--)o(e.children[t],e,t);else{let n=r.find((t=>t.data.name==e.name));n&&(n.data.isViewpoint=!0,n.data.entry=e.entry,t.children.splice(i,1))}}if(r){var s;let t=null===(s=e.children)||void 0===s?void 0:s.length;for(;t--;)o(e.children[t],e,t)}let a=null===(n=t.getDocumentNode())||void 0===n?void 0:n.getRootNode();if(a){const t=new Autodesk.Viewing.BubbleNode(e);t.parent=a.children[0],a.children[0].children.push(t)}}};var l=o.Viewer3D.prototype.loadModel.call(this,e,t,(function(e){setTimeout((function(){t&&(t.loadAsHidden||t.headlessViewer)||function(e){s.running?s.createUI(e):d.logger.error("createUI expects the viewer to be running.",(0,a.errorCodeString)(a.ErrorCodes.VIEWER_INTERNAL_ERROR))}(e),i&&(i.call(i,e),i=null)}),0)}),(function(e){e!==a.ErrorCodes.LOAD_CANCELED?v.ErrorHandler.reportError(s.container,e):d.logger.warn("A load was canceled"),n&&n.apply(n,arguments)}),r);return l},D.prototype.createUI=function(e,t){if(this.model!==e&&!t)return;var i=this;const r=this._createToolbar();this.checkGeometry=function(e){setTimeout((function(){if(i.impl&&!i.impl.is2d&&e.model&&!e.model.hasGeometry()){var t=a.ErrorCodes.BAD_DATA_MODEL_IS_EMPTY;v.ErrorHandler.reportError(i.container,t,"Model is empty"),i._loadingSpinner.hide()}}),0)};var o=this.config.disabledExtensions||{};const l=e=>-1===(this.profile&&this.profile.extensions.unload?this.profile.extensions.unload:[]).indexOf(e);this.initModelTools(e),(0,s.getGlobal)().ENABLE_DEBUG&&this.initDebugTools(),"true"===(0,u.getParameterByName)("lmv_viewer_debug")&&this.loadExtension("Autodesk.Debug",this.config);var c=function(e){i.getExtension(e)&&i.unloadExtension(e)};e.is2d()&&(c("Autodesk.BimWalk"),c("Autodesk.Section"),c("Autodesk.Viewing.FusionOrbit"),c("Autodesk.Explode")),o.measure||c("Autodesk.Measure"),r&&(this.dispatchEvent({type:y.TOOLBAR_CREATED_EVENT}),this.forEachExtension((e=>{e.onToolbarCreated&&e.onToolbarCreated(this.toolbar)})));var h="Autodesk.DefaultTools.NavTools",d=this.getExtension(h);d?d.updateUI(e.is3d()):this.loadExtension(h,i.config),this.resize(),e.is2d()?(this.setDefaultNavigationTool("pan"),this.setClickToSetCOI(!1,!1),setTimeout((function(){if(!i.impl)return;const e={viewcube:"Autodesk.ViewCubeUi",measure:"Autodesk.Measure",hyperlink:"Autodesk.Hyperlink",layerManager:"Autodesk.LayerManager",propertiesPanel:"Autodesk.PropertiesManager"};(0,s.isMobileDevice)()||(e.boxSelection="Autodesk.BoxSelection");for(let t in e){const n=e[t];!o[t]&&l(n)&&i.loadExtension(n,i.config)}}),0)):(-1===this.getDefaultNavigationToolName().indexOf("orbit")&&this.setDefaultNavigationTool("orbit"),setTimeout((function(){if(!i.impl)return;const e={viewcube:"Autodesk.ViewCubeUi",explode:"Autodesk.Explode",bimwalk:"Autodesk.BimWalk",fusionOrbit:"Autodesk.Viewing.FusionOrbit",measure:"Autodesk.Measure",section:"Autodesk.Section",layerManager:"Autodesk.LayerManager",modelBrowser:"Autodesk.ModelStructure",propertiesPanel:"Autodesk.PropertiesManager"};(0,s.isMobileDevice)()||(e.boxSelection="Autodesk.BoxSelection");for(let t in e){const n=e[t];!o[t]&&l(n)&&i.loadExtension(n,i.config)}!o.scalarisSimulation&&l("Autodesk.Viewing.ScalarisSimulation")&&i.model&&i.model.isScalaris&&i.loadExtension("Autodesk.Viewing.ScalarisSimulation",i.config)}),0),e.isLoadDone()?this.checkGeometry({model:e}):this.addEventListener(n.GEOMETRY_LOADED_EVENT,this.checkGeometry,{once:!0}))},D.prototype.onFullScreenModeEvent=function(e){this.resizePanels(),this.toolbar.updateFullscreenButton(e.mode)},D.prototype.onProgressBarUpdate=function(e){if(e.state==C.ProgressState.ROOT_LOADED||e.state==C.ProgressState.LOADING)this.progressInModelLoad=e.percent<100;else if(e.state==C.ProgressState.OPTIMIZING)this.progressInModelOptimizing=e.percent<100;else if(this.progressInModelLoad||this.progressInModelOptimizing)return;e.percent>=0&&this.progressbar.setPercent(e.percent,e.state)},D.prototype.addOptionToggle=function(e,t,i,n,r){var o=r?this.prefs[r]:null;i="boolean"==typeof o?o:i;let a=this.getDocument();var l=a.createElement("li");l.className="toolbar-submenu-listitem";var h=a.createElement("input");h.className="toolbar-submenu-checkbox",h.type="checkbox",h.id=t,l.appendChild(h);var u=a.createElement("label");return u.setAttribute("for",t),u.setAttribute("data-i18n",t),u.textContent=c.A.t(t),l.appendChild(u),e.appendChild(l),h.checked=i,h.addEventListener("touchstart",s.touchStartToClick),u.addEventListener("touchstart",s.touchStartToClick),l.addEventListener("touchstart",s.touchStartToClick),h.addEventListener("click",(function(e){n(h.checked),e.stopPropagation()})),u.addEventListener("click",(function(e){e.stopPropagation()})),l.addEventListener("click",(function(e){e.stopPropagation(),h.checked=!h.checked,n(h.checked)})),r&&this.prefs.addListeners(r,(function(e){h.checked=e}),(function(e){h.checked=e,n(e)})),h},D.prototype.addOptionList=function(e,t,i,n,r,o){var s=this.prefs[o];n="number"==typeof s?s:n;let a=this.getDocument();var l=a.createElement("select");l.className="option-drop-down",l.id="selectMenu_"+t;for(var h=0;h) and will be removed in version 8.0.0.'),this.prefs.set(r.Prefs.OPEN_PROPERTIES_ON_SELECT,e)},D.prototype.addDivider=function(e){var t=this.getDocument().createElement("li");return t.className="toolbar-submenu-horizontal-divider",e.appendChild(t),t},D.prototype.initDebugTools=function(){if(this.debugMenu)return!1;var e=new g.ControlGroup("debugTools");this.debugMenu=e;var t=new m.Button("toolbar-debugTool");return t.setIcon("adsk-icon-bug"),e.addControl(t),this.debugMenu.debugSubMenuButton=t,this.createDebugSubmenu(this.debugMenu.debugSubMenuButton),this.toolbar.addControl(e),!0},D.prototype.removeDebugTools=function(){this.debugMenu&&(this.debugMenu.removeFromParent(),this.debugMenu=null)},D.prototype.createDebugSubmenu=function(e){var t=this,i=this.getDocument().createElement("div");i.id="toolbar-debugToolSubmenu",i.classList.add("toolbar-submenu"),i.classList.add("toolbar-settings-sub-menu"),i.classList.add("adsk-hidden"),this.debugMenu.subMenu=i,this.debugMenu.subMenu.style.minWidth="180px",this.container.appendChild(i),this.initModelStats(),this.addDivider(i),this.addDivider(i);var n=h.Lang.getLanguages(),r=n.map((function(e){return e.label})),o=n.map((function(e){return e.symbol}));function a(){t.localize()}var c=t.selectedLanguage?t.selectedLanguage:0;this.addOptionList(i,"Language",r,c,(function(e){var i=o[e];t.selectedLanguage=e,(0,l.setLanguage)(i,a)}),null).parentNode.style.paddingBottom="15px",this.addDivider(this.debugMenu.subMenu);this.addOptionList(i,"Error",["UNKNOWN FAILURE","BAD DATA","NETWORK ERROR","NETWORK ACCESS DENIED","NETWORK FILE NOT FOUND","NETWORK SERVER ERROR","NETWORK UNHANDLED RESPONSE CODE","BROWSER WEBGL NOT SUPPORTED","BAD DATA NO VIEWABLE CONTENT"],0,(function(e){var i=e+1;v.ErrorHandler.reportError(t.container,i,"")}),null).parentNode.style.paddingBottom="15px";var u=i.getBoundingClientRect();this.debugMenu.subMenu.style.width=u.width+"px",this.container.removeChild(i),e.container.appendChild(i);var d=u.left+u.width,f=this.container.getBoundingClientRect().right;if(d>f){var p=-(d-f+10)+"px";this.debugMenu.subMenu.style.left=p}e.onMouseOver=function(){i.classList.remove("adsk-hidden")},e.onMouseOut=function(){i.classList.add("adsk-hidden")},(0,s.isTouchDevice)()&&(e.onClick=function(){i.classList.toggle("adsk-hidden")})},D.prototype.initModelStats=function(){var e=this;function t(){var t=e.model;const i=e=>(e/1e3).toFixed(2)+"s",n=t.loader.t1?i(t.loader.t1-t.loader.t0):"-",r=t.loader.firstPixelTimestamp?i(t.loader.firstPixelTimestamp-t.loader.t0):"-",o=t.loader.loadTime?i(t.loader.loadTime):"...";t&&(e.modelStats.innerHTML=`\n Geometry Polygons: ${t.getGeometryList().geomPolyCount.toLocaleString()}
\n Instance Polygons: ${t.getGeometryList().instancePolyCount.toLocaleString()}
\n Fragments:  ${t.getFragmentList().getCount().toLocaleString()}
\n Geometries: ${t.getGeometryList().getCount().toLocaleString()}
\n
\n Root data loaded:  ${n}
\n First pixel drawn: ${r}
\n Geometries loaded: ${o}
\n `)}this.addOptionToggle(this.debugMenu.subMenu,"Model statistics",!1,(function(i){i&&!e.modelStats&&(!function(){let i=e.getDocument();e.modelStats=i.createElement("div"),e.modelStats.className="statspanel",e.container.appendChild(e.modelStats),e.addEventListener(n.PROGRESS_UPDATE_EVENT,t),e.addEventListener(n.GEOMETRY_LOADED_EVENT,t),e.fpsDisplay=i.createElement("div"),e.fpsDisplay.className="fps",e.container.appendChild(e.fpsDisplay)}(),t()),e.modelStats.style.visibility=i?"visible":"hidden",e.fpsDisplay.style.visibility=i?"visible":"hidden",e.impl.fpsCallback=i?function(t){e.fpsDisplay.textContent=""+(0|t)}:null}))},D.prototype.initEscapeHandlers=function(){var e=this;this.addEventListener(n.ESCAPE_EVENT,(function(){if(!e.contextMenu||!e.contextMenu.hide())if(e.renderoptions&&e.renderoptions.isVisible())e.renderoptions.setVisible(!1);else if(e.impl.selector.hasSelection())e.clearSelection();else{if(e.getActiveNavigationTool()!==e.getDefaultNavigationToolName())return e.toolController&&e.toolController.setIsLocked(!1),e.setActiveNavigationTool(),void b.HudMessage.dismiss();if(e.areAllVisible()){if(!p.AlertBox.dismiss()){for(var t=0;t{var e=this.renderoptions&&this.renderoptions.isVisible();this.renderoptions.setVisible(!e)},onClickViewerOption:()=>{e.getSettingsPanel(!0).isVisible()?e.showViewer3dOptions(!1):e.showViewer3dOptions(!0)}}),this._forgeLogo){const e=this._forgeLogo.getBoundingClientRect();this.toolbar.container.style.bottom=`${e.height+10}px`}return this.container.appendChild(this.toolbar.container),this.toolbar.updateToolbarButtons(this.container.clientWidth,this.container.clientHeight,this.navigation),!0},D.prototype.showModelStructurePanel=function(e){d.logger.warn('viewer.showModelStructurePanel() is deprecated and will be removed in v8.0.0 - Use extension "Autodesk.ModelStructure".'),e?this.activateExtension("Autodesk.ModelStructure"):this.deactivateExtension("Autodesk.ModelStructure")},D.prototype.onPanelVisible=function(e){this.dockingPanels.splice(this.dockingPanels.indexOf(e),1),this.dockingPanels.splice(0,0,e)},D.prototype.localize=function(){this.debugMenu&&this.debugMenu.debugSubMenuButton&&(this.debugMenu.debugSubMenuButton.container.removeChild(this.debugMenu.subMenu),this.createDebugSubmenu(this.debugMenu.debugSubMenuButton)),v.ErrorHandler.localize(),o.Viewer3D.prototype.localize.call(this)},D.prototype.addPanel=function(e){return-1===this.dockingPanels.indexOf(e)&&(this.dockingPanels.push(e),!0)},D.prototype.removePanel=function(e){var t=this.dockingPanels.indexOf(e);return t>-1&&(this.dockingPanels.splice(t,1),!0)},D.prototype.resizePanels=function(e){e=e||{};var t=this.toolbar?this.toolbar.getDimensions().height:0,i=this.getDimensions(),n=i.height;e.dimensions&&e.dimensions.height?n=e.dimensions.height:e.dimensions={height:i.height,width:i.width},e.dimensions.height=n-t;var r=e?e.dockingPanels:null;r||(r=this.dockingPanels);var o,s,a=this.container.getBoundingClientRect(),l=a.top,c=a.bottom,h=a.left,u=a.right;e&&e.dimensions?(o=e.dimensions.width,c=l+(s=e.dimensions.height)):(o=a.width,s=a.height);for(var d=0;d{"use strict";i.r(t),i.d(t,{SETTINGS_PANEL_CREATED_EVENT:()=>r,TOOLBAR:()=>s,TOOLBAR_CREATED_EVENT:()=>n,VIEW_CUBE_CREATED_EVENT:()=>o});const n="toolbarCreated",r="settingsPanelCreated",o="viewCubeCreated",s={NAVTOOLSID:"navTools",MODELTOOLSID:"modelTools",SETTINGSTOOLSID:"settingsTools",MEASURETOOLSID:"measureTools"}},88946:(e,t,i)=>{"use strict";i.r(t),i.d(t,{HudMessage:()=>r});var n=i(38842);function r(){}r.instances=[],r.displayMessage=function(e,t,i,o,s){let a=e.ownerDocument,l=a.defaultView||a.parentWindow;function c(e){var t=l.getComputedStyle(e),i=parseInt(t["margin-top"]),n=parseInt(t["margin-bottom"]);return e.getBoundingClientRect().height+i+n}function h(e,t,i){var n=l.getComputedStyle(e,null);if(!Array.isArray(t))return n[t];for(var r=i||{},o=0;o0)){var u=t.msgTitleKey,d=t.msgTitleDefaultValue||u,f=t.messageKey,p=t.messageDefaultValue||f,m=t.buttonText,g=t.checkboxChecked||!1,v=t.position||"center",y=a.createElement("div");if(y.classList.add("docking-panel"),y.classList.add("hud"),"top"===v&&y.classList.add("top"),e.appendChild(y),u){var b,x=a.createElement("div");x.classList.add("docking-panel-title"),x.classList.add("docking-panel-delimiter-shadow"),x.textContent=n.A.t(u,{defaultValue:d}),x.setAttribute("data-i18n",u),y.appendChild(x),i&&((b=a.createElement("div")).classList.add("docking-panel-close"),b.addEventListener("click",(function(e){r.dismiss(),i&&i(e)})),y.appendChild(b));var _=h(x,["width","font-size"]),E=function(e){var t=e.textContent,i=a.createElement("span");h(e,["font-size","font-weight","text-transform","padding","white-space","font-family"],i.style),i.textContent=t,i.style.position="absolute",i.style.top="10000px",i.style.left="-10000px",a.body.appendChild(i);var n=i.offsetWidth;return a.body.removeChild(i),n}(x),S=parseFloat(_["font-size"]),A=b?parseFloat(h(b,"width")):0,w=parseFloat(_.width)-A;x.style["font-size"]=E>w?w/E*S+"px":`${S}px`}var T=a.createElement("div");T.classList.add("hud-client"),T.classList.add("docking-panel-container-solid-color-b"),y.appendChild(T);var M=a.createElement("div");M.className="hud-message",M.textContent=n.A.t(f,{defaultValue:p}),M.setAttribute("data-i18n",p),T.appendChild(M);var C=c(M);if(o){var P=a.createElement("div");P.classList.add("docking-panel-primary-button"),P.classList.add("hud-button"),P.textContent=n.A.t(m,{defaultValue:m}),P.setAttribute("data-i18n",m),P.addEventListener("click",o),T.appendChild(P),C+=c(P)}if(s){var D=a.createElement("div"),L=a.createElement("input");L.className="hud-checkbox",L.type="checkbox",L.checked=g,D.appendChild(L);var I="Do not show this message again",R=a.createElement("label");R.setAttribute("for",I),R.setAttribute("data-i18n",I),R.textContent=n.A.t(I,{defaultValue:I}),D.appendChild(R),L.addEventListener("change",s),T.appendChild(D),C+=c(s)}T.style.height=C+"px",y.style.height=C+(x?c(x):0)+"px";var O={hudMessage:y,container:e};r.instances.push(O)}},r.dismiss=function(){if(r.instances.length>0){var e=r.instances.pop();return e.hudMessage.style.visibility="hidden",e.container.removeChild(e.hudMessage),!0}return!1}},98087:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LoadingSpinner:()=>r});var n=i(38842);function r(e){this.parentDiv=e;var t=this.getDocument();this.container=t.createElement("div"),this.container.innerHTML=['
','','','',"","
",'
LOADING
'].join(""),this.container.className="loading-spinner"}i(26206).GlobalManagerMixin.call(r.prototype),r.prototype.addClass=function(e){this.container.classList.add(e)},r.prototype.attachToDom=function(){return!this.container.parentNode&&(n.A.localize(this.container),this.parentDiv.appendChild(this.container),!0)},r.prototype.removeFromDom=function(){return!!this.container.parentNode&&(this.container.parentNode.removeChild(this.container),!0)},r.prototype.setVisible=function(e){e?this.attachToDom():this.removeFromDom()}},99587:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ModelStructurePanel:()=>p});var n=i(96551),r=i(76948),o=i(87241),s=i(83081),a=i(8600),l=i(38842),c=-1,h=-2;const u=-1e10;function d(e,t){o.TreeDelegate.call(this),this.panel=e,this.model=t;let i=this.getDocument();this.modelDiv=i.createElement("div"),this.modelDiv.classList.add("model-div"),this.modelDiv.setAttribute("lmv-modelId",t.id),this.instanceTree=null,this.rootId=c,this.state=1}function f(e){var t=function(e){var t=e.getData();if(t&&t.loadOptions&&t.loadOptions.modelNameOverride)return t.loadOptions.modelNameOverride;return""}(e);if(t)return t;if(!e.getData())return"";var i=e.getDocumentNode();return i?i.getModelName():"Model"}function p(e,t,i,r){n.DockingPanel.call(this,e,t,i,r),this.container.classList.add("model-structure-panel"),(r=r||{}).heightAdjustment||(r.heightAdjustment=40),r.marginTop||(r.marginTop=0),r.left=!0,this.createScrollContainer(r),this.onScroll=this.onScroll.bind(this),this.scrollContainer.addEventListener("scroll",this.onScroll),this.scrollContainer.style["overflow-x"]="hidden",this.options=r,this.tree=null,this._pendingModels=[],this.uiCreated=!1;var o=this;this.addVisibilityListener((function(e){e&&(o.uiCreated||o.createUI(),o.resizeToContent())}))}d.prototype=Object.create(o.TreeDelegate.prototype),d.prototype.constructor=d,d.prototype.isLoading=function(){return 1===this.state},d.prototype.isAvailable=function(){return 2===this.state},d.prototype.isNotAvailable=function(){return 3===this.state},d.prototype.isControlId=function(e){return e===c||e===h},d.prototype.getControlIdCss=function(e){return null},d.prototype.getRootId=function(){return this.rootId},d.prototype.getTreeNodeId=function(e){return"object"==typeof e?(s.logger.warn("Object used instead of dbId. Fix it."),e.dbId):e},d.prototype.getTreeNodeIndex=function(e){return this.instanceTree.nodeAccess.dbIdToIndex[e]},d.prototype.getTreeNodeLabel=function(e){if(e===c){var t=f(this.model);return l.A.t("Loading model",{name:t})}return e===h||e===this.getRootId()?t=f(this.model):e==u?"Object 0":this.instanceTree.getNodeName(e,!0)||"Object "+e},d.prototype.getTreeNodeClass=function(e){return e===c||e===h?"message-unexpected":""},d.prototype.getTreeNodeParentId=function(e){if(e===u)return 0;let t=this.instanceTree.nodeAccess.getParentId(e);return 0===t?u:t},d.prototype.getTreeNodeCount=function(){return this.instanceTree.nodeAccess.getNumNodes()},d.prototype.getTreeNodeClientHeight=function(e){return 36},d.prototype.getTreeNodeDepthOffset=function(e,t){return 13+25*t},d.prototype.isTreeNodeGroup=function(e){return!this.isControlId(e)&&this.instanceTree.getChildCount(e)>0},d.prototype.shouldCreateTreeNode=function(e){return!0},d.prototype.createTreeNode=function(e,t){let i=this,n=i.getDocument(),r=function(){var e=function(){i.removeDocumentEventListener("mouseup",e),this.classList.remove("highlight")}.bind(t);t.classList.add("highlight"),i.addDocumentEventListener("mouseup",e)};if(t.addEventListener("mousedown",r),console.log("Event listener added"),t._mouseDownListener=r,!this.isControlId(e)){var s=n.createElement("div");s.dbId=e,s.classList.add("visibility");let i=function(e){e.preventDefault(),e.stopPropagation()};s.addEventListener("mousedown",i),s._mouseDownListener=i;let r=function(e){e.preventDefault(),e.stopPropagation();var t=parseInt(e.target.dbId);this.panel.onEyeIcon(t,this.model)}.bind(this);s.addEventListener("click",r),s._clickListener=r,t.appendChild(s)}if(e===c){var l=n.createElement("img");l.src=(0,a.getResourceUrl)("res/ui/spinner.png"),l.style.animation="loading-spinner-perpetual-motion 1s infinite linear",l.style.float="right",l.style.marginRight="5px",l.style.width="20px",t.appendChild(l)}var u={localize:e===c||e===h};o.TreeDelegate.prototype.createTreeNode.call(this,e,t,u)},d.prototype.onTreeNodeRightClick=function(e,t,i){this.isControlId(t)||this.panel.onTreeNodeRightClick(e,t,this.model,i)},d.prototype.onTreeNodeClick=function(e,t,i){this.isControlId(t)||this.panel.onTreeNodeClick(e,t,this.model,i)},d.prototype.onTreeNodeDoubleClick=function(e,t,i){},d.prototype.onTreeNodeIconClick=function(e,t,i){if(this.isTreeNodeGroup(t)){var n=e.isCollapsed(this,t);e.setCollapsed(this,t,!n)}},d.prototype.onTreeNodeReized=function(e){},d.prototype.forEachChild=function(e,t,i){this.isControlId(e)||this.instanceTree.enumNodeChildren(e,t,i)},d.prototype.setInstanceTree=function(e){this.instanceTree=e,this.state=e?2:3,this.rootId=e?e.getRootId():h,function(e){var t=e.instanceTree;if(!t)return;var i,n=e.rootId,r=t.getNodeName(n),o=0,s=0;t.enumNodeChildren(n,(function(e){s||(i=t.getNodeName(e),o=e),s++})),e.hasDoubleRoot=1===s&&r===i,e.rootId=e.hasDoubleRoot?o:n}(this)},d.prototype.clean=function(){for(var e,t=this.modelDiv;e=t.lastChild;)t.removeChild(e)},d.prototype.dtor=function(){this.model=null},p.prototype=Object.create(n.DockingPanel.prototype),p.prototype.constructor=p,p.prototype.uninitialize=function(){var e;this.scrollContainer.addEventListener("scroll",this.onScroll),this.scrollContainer.parentNode.removeChild(this.scrollContainer),null===(e=this.tree)||void 0===e||e.destroy(),n.DockingPanel.prototype.uninitialize.call(this)},p.prototype.addModel=function(e){if(e)if(this.uiCreated)this.createTreeUI(e);else{if(-1!==this._pendingModels.indexOf(e))return;this._pendingModels.push(e)}},p.prototype.unloadModel=function(e){if(e)if(this.uiCreated)this.removeTreeUI(e);else{var t=this._pendingModels.indexOf(e);if(-1===t)return;this._pendingModels.splice(t,1)}},p.prototype.createUI=function(){if(!this.uiCreated){var e,t="";if(this.options&&this.options.defaultTitle?(t=this.options.defaultTitle,e=void 0===this.options.localizeTitle||!!this.options.localizeTitle):(t=this.modelTitle,e=!1),t||(t="Browser",e=!0),this.setTitle(t,{localizeTitle:e}),this.uiCreated=!0,this.tree=new r.TreeOnDemand(this.scrollContainer,this.options),this.tree.setGlobalManager(this.globalManager),0!==this._pendingModels.length){for(var i=0;i{"use strict";i.r(t),i.d(t,{ObjectContextMenu:()=>o});var n=i(26452),r=i(26206);function o(e){this.viewer=e,this.setGlobalManager(e.globalManager),this.contextMenu=new n.ContextMenu(e)}o.prototype.constructor=o,r.GlobalManagerMixin.call(o.prototype),o.prototype.show=function(e){const t=this.viewer.getSelectionCount(),i=this.viewer.getSelectionVisibility(),n=this.viewer.impl.getCanvasBoundingClientRect(),r=n.width,o=n.height,s=e.clientX-n.left,a=e.clientY-n.top,l={event:e,numSelected:t,hasSelected:0{"use strict";i.r(t),i.d(t,{ProgressBar:()=>r});var n=i(38842);function r(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=e.ownerDocument;this.bg=i.createElement("div"),this.bg.className="progressbg",this.fg=i.createElement("div"),this.fg.className="progressfg",this.bg.appendChild(this.fg),e.appendChild(this.bg),this.lastValue=-1,this.fg.style.transform="scale(0, 1)",this.labels=[],this.showLabel=t,this.registerLabel(e,"ProgressLoading"),this.registerLabel(e,"ProgressLoading"),this.registerLabel(e,"ProgressRendering"),this.registerLabel(e,"ProgressOptimizing")}r.prototype.registerLabel=function(e,t){const i=e.ownerDocument.createElement("div");i.className="progresslb",i.style.opacity="0",i.setAttribute("data-i18n",t),i.textContent=n.A.t(t),this.labels.push(i),e.appendChild(i)},r.prototype.setPercent=function(e,t){e!=this.lastValue&&(this.lastValue=e,e>=100?(this.bg.style.opacity="0",this.labels.forEach((e=>e.style.opacity="0"))):(this.bg.style.opacity="1",this.fg.style.transform=`scale(${e/100}, 1)`,this.showLabel&&this.labels.forEach(((e,i)=>e.style.opacity=t===i?"1":"0"))))},r.prototype.setStyle=function(e){!this.fg.classList.contains(e)&&this.fg.classList.add(e)},r.prototype.removeStyle=function(e){this.fg.classList.contains(e)&&this.fg.classList.remove(e)}},14813:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PropertyPanel:()=>c});var n=i(96551),r=i(87241),o=i(55266),s=i(27623),a=i(38842),l=i(8022);function c(e,t,i,s){n.DockingPanel.call(this,e,t,i,s),this.title.classList.add("docking-panel-delimiter-shadow"),this.container.classList.add("property-panel"),this.container.dockRight=!0,this.createScrollContainer({left:!1,heightAdjustment:70,marginTop:0}),this.highlightableElements={};var a=this;var l=function(){var e=new r.TreeDelegate;function t(e){return"category"===e.type}return e.setGlobalManager(a.globalManager),e.getTreeNodeId=function(e){return e.name+(Object.prototype.hasOwnProperty.call(e,"value")?e.value:"")+(Object.prototype.hasOwnProperty.call(e,"category")?e.category:"")},e.getTreeNodeClass=function(e){return t(e)?a.getCategoryClass(e):a.getPropertyClass(e)},e.isTreeNodeGroup=function(e){return t(e)},e.onTreeNodeClick=function(e,i,n){t(i)?a.onCategoryClick(i,n):a.onPropertyClick(i,n)},e.onTreeNodeRightClick=function(e,i,n){t(i)?a.onCategoryRightClick(i,n):a.onPropertyRightClick(i,n)},e.onTreeNodeDoubleClick=function(e,i,n){t(i)?a.onCategoryDoubleClick(i,n):a.onPropertyDoubleClick(i,n)},e.onTreeNodeIconClick=function(e,i,n){t(i)?a.onCategoryIconClick(i,n):a.onPropertyIconClick(i,n)},e.createTreeNode=function(e,i,n){var r=null;(r=t(e)?a.displayCategory(e,i,n):a.displayProperty(e,i,n))&&(a.highlightableElements[this.getTreeNodeId(e)]=r)},e}();this.tree=new o.Tree(l,null,this.scrollContainer,{}),this.tree.setGlobalManager(this.globalManager)}function h(e){e=String(e);var t=' target="blank" class="propertyLink" ';return[{pattern:/\b(?:https?|ftp):\/\/[a-z0-9-+&@#/%?=~_|()!:,.;]*[a-z0-9-+&@#/%=~_|()]/gim,value:"$&'},{pattern:/(^|[^/])(www\.[\S]+(\b|$))/gim,value:"$1$2'}].reduce((function(e,t){return e.replace(t.pattern,t.value)}),e)}c.prototype=Object.create(n.DockingPanel.prototype),c.prototype.constructor=c,c.prototype.setAggregatedProperties=function(e){this.removeAllProperties();const t=Autodesk.Viewing.Private,i=this.viewer.prefs.get(t.Prefs.DISPLAY_UNITS);let n=this.viewer.prefs.get(t.Prefs.DISPLAY_UNITS_PRECISION);const r=Object.prototype.hasOwnProperty.call(e.map,"Name")?e.map.Name.map((e=>e.displayValue)):[];function o(e,t){const r=Number(e);e=isNaN(r)?e:r;var o="number"==typeof n?n:t.precision||(0,s.calculatePrecision)(e),a=(0,s.convertToDisplayUnits)(e,t.type,t.units,i);return(0,s.formatValueWithUnits)(a.displayValue,a.displayUnits,t.type,o)}const c=e.getValue2PropertiesMap("Name");if(c){const e=Object.keys(c);if(1===e.length){const t=e[0],i={name:"aggregate-name"};this.tree.createElement_({name:"Name",value:t,type:"property",category:"",css:i},this.tree.myRootContainer)}else{const e={name:"Name",type:"category",value:"Varies"},t=this.tree.createElement_(e,this.tree.myRootContainer);this.setCategoryCollapsed(e,!0);for(let e in c)this.tree.createElement_({name:e,value:"",type:"property",category:"Name"},t)}}let h=e.getKeysWithCategories().length>0;e.forEach(((t,i)=>{if("Name"===t)return;const n=e.getAggregation(t),s=e.getValue2PropertiesMap(t);if(!n&&!s)return;const c=i[0];if(c.hidden)return;const u=!!c.displayCategory;let d,f="";if(u)f=c.displayCategory,d=this.tree.getElementForNode({name:f}),d=d||this.tree.createElement_({name:f,type:"category"},this.tree.myRootContainer);else if(h){if(f="Other",d=this.tree.getElementForNode({name:f}),!d){let e=f;d=this.tree.createElement_({name:e,type:"category"},this.tree.myRootContainer);const t=d.children[0].children[1];t.setAttribute("data-i18n",e),e=a.A.t(e),t.textContent=e,t.title=e}}else d=this.tree.myRootContainer;const p=Object.keys(s);if(1===p.length){let e=p[0];return e=(0,l.hA)(i[0].type)?o(Number(e),c):e,void(d=this.tree.createElement_({name:c.displayName,value:e,type:"property",category:f,css:{name:"aggregate-name"}},d))}const m={name:c.displayName,value:"Varies",type:"category",category:f};if(d=this.tree.createElement_(m,d),this.setCategoryCollapsed(m,!0),f=c.displayName,(u||h)&&d.classList.add("indented"),n){const e={};for(let t in n){if("count"===t){e[t]=n[t];continue}if("mode"===t){e[t]=n[t].map((e=>o(e,c))).join(", ");continue}const i=n[t];e[t]=o(i,c)}this.tree.createElement_({map:e,default:"sum",type:"property",category:f},d)}const g=[];for(let e in s){const t=o(e,c),i=s[e];for(let e=0;e-1&&r.splice(t,1)}g.push({name:i,value:t,type:"property",category:f})}r.length>0&&this.tree.createElement_({name:r,value:"--",type:"property",category:f},d),g.forEach((e=>{this.tree.createElement_(e,d)}))}))},c.prototype.setProperties=function(e){this.removeAllProperties();var t=[],i=[];for(let r=0;r0,c=0;c|<\/highlight>)/gim,"");if(i!==n&&(t.innerHTML=n),e&&""!==e){var r=new RegExp("(\\b"+e+"\\b)","gim"),o=n.replace(r,"$1");t.innerHTML=o}}for(var i in this.highlightableElements)for(var n=this.highlightableElements[i],r=0;r{const i=t.target.value,n=e.map[i];c.title=n,c.innerHTML=n}),!1);const d=e.css;return d&&(d.name&&n.classList.add(d.name),d.value&&c.classList.add(d.value)),t.appendChild(n),t.appendChild(o),t.appendChild(c),[n,c]},c.prototype.getCategoryClass=function(){return"category"},c.prototype.getPropertyClass=function(){return"property"},c.prototype.onCategoryClick=function(e){this.setCategoryCollapsed(e,!this.isCategoryCollapsed(e))},c.prototype.onPropertyClick=function(){},c.prototype.onCategoryIconClick=function(e){this.setCategoryCollapsed(e,!this.isCategoryCollapsed(e))},c.prototype.onPropertyIconClick=function(){},c.prototype.onCategoryDoubleClick=function(){},c.prototype.onPropertyDoubleClick=function(){},c.prototype.onCategoryRightClick=function(){},c.prototype.onPropertyRightClick=function(){}},47898:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderOptionsPanel:()=>a});var n=i(96551),r=i(19556),o=i(86022),s=i(97005);function a(e){var t=this;this.viewer=e,this.setGlobalManager(e.globalManager),n.DockingPanel.call(this,e.container,"RenderOptionsPanel","Rendering Options");let i=this.getDocument();this.table=i.createElement("table"),this.table.className="adsk-lmv-tftable",this.tbody=i.createElement("tbody"),this.table.appendChild(this.tbody),this.createScrollContainer({heightAdjustment:70}),this.scrollContainer.appendChild(this.table),this.container.style.width="320px",this.container.style.top="260px",this.container.style.left="220px",this.container.style.height="460px",this.container.dockRight=!0,this.saoToggle=new o.OptionCheckbox("AO Enabled",this.tbody,!0),this.saoToggle.setGlobalManager(this.globalManager),this.addEventListener(this.saoToggle,"change",(function(i){var n=t.saoToggle.checked;e.prefs.set("ambientShadows",n),e.setQualityLevel(n,e.impl.renderer().settings.antialias)})),this.saoRadius=new o.OptionSlider("AO Radius",0,200,this.tbody),this.saoRadius.setGlobalManager(this.globalManager),this.saoRadius.setValue(10),this.saoRadius.sliderElement.step=this.saoRadius.stepperElement.step=.01,this.addEventListener(this.saoRadius,"change",(function(i){e.impl.renderer().setAOOptions(parseFloat(t.saoRadius.value),parseFloat(t.saoIntensity.value)),e.impl.renderer().composeFinalFrame()})),this.saoIntensity=new o.OptionSlider("AO Intensity",0,3,this.tbody),this.saoIntensity.setGlobalManager(this.globalManager),this.saoIntensity.setValue(.4),this.saoIntensity.sliderElement.step=this.saoIntensity.stepperElement.step=.01,this.addEventListener(this.saoIntensity,"change",(function(i){e.impl.renderer().setAOOptions(parseFloat(t.saoRadius.value),parseFloat(t.saoIntensity.value)),e.impl.renderer().composeFinalFrame()})),this.groundShadowAlpha=new o.OptionSlider("Shadow Alpha",0,2,this.tbody),this.groundShadowAlpha.setGlobalManager(this.globalManager),this.groundShadowAlpha.setValue(1),this.groundShadowAlpha.sliderElement.step=this.groundShadowAlpha.stepperElement.step=.1,this.addEventListener(this.groundShadowAlpha,"change",(function(i){e.setGroundShadowAlpha(parseFloat(t.groundShadowAlpha.value))})),this.groundShadowColor=new o.OptionCheckbox("Shadow Color",this.tbody),this.groundShadowColor.setGlobalManager(this.globalManager),this.groundShadowColor.checkElement.value="#000000",this.groundShadowColor.checkElement.type="color",this.addEventListener(this.groundShadowColor,"change",(function(i){var n=t.groundShadowColor.checkElement.value;e.setGroundShadowColor(new THREE.Color(parseInt(n.substr(1,7),16)))})),this.groundReflectionAlpha=new o.OptionSlider("Reflection Alpha",0,2,this.tbody),this.groundReflectionAlpha.setGlobalManager(this.globalManager),this.groundReflectionAlpha.setValue(1),this.groundReflectionAlpha.sliderElement.step=this.groundReflectionAlpha.stepperElement.step=.1,this.addEventListener(this.groundReflectionAlpha,"change",(function(i){e.setGroundReflectionAlpha(parseFloat(t.groundReflectionAlpha.value))})),this.groundReflectionColor=new o.OptionCheckbox("Reflection Color",this.tbody),this.groundReflectionColor.setGlobalManager(this.globalManager),this.groundReflectionColor.checkElement.value="#000000",this.groundReflectionColor.checkElement.type="color",this.addEventListener(this.groundReflectionColor,"change",(function(i){var n=t.groundReflectionColor.checkElement.value;e.setGroundReflectionColor(new THREE.Color(parseInt(n.substr(1,7),16)))}));for(var a=[],l=0;l{"use strict";i.r(t),i.d(t,{SettingsPanel:()=>l});var n=i(96551),r=i(38842),o=i(55280),s=i(86022);const a=40;function l(e,t,i,r){n.DockingPanel.call(this,e,t,i,r),this.panelTabs=[],this.tabIdToIndex={},this.controls={},this.controlIdCount=0,this.shown=!1;var o=this,s=r&&void 0!==r.width?r.width:340;this.container.style.maxWidth="800px",this.container.style.minWidth=s+"px",this.container.style.top="10px",this.container.style.left=e.offsetWidth/2-170+"px",this.container.style.position="absolute";var l=this.getDocument();this.tabContainer=l.createElement("div"),this.tabContainer.classList.add("docking-panel-container-solid-color-b"),this.tabContainer.classList.add("settings-tabs"),this.tabContainer.classList.add("docking-panel-delimiter-shadow"),this.container.appendChild(this.tabContainer),this.tabs=l.createElement("ul"),this.tabContainer.appendChild(this.tabs),this.heightAdjustment=r&&r.heightAdjustment?r.heightAdjustment:179,r&&r.hideTabBar&&(this.heightAdjustment-=a,this.tabContainer.style.display="none",this.tabContainer.style.height=0),this.createScrollContainer({left:!1,heightAdjustment:this.heightAdjustment,marginTop:0}),this.tablesContainer=l.createElement("div"),this.tablesContainer.classList.add("settings-tabs-tables-container"),r&&r.hideTabBar&&(this.scrollContainer.style.top=90-a+"px"),this.scrollContainer.appendChild(this.tablesContainer),this.mouseOver=!1,this.addEventListener(this.container,"mouseover",(function(e){var t=e.toElement||e.relatedTarget;if(o.mouseOver)return!0;for(var i=o.getWindow();t&&t.parentNode&&t.parentNode!=i;){if(t.parentNode==this||t==this){t.preventDefault&&t.preventDefault(),o.mouseOver=!0;for(var n=0;n(this.container.style.minWidth?parseInt(this.container.style.minWidth):0)&&(this.container.style.minWidth=a+"px"),!0},l.prototype.removeTab=function(e){var t=this.tabIdToIndex[e];if(!t)return!1;this.panelTabs.splice(t,1);var i=this.getDocument().getElementById(this.expandID(e));this.tabs.removeChild(i),this.tabIdToIndex={};for(var n=this.panelTabs.length,r=0;ra.length&&(n=-1);var l=a.tBodies[0].insertRow(n),c=l.insertCell(0);if(o){var h=s.createElement("div");h.setAttribute("data-i18n",o),h.textContent=r.A.t(o),c.appendChild(h),c=l.insertCell(1)}else c.colSpan=3;c.appendChild(t),t.sliderRow=l,t.tbody=a.tBodies[0]}var u=this.expandID("adsk_settings_control_id_"+this.controlIdCount.toString());return this.controlIdCount=this.controlIdCount+1,this.controls[u]=t,t.parent=this,u},l.prototype.removeButton=function(e){return this.removeControl(e)},l.prototype.removeCheckbox=function(e){return this.removeControl(e)},l.prototype.removeSlider=function(e){return this.removeControl(e)},l.prototype.removeDropdownMenu=function(e){return this.removeControl(e)},l.prototype.removeControl=function(e){var t;if("object"==typeof e&&e.tbody){for(var i in t=e,this.controls)if(this.controls[i]===t){e=i;break}}else t=this.controls[e];if(void 0===t)return!1;if(t.removeFromParent)t.removeFromParent();else{var n=t.tbody,r=t.sliderRow.rowIndex;n.deleteRow(r)}return delete this.controls[e],t.parent=void 0,!0},l.prototype.getControl=function(e){return this.controls[e]||null},l.prototype.getContentSize=function(){for(var e=this.heightAdjustment,t=0,i=this.getDocument(),n=0;n{"use strict";i.r(t),i.d(t,{Tree:()=>a});var n=i(55280),r=i(55855),o=i(26206);const s=i(41944);function a(e,t,i,n){this.myDelegate=e,this.mySelectedNodes=[],this.myOptions=n||{},this.parentContainer=i;this.groupClassName=this.myOptions.groupClassName||"expanded",this.leafClassName=this.myOptions.leafClassName||"expanded",this.selectedClassName=this.myOptions.selectedClassName||"selected",this.myGroupNodes=[],this.nodeToElement={},this.nodeIdToNode={};var r=this.myRootContainer=this.createHtmlElement_(i,"div","treeview"),o=this.rootElem=this.createElement_(t,r,n,0);this.setInputHandlers_(),n&&n.excludeRoot&&o.classList.add("exclude")}a.prototype.constructor=a,o.GlobalManagerMixin.call(a.prototype),a.prototype.destroy=function(){this.myDelegate=null,this.parentContainer&&(this.parentContainer.removeChild(this.myRootContainer),this.myRootContainer=null,this.parentContainer=null)},a.prototype.show=function(e){var t=this.myRootContainer;t.style.display=e?"block":"none"},a.prototype.getRootContainer=function(){return this.myRootContainer},a.prototype.getElementForNode=function(e){return"number"!=typeof e&&"string"!=typeof e&&(e=this.myDelegate.getTreeNodeId(e)),this.nodeToElement[e]},a.prototype.delegate=function(){return this.myDelegate},a.prototype.isCollapsed=function(e){return this.hasClass(e,"collapsed")},a.prototype.setCollapsed=function(e,t,i){t?(this.addClass(e,"collapsed",i),this.removeClass(e,"expanded",i)):(this.addClass(e,"expanded",i),this.removeClass(e,"collapsed",i))},a.prototype.setAllCollapsed=function(e){var t,i;e?(t=function(e){return e.classList.contains("expanded")},i=function(e){e.classList.add("collapsed"),e.classList.remove("expanded")}):(t=function(e){return e.classList.contains("collapsed")},i=function(e){e.classList.add("expanded"),e.classList.remove("collapsed")});for(var n=0;n=0;--n){var r=e[n];i(r)&&this.removeClass(r,this.selectedClassName)}},a.prototype.setSelection=function(e){return this.removeFromSelection(this.mySelectedNodes),this.addToSelection(e),this.mySelectedNodes},a.prototype.getSelection=function(){return this.mySelectedNodes.concat()},a.prototype.clearSelection=function(){this.removeFromSelection(this.mySelectedNodes)},a.prototype.isSelected=function(e){return this.hasClass(e,this.selectedClassName)},a.prototype.scrollTo=function(e){var t=this.getElementForNode(e);if(t){var i=t.offsetTop;for(t=t.parentNode;t&&t!=this.myRootContainer;)i+=t.offsetTop,t=t.parentNode;var n=this.myRootContainer.parentNode;this.myDelegate.getScrollContainer()&&(n=this.myDelegate.getScrollContainer()),n.scrollTop=i}},a.prototype.addClass=function(e,t,i){var n=this.getElementForNode(e);if(n){if(i){n=n.parentNode;for(var r=this.myOptions.excludeRoot?this.rootElem:this.myRootContainer;n&&n!==r;)n.classList.add(t),n=n.parentNode}else n.classList.add(t);return!0}return!1},a.prototype.removeClass=function(e,t,i){var n=this.getElementForNode(e);if(n){if(i){n=n.parentNode;for(var r=this.myOptions.excludeRoot?this.rootElem:this.myRootContainer;n&&n!==r;)n.classList.remove(t),n=n.parentNode}else n.classList.remove(t);return!0}return!1},a.prototype.hasClass=function(e,t){return this.getElementForNode(e).classList.contains(t)},a.prototype.clear=function(){for(var e=this.myRootContainer;e.hasChildNodes();)e.removeChild(e.lastChild);this.nodeToElement={},this.nodeIdToNode={}},a.prototype.createElement_=function(e,t,i,n){if(null==e)return null;if(!this.myDelegate.shouldCreateTreeNode(e))return null;var r,o=this;function s(t,r,s,a){var l=o.createHtmlElement_(t,r,s),c=o.myDelegate.getTreeNodeId(a);l.setAttribute("lmv-nodeId",c);var h=o.createHtmlElement_(l,"lmvheader"),u=o.createHtmlElement_(h,"icon");return u.addEventListener("mousedown",(function(e){e.stopPropagation(),e.preventDefault()}),!1),u.addEventListener("click",(function(t){o.myDelegate.onTreeNodeIconClick(o,e,t),t.stopPropagation(),t.preventDefault()}),!1),o.myDelegate.createTreeNode(e,h,i,r,n),l}var a=this.myDelegate.getTreeNodeId(e),l=o.myOptions.excludeRoot?1:0;o.myDelegate.isTreeNodeGroup(e)?(r=s(t,"group",o.groupClassName,e),o.nodeToElement[a]=r,o.nodeIdToNode[a]=e,n==l&&(r.style.left="0px"),o.myGroupNodes.push(r),o.myDelegate.forEachChild(e,(function(e){o.createElement_(e,r,i,n+1)}))):(r=s(t,"leaf",o.leafClassName,e),o.nodeToElement[a]=r,o.nodeIdToNode[a]=e,n==l&&(r.style.marginLeft="0px"));var c=o.myDelegate.getTreeNodeClass(e);return c&&r.classList.add(c),r},a.prototype.setInputHandlers_=function(){var e=this,t=this.myRootContainer,i=null,o=function(n){var r=null,o=!1;do{n&&n!==t?n.hasAttribute("lmv-nodeId")?(r=n,o=!0):n=n.parentElement:(r=null,o=!0)}while(!o);if(r){var s=r.getAttribute("lmv-nodeId");return e.nodeIdToNode[s]||i}return i};(0,n.isTouchDevice)()&&(this.hammer=new s.Manager(t,{recognizers:[r.GestureRecognizers.doubletap,r.GestureRecognizers.press],handlePointerEventMouse:!1,inputClass:s.TouchInput}),this.hammer.on("doubletap",(function(t){var n=o(t.target);n!==i&&e.myDelegate.onTreeNodeDoubleClick(e,n,t)})),this.hammer.on("press",(function(t){var n=o(t.target);n!==i&&e.myDelegate.onTreeNodeRightClick(e,n,t)}))),t.addEventListener("click",(function(t){var n=o(t.target);n!==i&&(e.myDelegate.onTreeNodeClick(e,n,t),t.stopPropagation(),t.target.classList.contains("propertyLink")||t.preventDefault())}),!1),t.addEventListener("dblclick",(function(t){var n=o(t.target);n!==i&&(e.myDelegate.onTreeNodeDoubleClick(e,n,t),t.stopPropagation(),t.preventDefault())}),!1),t.addEventListener("contextmenu",(function(t){var n=o(t.target);n!==i&&(e.myDelegate.onTreeNodeRightClick(e,n,t),t.stopPropagation(),t.preventDefault())}),!1),t.addEventListener("mouseover",(function(t){var n=o(t.target);n!==i&&(e.myDelegate.onTreeNodeHover(e,n,t),t.stopPropagation(),t.preventDefault())}),!1),t.addEventListener("mouseout",(function(t){var i=t.toElement||t.relatedTarget;if(o(t.target)!=o(i)){e.myDelegate.onTreeNodeHover(e,-1,t),t.stopPropagation(),t.preventDefault()}}),!1)},a.prototype.createHtmlElement_=function(e,t,i){var n=this.getDocument().createElement(t);return e.appendChild(n),i&&(n.className=i),n},a.prototype.iterate=function(e,t){if(null!=e&&this.myDelegate.shouldCreateTreeNode(e)){var i=this.getElementForNode(e);if(i){t(e,i);var n=this;this.myDelegate.forEachChild(e,(function(e){n.iterate(e,t)}))}}}},87241:(e,t,i)=>{"use strict";i.r(t),i.d(t,{TreeDelegate:()=>r});var n=i(38842);function r(){}i(26206).GlobalManagerMixin.call(r.prototype),r.prototype.constructor=r,r.prototype.isTreeNodeGroup=function(e){throw"isTreeNodeGroup is not implemented."},r.prototype.getTreeNodeId=function(e){throw"getTreeNodeId is not implemented."},r.prototype.getTreeNodeIndex=function(e){throw"getTreeNodeIndex is not implemented."},r.prototype.getTreeNodeParentId=function(e){throw"getTreeNodeParentId is not implemented."},r.prototype.getTreeNodeLabel=function(e){return e.name},r.prototype.getTreeNodeCount=function(){throw"getTreeNodeCount is not implemented."},r.prototype.shouldCreateTreeNode=function(e){return!0},r.prototype.forEachChild=function(e,t){for(var i=e.children?e.children.length:0,n=0;n{"use strict";i.r(t),i.d(t,{TreeOnDemand:()=>u});var n=i(55280),r=i(55855),o=i(98087),s=i(38842),a=i(26206);const l=i(41944);var c=150,h=300;function u(e,t){this.dirty=!1,this.nextFrameId=0,this.scrollY=0,this.delegates=[],this.idToDelegate={},this.options=t;var i=this.getDocument();this.rootContainer=i.createElement("div"),this.rootContainer.classList.add("docking-panel-container-gradient"),this.rootContainer.classList.add("treeview"),this.rootContainer.classList.add("on-demand"),e.appendChild(this.rootContainer),this.paddingDiv=i.createElement("div"),this.paddingDiv.style.border=0,this.paddingDiv.style.margin=0,this.paddingDiv.style.padding=0,this.sizedDiv=e.parentNode,this.nodeCssTable=[[],["group"],["leaf"]],this.cssStringToNodeCssTable={"":0,group:1,leaf:2},this.nodeIndexToNodeCssTables={};for(var s=[],a=c,h=0;he.has(t)))}var u=c.modelDiv;t.appendChild(u);for(var d=[c.getRootId()],f={curr:l?-1:0,popIds:[]};d.length&&s;){if(r>e.scrollY+n+h){s=!1;break}if(e.elementsUsed===e.elementsPool.length){s=!1;break}var m=d.shift();if(!C||i[m]){var g=r+(T=-1===f.curr?0:c.getTreeNodeClientHeight(m));if(T>0&&g+h>=e.scrollY){var v=e.elementsPool[e.elementsUsed++];v.setAttribute("lmv-nodeId",m),c.createTreeNode(m,v.header);var y=c.getTreeNodeClass(m);y&&v.classList.add(y);var x=b(e,c,m);if(x)for(var _=x.length,E=0;E<_;++E)v.classList.add(x[E]);var S=c.getTreeNodeDepthOffset(m,f.curr);v.header.style.paddingLeft=S+"px",u.appendChild(v)}if(g+h0){f.curr++;for(var A=M[M.length-1],w=f.popIds.length-1;w>=0&&f.popIds[w]===m;)f.popIds[w--]=A;f.popIds.push(A),d=M.concat(d)}for(;f.popIds.length>0&&m===f.popIds[f.popIds.length-1];)f.popIds.pop(),f.curr--}else for(;f.popIds.length>0&&m===f.popIds[f.popIds.length-1];)f.popIds.pop(),f.curr--}for(e.paddingDiv.style.height=o+"px";d.length;){var T,M;m=d.shift();r=g=r+(T=-1===f.curr?0:c.getTreeNodeClientHeight(m)),(M=p(e,c,m))&&M.length&&(d=M.concat(d))}}t.style.height=r+"px"}(e)}else e.spinner.setVisible(!1)}function p(e,t,i,n){if(!t.isTreeNodeGroup(i))return null;if(!n&&e.isCollapsed(t,i))return null;var r=[];return t.forEachChild(i,(function(e){r.push(e)})),r}function m(e,t){e.dirty&&!t||(t?f(e):(e.dirty=!0,e.nextFrameId=requestAnimationFrame((function(){f(e)}))))}function g(e,t){return"number"!=typeof t&&"string"!=typeof t?e.threeDelegate.getTreeNodeId(0|t):t}function v(e,t){for(var i=null;t&&t!==e.rootContainer;){if(t.hasAttribute("lmv-nodeId")){i=t;break}t=t.parentElement}if(!i)return null;var n=i.getAttribute("lmv-nodeId");return parseFloat(n)}function y(e,t){for(var i=null;t&&t!==e.rootContainer;){if(t.hasAttribute("lmv-modelId")){i=t;break}t=t.parentElement}if(!i)return null;var n=i.getAttribute("lmv-modelId");return parseInt(n)}function b(e,t,i){if(t.isControlId(i))return t.getControlIdCss(i);var n=t.getTreeNodeIndex(i);return e.nodeCssTable[e.nodeIndexToNodeCssTables[t.model.id][n]]}function x(e,t,i,n){var r=n.join(" "),o=e.cssStringToNodeCssTable[r]||e.nodeCssTable.length;o===e.nodeCssTable.length&&(e.nodeCssTable.push(n),e.cssStringToNodeCssTable[r]=o);var s=t.getTreeNodeIndex(i);e.nodeIndexToNodeCssTables[t.model.id][s]=o}function _(e,t,i){var n=e.createElement("lmvheader"),r=e.createElement("icon");n.appendChild(r);var o=e.createElement("div");return o.header=n,o.icon=r,o.appendChild(n),o}function E(e){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&n.onTreeNodeDoubleClick(this,t,e)}}function S(e){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&n.onTreeNodeRightClick(this,t,e)}}function A(e){if(!e.target.classList.contains("group")&&!e.target.classList.contains("leaf")){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&(n.onTreeNodeClick(this,t,e),e.stopPropagation(),e.preventDefault())}}}function w(e){if(!e.target.classList.contains("group")&&!e.target.classList.contains("leaf")){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&(n.onTreeNodeDoubleClick(this,t,e),e.stopPropagation(),e.preventDefault())}}}function T(e){if(!e.target.classList.contains("group")&&!e.target.classList.contains("leaf")){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&(n.onTreeNodeRightClick(this,t,e),e.stopPropagation(),e.preventDefault())}}}function M(e){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&(n.onTreeNodeIconClick(this,t,e),e.stopPropagation(),e.preventDefault())}}function C(e){e.stopPropagation(),e.preventDefault()}d.constructor=u,a.GlobalManagerMixin.call(d),d.pushDelegate=function(e){this.delegates.push(e),this.idToDelegate[e.model.id]=e,m(this)},d.removeDelegate=function(e){for(var t=0;ts&&r.splice(s)}}.bind(this);this.setCollapsed(i,e,!1,!0);var s=i.getRootId();if(o(s,i),!n)return-1;for(var a=0,l=r.length,c=this.isExcludeRoot()?1:0;ch&&(this.scrollY=e,m(this))},d.displayNoProperties=function(e){var t=this.getDocument();if(e){if(!this.divNoProps){this.divNoProps=t.createElement("div");var i="Model Browser is not available";this.divNoProps.innerText=s.A.t(i),this.divNoProps.setAttribute("data-i18n",i),this.divNoProps.classList.add("lmv-no-properties")}if(!this.divNoProps.parentNode)this.rootContainer.parentNode.appendChild(this.divNoProps)}else this.divNoProps&&this.divNoProps.parentNode&&this.divNoProps.parentNode.removeChild(this.divNoProps)},d.isExcludeRoot=function(){return 1===this.delegates.length&&this.options.excludeRoot},d.getDelegateCount=function(){return this.delegates.length}},72738:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ViewerModelStructurePanel:()=>d,generateDefaultViewerHandlerOptions:()=>c});var n=i(99587),r=i(11674),o=i(19556),s=i(77995),a=i(83081),l=i(81215);const c=e=>({onSearchSelected:function(t){var i=t.id,n=e.impl.findModel(t.modelId);e.setAggregateIsolation([{model:n,ids:[i]}])},onVisibilityIconClick:function(t,i){e.toggleVisibility(t,i)},onCreateUI:function(t){e.resizePanels&&e.resizePanels({dockingPanels:[t]}),t.scrollContainer.addEventListener("contextmenu",function(t){e.contextMenu.show(t)}.bind(t))},onIsolate:function(t,i){if(e.setAggregateIsolation([{model:i,ids:[t]}]),e.fitToView([t],i,!1),i){var n={type:o.SHOW_PROPERTIES_EVENT,dbId:t,model:i};e.dispatchEvent(n)}},onToggleMultipleOverlayedSelection:function(t){e.impl.selector.setAggregateSelection(t.map((t=>({model:e.impl.findModel(parseInt(t.modelId)),ids:t.ids}))));var i=e.getAggregateSelection();e.fitToView(i)},onToggleOverlayedSelection:function(t,i,n){n?e.select([],void 0,i):(e.select(t,i),e.fitToView([t],i,!1))},onTreeNodeRightClick:function(t){e.contextMenu.show(t)},onSelectOnly:function(t,i){e.select(t,i)},onDeselectAll:function(){e.clearSelection()},onSelectToggle:function(t,i){e.toggleSelect(t,i)},onShowAll:function(){e.showAll()},onFocus:function(){e.fitToView()},onHide:function(t,i){e.hide(t,i)},onShow:function(t,i){e.show(t,i)},onToggleVisibility:function(t,i){e.toggleVisibility(t,i)},getAggregateIsolation:e.getAggregateIsolation.bind(e),getAggregateHiddenNodes:e.getAggregateHiddenNodes.bind(e),getAggregateSelection:e.getAggregateSelection.bind(e),globalManager:e.globalManager,container:e.container,removeEventListener:e.removeEventListener.bind(e),addEventListener:e.addEventListener.bind(e)}),h=Autodesk.Viewing.Private;var u={click:{onObject:["isolate"]},clickShift:{onObject:["toggleMultipleOverlayedSelection"]},clickCtrl:{onObject:["toggleVisibility"]}};function d(e,t,i){let o={...i}||{},l=t;e instanceof Autodesk.Viewing.GuiViewer3D||e instanceof Autodesk.Viewing.Viewer3D?(a.logger.warn("Deprecated use of Viewer as parameter. Use options callbacks instead"),o={...o,...c(e)}):o={...e},this.visible=!1,this._trackNodeClick=!0,o.defaultTitle="Model",o.excludeRoot=void 0===o.excludeRoot||o.excludeRoot,o.startCollapsed=void 0!==o.startCollapsed&&o.startCollapsed,o.scrollEaseCurve=o.scrollEaseCurve||[0,0,.29,1],o.scrollEaseSpeed=void 0!==o.scrollEaseSpeed?o.scrollEaseSpeed:.003,o.addFooter=void 0===o.addFooter||o.addFooter,this.clickConfig=o&&o.docStructureConfig?o.docStructureConfig:u,this.isMac=-1!==navigator.userAgent.search("Mac OS"),o.hideSearch?(o.heightAdjustment=70,n.ModelStructurePanel.call(this,o.container,o.container.id+"ViewerModelStructurePanel",l,o),this.scrollContainer.classList.add("no-search")):(o.heightAdjustment=104,n.ModelStructurePanel.call(this,o.container,o.container.id+"ViewerModelStructurePanel",l,o),this.searchbox=new s.Searchbox(o.container.id+"ViewerModelStructurePanel-Searchbox",o.container,{excludeRoot:o.excludeRoot,searchFunction:f.bind(this)}),this.searchbox.setGlobalManager(this.globalManager),o.onSearchSelected&&this.searchbox.addEventListener(r.j,o.onSearchSelected),this.container.appendChild(this.searchbox.container)),this.setGlobalManager(o.globalManager),this._ignoreScroll=!1,this.selectedNodes={},this.onViewerSelect=this.onViewerSelect.bind(this),this.onViewerIsolate=this.onViewerIsolate.bind(this),this.onViewerHide=this.onViewerHide.bind(this),this.onViewerShow=this.onViewerShow.bind(this)}function f(e){var t=this.tree,i=e.toLowerCase(),n=[];return t.forEachDelegate((function(e){var r=e.getRootId(),o=[];t.iterate(e,r,(function(t){var n=e.instanceTree&&e.instanceTree.getNodeName(t);return n&&-1!==n.toLowerCase().indexOf(i)&&o.push(t),!0})),n.push({ids:o,delegate:e})})),h.analytics.track("viewer.model_browser",{from:"Panel",action:"Search"}),n}d.prototype=Object.create(n.ModelStructurePanel.prototype),d.prototype.constructor=d,l.ViewerPanelMixin.call(d.prototype),d.prototype.uninitialize=function(){var e,t,i,r,s,a,l,c;null===(e=(t=this.options).removeEventListener)||void 0===e||e.call(t,o.AGGREGATE_SELECTION_CHANGED_EVENT,this.onViewerSelect),null===(i=(r=this.options).removeEventListener)||void 0===i||i.call(r,o.AGGREGATE_ISOLATION_CHANGED_EVENT,this.onViewerIsolate),null===(s=(a=this.options).removeEventListener)||void 0===s||s.call(a,o.HIDE_EVENT,this.onViewerHide),null===(l=(c=this.options).removeEventListener)||void 0===l||l.call(c,o.SHOW_EVENT,this.onViewerShow),this.searchResults&&(this.searchResults.uninitialize(),this.searchResults=null),n.ModelStructurePanel.prototype.uninitialize.call(this)},d.prototype.resizeToContent=function(){var e=this.scrollContainer,t=this.tree?this.tree.getRootContainer():null;if(e&&t){var i="calc(100% + "+e.scrollLeft+"px)";t.style.width=i}},d.prototype.createUI=function(){var e,t,i,r,s,a,l,c,h,u;if(!this.uiCreated){n.ModelStructurePanel.prototype.createUI.call(this),this.scrollContainer.classList.remove("left");var d=function(){this.visible&&this.resizeToContent(),requestAnimationFrame(d)}.bind(this);d(),null===(e=(t=this.options).onCreateUI)||void 0===e||e.call(t,this);var f=this.options,p=f.maxHeight?f.maxHeight:"calc("+this.container.style.maxHeight+" - 30px)";this.container.style.top="10px",this.container.style.left="10px",this.container.style.height=p,this.container.style.maxHeight=p,null===(i=(r=this.options).addEventListener)||void 0===i||i.call(r,o.AGGREGATE_SELECTION_CHANGED_EVENT,this.onViewerSelect),null===(s=(a=this.options).addEventListener)||void 0===s||s.call(a,o.AGGREGATE_ISOLATION_CHANGED_EVENT,this.onViewerIsolate),null===(l=(c=this.options).addEventListener)||void 0===l||l.call(c,o.HIDE_EVENT,this.onViewerHide),null===(h=(u=this.options).addEventListener)||void 0===h||h.call(u,o.SHOW_EVENT,this.onViewerShow)}},d.prototype.onViewerSelect=function(e){this.setSelection(e.selections),this._ignoreScroll||this.scrollToSelection(e.selections),this._ignoreScroll=!1},d.prototype.onViewerIsolate=function(e){this.setIsolation(e.isolation)},d.prototype.onViewerHide=function(e){this.setHidden(e.nodeIdArray.slice(),e.model,!0)},d.prototype.onViewerShow=function(e){this.setHidden(e.nodeIdArray.slice(),e.model,!1)},d.prototype.setVisible=function(e){n.ModelStructurePanel.prototype.setVisible.call(this,e),this.visible!==e&&(this.visible=e,this.visible&&this.sync())},d.prototype.sync=function(){var e,t,i,n,r,o,s=(null===(e=(t=this.options).getAggregateIsolation)||void 0===e?void 0:e.call(t))||[],a=(null===(i=(n=this.options).getAggregateHiddenNodes)||void 0===i?void 0:i.call(n))||[],l=(null===(r=(o=this.options).getAggregateSelection)||void 0===r?void 0:r.call(o))||[];if(this.setIsolation(s),0===s.length)for(var c=0;c0?this.animateScroll(o,s,function(e){this.tree.setScroll(e)}.bind(this)):(this.scrollContainer.scrollTop=s,this.tree.setScroll(s))}},d.prototype.onEyeIcon=function(e,t){var i,n;null===(i=(n=this.options).onVisibilityIconClick)||void 0===i||i.call(n,e,t),h.analytics.track("viewer.model_browser",{from:"Panel",action:"Toggle Visibility"})},d.prototype.onTreeNodeClick=function(e,t,i,n){if(this._trackNodeClick&&(a.logger.track({category:"node_selected",name:"model_browser_tool"}),this._trackNodeClick=!1),!this.isMac||!n.ctrlKey){var r="click";this.ctrlDown(n)&&(r+="Ctrl"),n.shiftKey&&(r+="Shift"),n.altKey&&(r+="Alt");var o=["toggleOverlayedSelection"],s=this.clickConfig[r];s&&(o=s.onObject),h.analytics.track("viewer.model_browser",{from:"Panel",action:"Select"}),this.handleAction(o,t,i)}},d.prototype.onTreeNodeRightClick=function(e,t,i,n){if(this.isMac&&n.ctrlKey&&0===n.button)return this.clickConfig&&this.clickConfig.clickCtrl&&this.handleAction(this.clickConfig.clickCtrl.onObject,t,i),null;this.options.onTreeNodeRightClick&&this.options.onTreeNodeRightClick(n)},d.prototype.handleAction=function(e,t,i){var n,r,o,s,a,l,c,h,u,d,f,p,m,g,v,y;for(var b in e)switch(e[b]){case"toggleOverlayedSelection":this.toggleOverlayedSelection(t,i);break;case"toggleMultipleOverlayedSelection":this.toggleMultipleOverlayedSelection(t,i);break;case"selectOnly":this.options.onSelectOnly&&this.options.onSelectOnly(t,i);break;case"deselectAll":null===(n=(r=this.options).onDeselectAll)||void 0===n||n.call(r,t,i);break;case"selectToggle":null===(o=(s=this.options).onSelectToggle)||void 0===o||o.call(s,t,i);break;case"isolate":null===(a=(l=this.options).onIsolate)||void 0===a||a.call(l,t,i);break;case"showAll":null===(c=(h=this.options).onShowAll)||void 0===c||c.call(h,t,i);break;case"focus":null===(u=(d=this.options).onFocus)||void 0===u||u.call(d,t,i);break;case"hide":null===(f=(p=this.options).onHide)||void 0===f||f.call(p,t,i);break;case"show":null===(m=(g=this.options).onShow)||void 0===m||m.call(g,t,i);break;case"toggleVisibility":null===(v=(y=this.options).onToggleVisibility)||void 0===v||v.call(y,t,i)}},d.prototype.toggleOverlayedSelection=function(e,t){var i,n,r=this.selectedNodes[t.id],o=r?r.indexOf(e):-1;this._ignoreScroll=!0,null===(i=(n=this.options).onToggleOverlayedSelection)||void 0===i||i.call(n,e,t,-1!==o)},d.prototype.toggleMultipleOverlayedSelection=function(e,t){var i=this.selectedNodes[t.id],n=i?i.indexOf(e):-1;if(-1===n?(i||(i=this.selectedNodes[t.id]=[]),i.push(e)):i.splice(n,1),this.options.onToggleMultipleOverlayedSelection){var r=[];for(var o in this.selectedNodes)if(Object.prototype.hasOwnProperty.call(this.selectedNodes,o)){var s=this.selectedNodes[o];r.push({modelId:o,ids:s})}this.options.onToggleMultipleOverlayedSelection(r)}this._ignoreScroll=!0},d.prototype.ctrlDown=function(e){return this.isMac&&e.metaKey||!this.isMac&&e.ctrlKey}},23611:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ViewerObjectContextMenu:()=>o});var n=i(16969),r=i(83081);function o(e){n.ObjectContextMenu.call(this,e)}o.prototype=Object.create(n.ObjectContextMenu.prototype),o.prototype.constructor=o,o.prototype.buildMenu=function(e,t){if(!this.viewer.model)return;var i=this,n=[],o=this.viewer.navigation,s=this.viewer.model.is2d();const a=Autodesk.Viewing.Private.analytics;t.hasSelected&&(n.push({title:"Isolate",target:function(){var e=i.viewer.getAggregateSelection();i.viewer.clearSelection(),i.viewer.impl.visibilityManager.aggregateIsolate(e),r.logger.track({name:"isolate_count",aggregate:"count"}),a.track("viewer.object.visibility",{action:"Isolate"})}}),t.hasVisible&&n.push({title:"Hide Selected",target:function(){const e=i.viewer.impl.selector.getAggregateSelection();i.viewer.clearSelection(),i.viewer.impl.visibilityManager.aggregateHide(e),a.track("viewer.object.visibility",{action:"Hide Selected"})}}),t.hasHidden&&n.push({title:"Show Selected",target:function(){var e=i.viewer.getSelection();i.viewer.clearSelection(),i.viewer.show(e),a.track("viewer.object.visibility",{action:"Show Selected"})}})),s&&n.push({title:"Show All Layers",target:function(){i.viewer.setLayerVisible(null,!0),a.track("viewer.object.visibility",{action:"Show All Layers"})}}),n.push({title:"Show All Objects",target:function(){i.viewer.showAll(),r.logger.track({name:"showall",aggregate:"count"}),a.track("viewer.object.visibility",{action:"Show All Objects"})}});var l=i.viewer.getAggregateSelection();if(!s&&1===l.length&&o.isActionEnabled("gotoview")&&n.push({title:"Focus",target:function(){if((l=i.viewer.getAggregateSelection()).length>0){var e=l[0];i.viewer.fitToView(e.selection,e.model)}else 0===l.length&&i.viewer.fitToView();r.logger.track({name:"fittoview",aggregate:"count"})}}),!s){var c=this.viewer.impl.getCanvasBoundingClientRect(),h=e.clientX-c.left,u=e.clientY-c.top,d=this.viewer.clientToWorld(h,u,!1);d&&n.push({title:"Pivot",target:()=>{this.viewer.navigation.setPivotPoint(d.point)}})}return t.hasSelected&&n.push({title:"Clear Selection",target:function(){i.viewer.clearSelection(),r.logger.track({name:"clearselection",aggregate:"count"})}}),n}},81215:(e,t,i)=>{"use strict";function n(){this.getContainerBoundingRect=function(){var e=this.parentContainer.getBoundingClientRect(),t={height:0,width:0,left:0,bottom:0,right:0,top:0},i=this.getDocument().getElementsByClassName("toolbar-menu");return i&&i.length>0&&(t=i[0].getBoundingClientRect()),{height:e.height-t.height,width:e.width,left:e.left,bottom:e.bottom-t.height,right:e.right,top:e.top}}}i.r(t),i.d(t,{ViewerPanelMixin:()=>n})},87471:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ViewerPropertyPanel:()=>l});var n=i(14813),r=i(81215),o=i(19556),s=i(96551),a=i(83081);function l(e){this.viewer=e,this.setGlobalManager(e.globalManager),this.currentNodeIds=[],this.currentModel=null,this.currentSelections=[],this.isDirty=!0,this.propertyNodeId=null,this.normalTitle="Properties",this.loadingTitle="Object Properties Loading",this._viewDbId=null,this.onProperties=this.onProperties.bind(this),this.onPropertySet=this.onPropertySet.bind(this),this.onPropError=this.onPropError.bind(this),this.setPropertiesIntoUI=this.setPropertiesIntoUI.bind(this),this.setAggregatedPropertiesIntoUI=this.setAggregatedPropertiesIntoUI.bind(this),this._onDisplayUnitPreferenceChanged=this._onDisplayUnitPreferenceChanged.bind(this),n.PropertyPanel.call(this,e.container,"ViewerPropertyPanel",this.loadingTitle)}function c(e){var t=e.getDocumentNode(),i=t&&t.findViewableParent();return!(!i||-1===i.name().toLocaleLowerCase().indexOf(".sld"))}l.prototype=Object.create(n.PropertyPanel.prototype),l.prototype.constructor=l,r.ViewerPanelMixin.call(l.prototype),l.prototype._onDisplayUnitPreferenceChanged=function(){this.isDirty=!0;const e=this.currentModel?this.currentModel.getRootId():null;if(null!==this.propertyNodeId&&this.propertyNodeId!==e){const e={model:this.currentModel};e.selection=Array.isArray(this.propertyNodeId)?this.propertyNodeId:[this.propertyNodeId],this.requestAggregatedNodeProperties(e)}else this.requestProperties()},l.prototype.initialize=function(){n.PropertyPanel.prototype.initialize.call(this);var e=this;this.viewer.prefs.addListeners(Autodesk.Viewing.Private.Prefs.DISPLAY_UNITS,this._onDisplayUnitPreferenceChanged),this.viewer.prefs.addListeners(Autodesk.Viewing.Private.Prefs.DISPLAY_UNITS_PRECISION,this._onDisplayUnitPreferenceChanged),e.addEventListener(e.viewer,o.AGGREGATE_SELECTION_CHANGED_EVENT,(function(t){t.selections&&t.selections.length?(e.currentNodeIds=t.selections[0].dbIdArray,e.currentModel=t.selections[0].model,e.currentSelections=[],t.selections.forEach((t=>{e.currentSelections.push({model:t.model,selection:t.dbIdArray})}))):e.resetCurrentModel(),e.isDirty=!0,e.requestProperties()})),e.addEventListener(e.viewer,o.SHOW_PROPERTIES_EVENT,(function(t){t&&t.dbId&&(e.currentModel=t.model,e.requestAggregatedNodeProperties({model:t.model,selection:[t.dbId]}))})),e.addEventListener(e.viewer,o.HIDE_EVENT,(function(t){e.isDirty=!0,e.requestProperties()})),e.addEventListener(e.viewer,o.OBJECT_TREE_CREATED_EVENT,(function(t){e.currentModel===t.model&&(e.isDirty=!0,e.requestProperties())})),e.addEventListener(e.viewer,o.SHOW_EVENT,(function(t){e.isDirty=!0,e.requestProperties()})),e.viewer.addEventListener(o.MODEL_UNLOADED_EVENT,(function(t){t.model===e.currentModel&&e.resetCurrentModel()}));var t=this.viewer.getAggregateSelection();t.length?(this.currentModel=t[0].model,this.currentNodeIds=t[0].selection,this.currentSelections=t):this.resetCurrentModel()},l.prototype.resetCurrentModel=function(){var e=this.viewer?this.viewer.getVisibleModels():[];this.currentModel=1===e.length?e[0]:null,this.currentNodeIds=[],this.currentSelections=[]},l.prototype.setTitle=function(e,t){e||(e="Object Properties",(t=t||{}).localizeTitle=!0),n.PropertyPanel.prototype.setTitle.call(this,e,t)},l.prototype.setVisible=function(e){s.DockingPanel.prototype.setVisible.call(this,e),this.requestProperties()},l.prototype.visibilityChanged=function(){s.DockingPanel.prototype.visibilityChanged.call(this),this.isVisible()&&this.requestProperties()},l.prototype.requestProperties=function(){this.isVisible()&&this.isDirty&&(this.currentSelections.length>0?this.requestAggregatedNodeProperties(this.currentSelections):this.showDefaultProperties(),this.isDirty=!1)},l.prototype.onProperties=function(e){if(!this.viewer||!this.currentModel)return;if(e.dbId!==this.propertyNodeId)return;var t,i=[],n=e.properties;if(n)for(var r=0,o=n.length;r0?function(e,t,i){return new Promise((function(n,r){e.getBulkProperties2(t,{ignoreHidden:!0},(function(e){for(var t=0,r=e.length;t{this.setProperties([]),this.highlight(""),this.resizeToContent(),this.respositionPanel()}))},l.prototype.onPropertySet=function(e){if(!this.viewer||!this.currentModel)return;if(0===e.getVisibleKeys().length)return this.onPropError(),this.resizeToContent(),void this.respositionPanel();const t=e.map,i=[];let n;e.getValidIds(null,"__internalref__").forEach((e=>{t[e].forEach((e=>{i.includes(e.displayValue)||i.push(e.displayValue)}))}));const r=this.currentModel;n=r.is3d()&&c(r)&&i.length>0?function(e,t,i){return new Promise(((n,r)=>{e.getPropertySet(t,(e=>{n(i.merge(e))}),r,{ignoreHidden:!0})}))}(r,i,e):Promise.resolve(e),n.then(this.setAggregatedPropertiesIntoUI).catch((e=>{a.logger.error(e),this.setProperties([]),this.highlight(""),this.resizeToContent(),this.respositionPanel()}))},l.prototype.setAggregatedPropertiesIntoUI=function(e){const t=e.getDbIds().length;if(1===t){let t=Object.prototype.hasOwnProperty.call(e.map,"Name"),i=t?e.map.Name[0]:this.normalTitle;"object"==typeof i&&Object.prototype.hasOwnProperty.call(i,"displayValue")&&(t=!0,i=i.displayValue),this.setTitle(i,{localizeTitle:!t})}else this.setTitle("Properties %(value)",{localizeTitle:!0,i18nOpts:{value:`(${t})`}});this.setAggregatedProperties(e),this.highlight(this.viewer.searchText),this.resizeToContent(),this.respositionPanel()},l.prototype.setPropertiesIntoUI=function(e){var t=e.name||this.normalTitle,i=!e.name;this.setTitle(t,{localizeTitle:i}),"name"in e&&e.properties&&e.properties.splice(0,0,{displayName:"Name",displayValue:e.name,displayCategory:null,attributeName:"Name",type:20,units:null,hidden:!1,precision:0}),this.setProperties(e.properties),this.highlight(this.viewer.searchText),this.resizeToContent(),this.respositionPanel()},l.prototype.onPropError=function(){this.setTitle(this.normalTitle,{localizeTitle:!0}),this.showNoProperties()},l.prototype.requestAggregatedNodeProperties=function(e){var t;1===(e=Array.isArray(e)?e:[e]).length&&1===(null===(t=e[0].selection)||void 0===t?void 0:t.length)&&(this.propertyNodeId=e[0].selection[0]);const i=[];e.forEach((e=>{var t,n;i.push(e.model.getPropertySetAsync(e.selection,{fileType:null===(t=e.model.getData())||void 0===t||null===(t=t.loadOptions)||void 0===t?void 0:t.fileExt,needsExternalId:null===(n=e.model.getData())||void 0===n||null===(n=n.loadOptions)||void 0===n?void 0:n.needsExternalId}))})),Promise.all(i).then((e=>{const t=e[0];for(let i=1;i{this.viewer&&t===this.currentModel&&(i?this.onPropertySet(e):this.onProperties(e))}),this.onPropError)},l.prototype.setNodeProperties=l.prototype.requestNodeProperties,l.prototype.requestViewProperties=function(e){if(null!==this._viewDbId){const e={model:this.currentModel,selection:[this._viewDbId]};return void this.requestAggregatedNodeProperties(e)}const t=this.currentModel,i=t.getRootId();this.propertyNodeId=i,t.getPropertySet([i],(n=>{if(!this.viewer)return;if(t!==this.currentModel)return;this._viewDbId=i;const r=e.name(),o=e.isSheet(),s=[],a=[],l=n.getValidIds("Sheet"),c=n.getValidIds("View");l.forEach((e=>{n.map[e].forEach((e=>{a.push(e.displayValue)}))})),c.forEach((e=>{n.map[e].forEach((e=>{s.push(e.displayValue)}))}));const h=o?a:s;if(0!==h.length){var u=this;t.getBulkProperties2(h,{propFilter:["name","dbId"],ignoreHidden:!0},(function(e){const s=[];for(let t=0;t{"use strict";i.r(t),i.d(t,{ViewerSettingTab:()=>A,ViewerSettingsPanel:()=>T});var n=i(94589),r=i(19556),o=i(19948),s=i(83081),a=i(97005),l=i(38842),c=i(55280),h=i(81215),u=i(26206);class d{constructor(e,t){this._width=e||60,this._height=t||60}createThumbnail(e,t){return new Promise((t=>{var i=this.getDocument().createElement("canvas");i.width=this._width,i.height=this._height;var n=i.getContext("2d"),r=n.createLinearGradient(0,0,0,i.height),o=e.bgColorGradient,s=f(o[0],o[1],o[2]),a=f(o[3],o[4],o[5]);r.addColorStop(0,s),r.addColorStop(1,a),n.fillStyle=r,n.fillRect(0,0,i.width,i.height),i.toBlob((function(e){var i=URL.createObjectURL(e);t(i)}))}))}}function f(e,t,i){return e=parseInt(e),t=parseInt(t),i=parseInt(i),"#"+p(e)+p(t)+p(i)}function p(e){if(0===e)return"00";for(var t="",i=e>255?255:e;0!==i;){var n=i%16;i=i/16|0,t=m[n.toString()]+t}return t.length>1?t:"0"+t}u.GlobalManagerMixin.call(d.prototype);const m={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"};var g=i(38221),v=i.n(g),y=i(35922),b=i(26477),x=i(13202);const _=Autodesk.Viewing,E=_.Private;let S=0,A={Navigation:"navigationtab",Configuration:"performancetab",Appearance:"appearance",Environment:"environment"};var w=0;function T(e,t){var i,o,a;let l={...e};if(this.viewer=null,e instanceof Autodesk.Viewing.GuiViewer3D||e instanceof Autodesk.Viewing.Viewer3D){const t=e;l={preferences:t.prefs,globalManager:t.globalManager,addEventListener:t.addEventListener.bind(t),removeEventListener:t.removeEventListener.bind(t),container:t.container,version:t.config.viewerVersion,onRestoreDefaults:t.restoreDefaultSettings.bind(t),detectIfModelsHaveEdge:D.bind(this),loadExtension:t.loadExtension.bind(this),unloadExtension:t.unloadExtension.bind(this),width:400,heightAdjustment:110},this.viewer=t}this.options=l,this.preferences=l.preferences,this.is3dMode=!t.is2d();const c="pdf"===(null===(i=t.getDocumentNode())||void 0===i?void 0:i.getInputFileType()),h=null===(o=t.getDocumentNode())||void 0===o||null===(o=o.data)||void 0===o||null===(o=o.extractor)||void 0===o?void 0:o.includes("pdf");this.isPdfFile=c||h,this.enableVectorRasterSwitch=null==e||null===(a=e._curOptions)||void 0===a?void 0:a.enableVectorRasterSwitch,this.visible=!1,this._externalButtonIds=[],this._externalButtonsLabel=null,n.SettingsPanel.call(this,this.options.container,"ViewerSettingsPanel"+S+++"-"+w++,"Settings",l),this.container.classList.add("viewer-settings-panel"),this.setGlobalManager(this.options.globalManager),this.addTab(A.Configuration,"Configuration",{className:"performance"}),this.addTab(A.Navigation,"Navigation",{className:"navigation"}),this.addTab(A.Appearance,"Appearance",{className:"appearance"}),this.is3dMode?this.addTab(A.Environment,"Environment",{className:"environment"}):this.container.classList.add("for-2d-model"),this.createRestoreDefaultSettingsButton(),this.modelPreferenceCount=0,this.createNavigationPanel(),this.createConfigurationPanel(),this.createAppearancePanel(),this.modelPreferenceCount&&s.logger.log("Model locked ("+this.modelPreferenceCount+") render settings in UI."),this.selectTab(A.Configuration),this.footer=this.createFooter(),this.createVersionLabel(this.footer),this.syncUI=this.syncUI.bind(this),this.options.addEventListener(r.RESTORE_DEFAULT_SETTINGS_EVENT,this.syncUI),this.options.addEventListener(r.VIEWER_STATE_RESTORED_EVENT,this.syncUI),this.updateEdgeToggle=this.updateEdgeToggle.bind(this),this.options.addEventListener(r.GEOMETRY_LOADED_EVENT,this.updateEdgeToggle),this.sendAnalyticsDebounced=v()(P,500)}function M(e,t,i){e.createThumbnail(i).then((e=>{t.src=e,t.onload=function(){URL.revokeObjectURL(e)}}))}function C(e,t,i){const n={i18nOptions:{nsSeparator:!1,keySeparator:!1},betaLabel:!0};i&&(_.FeatureFlags.isEnabled(o.PublicFeatureFlags.LargeModelExperienceOptOut)||(e.largeModelExperienceChkBoxId=e.addCheckbox(t,"Large model experience","Improves your overall experience viewing large models. The changes will take effect on the next page load.",!1,void 0,y.Prefs3D.LARGE_MODEL_EXPERIENCE,n)),_.FeatureFlags.isEnabled(o.InternalFeatureFlags.OutOfCoreGpuMemoryManagement)&&(e.outOfCoreGpuMemoryManagementChkBoxId=e.addCheckbox(t,"Out Of Core GPU Memory Management","Dynamically manages the GPU Memory based on your viewpoint. The changes will take effect on the next page load.",!1,void 0,y.Prefs3D.OUT_OF_CORE_GPU_MEMORY_MANAGEMENT,n))),_.FeatureFlags.isEnabled(o.InternalFeatureFlags.WebGPUBackend)&&(e.webgpuChkBoxId=e.addCheckbox(t,"WebGPU Graphics","Use WebGPU for rendering (requires page reload). Not all features are supported, may cause instabilities.",!1,void 0,y.Prefs.WEBGPU,n))}function P(e,t){E.analytics.track("viewer.settings.changed",{setting_name:e,setting_value:t})}function D(){if(!this.is3dMode)return!1;let e=!1;const t=this.viewer.impl.modelQueue().getModels();for(let i=0;ie.name)).indexOf(e)}for(var t=this.gridTable.querySelectorAll(".settings-environment-cell"),i=0;i{e?this.options.loadExtension("Autodesk.Viewing.FusionOrbit",null):this.options.unloadExtension("Autodesk.Viewing.FusionOrbit",null)}),y.Prefs.FUSION_ORBIT),this.addCheckbox(e,"Orbit past world poles","Allows view rotation to continue past the model’s North Pole",!0,void 0,y.Prefs3D.ORBIT_PAST_WORLD_POLES),this.addLabel(e,"Zoom"),(0,c.isMobileDevice)()||(this.addCheckbox(e,"Zoom towards pivot","When disabled, zooming operations are centered at the current cursor location",!1,void 0,y.Prefs3D.ZOOM_TOWARDS_PIVOT),this.addCheckbox(e,"Reverse mouse zoom direction","Toggles direction of zooming in and out",!1,void 0,y.Prefs.REVERSE_MOUSE_ZOOM_DIR),this.scrollSpeed=i.call(this)),this.dragSpeed=t.call(this),this.addLabel(e,"Mouse"),(0,c.isMobileDevice)()||(this.addCheckbox(e,"Left handed mouse setup","Swaps the buttons on the mouse",!1,void 0,y.Prefs.LEFT_HANDED_MOUSE_SETUP),this.addCheckbox(e,"Set pivot with left mouse button","Change left-click behavior to set new pivot point (overrides select object)",!1,void 0,y.Prefs3D.CLICK_TO_SET_COI)),this.addCheckbox(e,"Open properties on select","Always show properties upon selecting object",!0,void 0,y.Prefs.OPEN_PROPERTIES_ON_SELECT)),this.is3dMode||(this.addLabel(e,"Zoom"),this.addCheckbox(e,"Reverse mouse zoom direction","Toggles direction of zooming in and out",!1,void 0,y.Prefs.REVERSE_MOUSE_ZOOM_DIR),(0,c.isMobileDevice)()||(this.scrollSpeed=i.call(this)),this.dragSpeed=t.call(this),this.addLabel(e,"Mouse"),this.addCheckbox(e,"Open properties on select","Always show properties upon selecting object",!0,void 0,y.Prefs.OPEN_PROPERTIES_ON_SELECT),(0,c.isMobileDevice)()||this.addCheckbox(e,"Left handed mouse setup","Swaps the buttons on the mouse",!1,void 0,y.Prefs.LEFT_HANDED_MOUSE_SETUP))},T.prototype.addConfigButton=function(e,t){if(!t)throw new Error("Must register a function callback.");this._externalButtonsLabel||(this._externalButtonsLabel=this.addLabel(A.Configuration,"More"));var i=this.addButton(A.Configuration,e);return this.getControl(i).setOnClick((()=>{this.setVisible(!1),t()})),this._externalButtonIds.push(i),i},T.prototype.removeConfigButton=function(e){var t=this._externalButtonIds.indexOf(e);if(-1===t)return!1;var i=this.getControl(e);return!!i&&(this.removeControl(i),this._externalButtonIds.splice(t,1),0===this._externalButtonIds.length&&null!==this._externalButtonsLabel&&(this._externalButtonsLabel.removeFromParent(),this._externalButtonsLabel=null),!0)},T.prototype.updateEdgeToggle=function(){const e=document.getElementById(this.edgeCheckboxName+"_check");if(!e)return;if(!this.is3dMode)return;this.options.detectIfModelsHaveEdge()?e.disabled=!1:(e.disabled=!0,e.checked=!1)},T.prototype.createConfigurationPanel=function(){var e=A.Configuration;this.is3dMode?(this.addLabel(e,"Performance Optimization"),this.optimizeNavigationhkBoxId=this.addCheckbox(e,"Disable shadow effect","Provides faster response(but degrades quality) while navigating",(0,c.isMobileDevice)(),void 0,y.Prefs3D.OPTIMIZE_NAVIGATION),this.progressiveRenderChkBoxId=this.addCheckbox(e,"Progressive display","Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker) This improves perceived waiting time",!0,void 0,y.Prefs.PROGRESSIVE_RENDERING),C(this,e,this.is3dMode),this.addLabel(e,"Display"),this.ghosthiddenChkBoxId=this.addCheckbox(e,"Ghost hidden objects","Leave hidden objects slightly visible",!0,void 0,y.Prefs3D.GHOSTING),this.displayLinesId=this.addCheckbox(e,"Display Lines","Toggles display of line objects",!0,void 0,y.Prefs3D.LINE_RENDERING),this.displayPointsId=this.addCheckbox(e,"Display Points","Toggles display of point objects",!0,void 0,y.Prefs.POINT_RENDERING),this.edgeCheckboxName="Display edges",this.displayEdgesId=this.addCheckbox(e,this.edgeCheckboxName,"Shows outline of model surfaces",!1,(e=>{this.getControl(this.displayEdgesId).setValue(e),this.updateEdgeToggle()}),y.Prefs3D.EDGE_RENDERING),this.updateEdgeToggle(),this.displaySectionHatchesId=this.addCheckbox(e,"Display Section Hatches","Shows hatch pattern for section planes this does not apply to section boxes",!0,null,E.Prefs3D.DISPLAY_SECTION_HATCHES)):(this.addLabel(e,"Performance Optimization"),this.progressiveRenderChkBoxId=this.addCheckbox(e,"Progressive display","Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker) This improves perceived waiting time",!0,void 0,y.Prefs.PROGRESSIVE_RENDERING),C(this,e,this.is3dMode),this.isPdfFile&&this.enableVectorRasterSwitch&&(this.vectorViewingChkBoxId=this.addCheckbox(e,"Vector Viewing","Provides increased zooming, snapping and access to PDF vector data. If turned off, all PDFs will be rasterized.",!0,void 0,y.Prefs2D.VECTOR_VIEWING)),this.addLabel(e,"Display")),this.displayUnitsId=this.addDropDownMenu(e,"Display Units",E.displayUnits,E.displayUnitsEnum,null,E.Prefs.DISPLAY_UNITS),this.displayUnitsPrecisionId=this.addDropDownMenu(e,"Precision",E.displayUnitsPrecision,E.displayUnitsPrecisionEnum,null,E.Prefs.DISPLAY_UNITS_PRECISION),this.is3dMode&&this._addSelectionModeOption()},T.prototype._addSelectionModeOption=function(){const e=A.Configuration;this.addLabel(e,"Selection");const t=[],i=[];let n=0;for(let e in Autodesk.Viewing.SelectionMode)t[n]=e,i[n]=Autodesk.Viewing.SelectionMode[e],n++;const r=t.map((e=>e.split("_").map((e=>e.charAt(0)+e.slice(1).toLowerCase())).join(" ")));this.selectionModeId=this.addDropDownMenu(e,"Selection Mode",r,i,null,E.Prefs3D.SELECTION_MODE)},T.prototype.createAppearancePanel=function(){var e=A.Appearance;this.is3dMode?(this.addLabel(e,"Visual Quality Optimization"),this.antialiasingChkBoxId=this.addCheckbox(e,"Anti-aliasing","Remove jagged edges from lines",!0,void 0,y.Prefs3D.ANTIALIASING),this.ambientshadowsChkBoxId=this.addCheckbox(e,"Ambient shadows","Improve shading of occluded surfaces",!0,void 0,y.Prefs3D.AMBIENT_SHADOWS),this.groundShadowChkBoxId=this.addCheckbox(e,"Ground shadow","Add simulated ground surface shadows",!0,void 0,y.Prefs3D.GROUND_SHADOW),this.groundReflectionChkBoxId=this.addCheckbox(e,"Ground reflection","Add simulated ground surface reflections",!1,void 0,y.Prefs3D.GROUND_REFLECTION)):(this.addLabel(e,"Existing behavior"),this.swapBlackAndWhiteChkBoxId=this.addCheckbox(e,"2D Sheet Color","Switch sheet color white to black",!0,void 0,y.Prefs2D.SWAP_BLACK_AND_WHITE),this.loadingAnimationChkBoxId=this.addCheckbox(e,"Loading Animation","Animate lines during loading",!0,void 0,y.Prefs2D.LOADING_ANIMATION))},T.prototype.createEnvironmentPanel=function(){if(this.is3dMode&&!this.envTabCreated){this.envTabCreated=!0;var e=A.Environment,t=this.tablesContainer.childNodes[3];this.gridTable=t,this.addLabel(e,"Environment"),this.envMapBackgroundChkBoxId=this.addCheckbox(e,"Environment Image Visible","Shows lighting environment as background",!0,void 0,y.Prefs3D.ENV_MAP_BACKGROUND);var i=t.tBodies[0].insertRow(-1).insertCell(0),n=this.getDocument();this.caption=n.createElement("div"),this.caption.setAttribute("data-i18n","Environments and Lighting Selection"),this.caption.textContent=l.A.t("Environments and Lighting Selection"),this.caption.classList.add("settings-row-title"),i.appendChild(this.caption),i.colSpan="3",this.envSelect=this.addGrid(t,a.LightPresets,this.updateEnvironmentSelection.bind(this),E.Prefs3D.LIGHT_PRESET),this.updateEnvironmentSelection(),this.envSelect.classList.add("with-environment")}},T.prototype.createVersionLabel=function(e){if(e){var t=this.getDocument();this.versionDiv=t.createElement("div"),this.versionDiv.textContent=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:LMV_VIEWER_VERSION;"@"===e.charAt(0)&&(e="0.0.0");return"v"+e}(this.options.version),this.versionDiv.className="docking-panel-version-label",this.addEventListener(this.versionDiv,"click",(e=>{e.shiftKey&&navigator.clipboard.writeText(this.versionDiv.textContent)})),e.appendChild(this.versionDiv)}},T.prototype.createRestoreDefaultSettingsButton=function(){var e=this.getDocument();this.restoreDiv=e.createElement("div"),this.restoreDiv.classList.add("docking-panel-container-solid-color-b"),this.restoreDiv.classList.add("restore-defaults-container"),this.restoreButton=e.createElement("div"),this.restoreButton.className="docking-panel-tertiary-button",this.restoreButton.setAttribute("data-i18n","Restore all default settings"),this.restoreButton.textContent=l.A.t("Restore all default settings"),this.restoreDiv.appendChild(this.restoreButton),this.addEventListener(this.restoreDiv,"touchstart",c.touchStartToClick),this.addEventListener(this.restoreDiv,"click",(()=>{var e,t;null===(e=(t=this.options).onRestoreDefaults)||void 0===e||e.call(t),E.analytics.track("viewer.settings.default")}),!1),this.scrollContainer.appendChild(this.restoreDiv)},T.prototype.selectTab=function(e){n.SettingsPanel.prototype.selectTab.call(this,e),this.sizeToContent()},T.prototype.sizeToContent=function(){n.SettingsPanel.prototype.sizeToContent.call(this,this.options.container)},T.prototype.onViewerResize=function(e,t,i,n,r,o){this.sizeToContent()},T.prototype.syncUI=function(){var e=this.preferences;this.setControlValue(this.antialiasingChkBoxId,e.get("antialiasing")),this.setControlValue(this.ambientshadowsChkBoxId,e.get("ambientShadows")),this.setControlValue(this.groundShadowChkBoxId,e.get("groundShadow")),this.setControlValue(this.groundReflectionChkBoxId,e.get("groundReflection")),this.setControlValue(this.envMapBackgroundChkBoxId,e.get("envMapBackground")),this.setControlValue(this.progressiveRenderChkBoxId,e.get("progressiveRendering")),this.setControlValue(this.largeModelExperienceChkBoxId,e.get(y.Prefs3D.LARGE_MODEL_EXPERIENCE)),this.setControlValue(this.outOfCoreGpuMemoryManagementChkBoxId,e.get(y.Prefs3D.OUT_OF_CORE_GPU_MEMORY_MANAGEMENT)),this.setControlValue(this.webGPUChkBoxId,e.get(y.Prefs.WEBGPU)),this.setControlValue(this.swapBlackAndWhiteChkBoxId,e.get("swapBlackAndWhite")),this.setControlValue(this.vectorViewingChkBoxId,e.get(E.Prefs2D.VECTOR_VIEWING)),this.setControlValue(this.loadingAnimationChkBoxId,e.get("loadingAnimation")),this.setControlValue(this.ghosthiddenChkBoxId,e.get("ghosting")),this.setControlValue(this.displayLinesId,e.get("lineRendering")),this.setControlValue(this.displayPointsId,e.get("pointRendering")),this.setControlValue(this.displayEdgesId,e.get("edgeRendering")),this.setControlValue(this.displaySectionHatchesId,e.get("displaySectionHatches")),this.setControlValue(this.scrollSpeed,e.get("zoomScrollSpeed")),this.setControlValue(this.dragSpeed,e.get("zoomDragSpeed")),this.updateEnvironmentSelection()},T.prototype.setControlValue=function(e,t){var i=this.getControl(e);i&&i.setValue(t)}},23619:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Browser:()=>c,BrowserDelegate:()=>l});var n=i(26940),r=i(57480),o=i(83081);let s=(0,i(55280).getGlobal)(),a=s.document;function l(){}function c(e,t,i){this.myDelegate=e,this.mySelectedIds=[];var n="browserview";this.myRootContainerId=i+"-"+n,this.idToElement={},this.myRootContainer=a.createElement("div"),this.myRootContainer.id=this.myRootContainerId,this.myRootContainer.classList.add(n),a.getElementById(i).appendChild(this.myRootContainer),this.createElements(t,this.myRootContainer)}l.prototype.constructor=l,l.prototype.getNodeId=function(e){throw"getId is not implemented."},l.prototype.getNodeLabel=function(e){return e.name},l.prototype.getNodeClass=function(e){return""},l.prototype.hasThumbnail=function(e){return!1},l.prototype.getThumbnailOptions=function(e){return null},l.prototype.getThumbnail=function(e){return null},l.prototype.onNodeClick=function(e,t,i){},l.prototype.onNodeHover=function(e,t,i){},l.prototype.selectItem=function(e){},l.prototype.deselectItem=function(e){},l.prototype.hasContent=function(e){return!1},l.prototype.addContent=function(e,t){},c.prototype.constructor=c,c.prototype.show=function(e){e?(this.myRootContainer.classList.remove("browserHidden"),this.myRootContainer.classList.add("browserVisible"),this.myRootContainer.style.display="block"):(this.myRootContainer.classList.remove("browserVisible"),this.myRootContainer.classList.add("browserHidden"),this.myRootContainer.style.display="none")},c.prototype.getRootContainer=function(){return this.myRootContainer},c.prototype.delegate=function(){return this.myDelegate},c.prototype.addToSelection=function(e){var t=this;function i(e){return-1==t.mySelectedIds.indexOf(e)&&(t.mySelectedIds.push(e),!0)}for(var n=0,r=e.length;n=0;--n){var r=e[n];if(i(r)){var o=this.idToElement[r];void 0===o?t.myDelegate.deselectItem(r):o.classList.remove("selected")}}},c.prototype.setSelection=function(e){return this.removeFromSelection(this.mySelectedIds),this.addToSelection(e),this.mySelectedIds},c.prototype.clearSelection=function(){this.removeFromSelection(this.mySelectedIds)},c.prototype.createElements=function(e,t){if(e)for(var i=0;i{"use strict";i.r(t),i.d(t,{Button:()=>a});var n,r,o=i(60618),s=i(55280);function a(e,t){o.Control.call(this,e,t);var i=this;this._state=a.State.INACTIVE;var n=this.getDocument();this.icon=n.createElement("div"),this.icon.classList.add("adsk-button-icon"),this.container.appendChild(this.icon),this.container.addEventListener("click",(function(e){i.getState()!==a.State.DISABLED&&(i.dispatchEvent(a.Event.CLICK),i.onClick&&i.onClick(e)),e.stopPropagation()})),(0,s.isTouchDevice)()?this.container.addEventListener("touchstart",s.touchStartToClick):(this.container.addEventListener("mouseover",(function(e){i.onMouseOver(e)})),this.container.addEventListener("mouseout",(function(e){i.onMouseOut(e)}))),this.addClass("adsk-button"),this.addClass(a.StateToClassMap[this._state])}a.Event={VISIBILITY_CHANGED:o.Control.Event.VISIBILITY_CHANGED,COLLAPSED_CHANGED:o.Control.Event.COLLAPSED_CHANGED,STATE_CHANGED:"Button.StateChanged",CLICK:"click"},a.State={ACTIVE:0,INACTIVE:1,DISABLED:2},a.StateToClassMap=(n=a.State,(r={})[n.ACTIVE]="active",r[n.INACTIVE]="inactive",r[n.DISABLED]="disabled",r),a.prototype=Object.create(o.Control.prototype),a.prototype.constructor=a,a.prototype.setState=function(e){if(e===this._state)return!1;this.removeClass(a.StateToClassMap[this._state]),this.addClass(a.StateToClassMap[e]),this._state=e;var t={type:a.Event.STATE_CHANGED,state:e};return this.dispatchEvent(t),!0},a.prototype.setIcon=function(e){this.iconClass&&this.icon.classList.remove(this.iconClass),this.iconClass=e,this.icon.classList.add(e)},a.prototype.getState=function(){return this._state},a.prototype.onClick=function(e){},a.prototype.onMouseOver=function(e){},a.prototype.onMouseOut=function(e){}},66277:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ComboButton:()=>s});var n=i(22767),r=i(41129),o=i(8600);function s(e,t){n.Button.call(this,e,t),this.arrowButton=new n.Button(e+"arrow"),this.arrowButton.addClass("adsk-button-arrow"),this.arrowButton.removeClass("adsk-button"),this.subMenu=new r.RadioButtonGroup(e+"SubMenu"),this.subMenu.addClass("toolbar-vertical-group"),this.subMenu.setVisible(!1),this.container.insertBefore(this.subMenu.container,this.container.firstChild),this.container.insertBefore(this.arrowButton.container,this.container.firstChild);var i=this;this.arrowButton.onClick=function(){i.subMenu.setVisible(!i.subMenu.isVisible())},this.toggleFlyoutVisible=function(){i.subMenu.setVisible(!i.subMenu.isVisible())},this.onClick=function(){i.subMenu.setVisible(!i.subMenu.isVisible())},this.subMenuActiveButtonChangedHandler=function(e){e.isActiveButton?(i.setIcon(e.target.getActiveButton().iconClass),i.setToolTip(e.target.getActiveButton().getToolTip()),i.setState(n.Button.State.ACTIVE),i.onClick=e.button.onClick):i.setState(n.Button.State.INACTIVE)},this.subMenu.addEventListener(r.RadioButtonGroup.Event.ACTIVE_BUTTON_CHANGED,this.subMenuActiveButtonChangedHandler);var s=(0,o.stringToDOM)('
');this.subMenu.container.insertBefore(s,this.subMenu.container.firstChild),s.addEventListener("click",(function(e){i.subMenu.setVisible(!1),e.stopPropagation()}))}s.prototype=Object.create(n.Button.prototype),s.prototype.constructor=s,s.prototype.addControl=function(e){this.subMenu.addControl(e),e.addEventListener(n.Button.Event.CLICK,this.toggleFlyoutVisible)},s.prototype.removeControl=function(e){this.subMenu.removeControl(e),e.removeEventListener(n.Button.Event.CLICK,this.toggleFlyoutVisible)},s.prototype.setState=function(e){if(e===n.Button.State.INACTIVE){var t=this.subMenu.getActiveButton();t&&t.setState(n.Button.State.INACTIVE)}n.Button.prototype.setState.call(this,e)},s.prototype.saveAsDefault=function(){this.defaultState={},this._toolTipElement&&this._toolTipElement.getAttribute("tooltipText")&&(this.defaultState.tooltip=this._toolTipElement.getAttribute("tooltipText")),this.defaultState.icon=this.iconClass,this.defaultState.onClick=this.onClick},s.prototype.restoreDefault=function(){this.defaultState&&(this.defaultState.tooltip&&this.setToolTip(this.defaultState.tooltip),this.defaultState.icon&&this.setIcon(this.defaultState.icon),this.onClick=this.defaultState.onClick,this.setState(n.Button.State.INACTIVE))}},60618:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Control:()=>r});var n=i(25004);function r(e,t){this._id=e,this._isCollapsible=!t||t.collapsible,this._toolTipElement=null,this._listeners={},this.container=this.getDocument().createElement("div"),this.container.id=e,this.addClass("adsk-control")}i(26206).GlobalManagerMixin.call(r.prototype),r.Event={VISIBILITY_CHANGED:"Control.VisibilityChanged",COLLAPSED_CHANGED:"Control.CollapsedChanged"},n.EventDispatcher.prototype.apply(r.prototype),r.prototype.constructor=r,r.prototype.container=null,r.prototype.getId=function(){return this._id},r.prototype.setVisible=function(e){if(!this.container.classList.contains("adsk-hidden")===e)return!1;e?this.container.classList.remove("adsk-hidden"):this.container.classList.add("adsk-hidden");var t={type:r.Event.VISIBILITY_CHANGED,target:this,controlId:this._id,isVisible:e};return this.dispatchEvent(t),!0},r.prototype.isVisible=function(){return!this.container.classList.contains("adsk-hidden")},r.prototype.setToolTip=function(e){return(!this._toolTipElement||this._toolTipElement.getAttribute("tooltipText")!==e)&&(this._toolTipElement||(this._toolTipElement=this.getDocument().createElement("div"),this._toolTipElement.id=this._id+"-tooltip",this._toolTipElement.classList.add("adsk-control-tooltip"),this.container.appendChild(this._toolTipElement)),this._toolTipElement.setAttribute("data-i18n",e),this._toolTipElement.setAttribute("tooltipText",e),this._toolTipElement.textContent=Autodesk.Viewing.i18n.translate(e,{defaultValue:e}),!0)},r.prototype.getToolTip=function(){return this._toolTipElement&&this._toolTipElement.getAttribute("tooltipText")},r.prototype.setCollapsed=function(e){if(!this._isCollapsible||this.isCollapsed()===e)return!1;e?this.container.classList.add("collapsed"):this.container.classList.remove("collapsed");var t={type:r.Event.COLLAPSED_CHANGED,isCollapsed:e};return this.dispatchEvent(t),!0},r.prototype.isCollapsed=function(){return!!this.container.classList.contains("collapsed")},r.prototype.isCollapsible=function(){return this._isCollapsible},r.prototype.addClass=function(e){this.container.classList.add(e)},r.prototype.removeClass=function(e){this.container.classList.remove(e)},r.prototype.getPosition=function(){var e=this.container.getBoundingClientRect();return{top:e.top,left:e.left}},r.prototype.getDimensions=function(){var e=this.container.getBoundingClientRect();return{width:e.width,height:e.height}},r.prototype.setDisplay=function(e){this.container.style.display=e},r.prototype.removeFromParent=function(){return!!this.parent&&this.parent.removeControl(this)}},37463:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ControlGroup:()=>r});var n=i(60618);function r(e,t){n.Control.call(this,e,t);var i=this;this._controls=[],this.addClass("adsk-control-group"),this.handleChildSizeChanged=function(e){var t={type:r.Event.SIZE_CHANGED,childEvent:e};i.dispatchEvent(t)}}r.Event={VISIBILITY_CHANGED:n.Control.Event.VISIBILITY_CHANGED,COLLAPSED_CHANGED:n.Control.Event.COLLAPSED_CHANGED,SIZE_CHANGED:"ControlGroup.SizeChanged",CONTROL_ADDED:"ControlGroup.ControlAdded",CONTROL_REMOVED:"ControlGroup.ControlRemoved"},r.prototype=Object.create(n.Control.prototype),r.prototype.constructor=r,r.prototype.addControl=function(e,t){e.setGlobalManager(this.globalManager);var i=t&&void 0!==t.index?t.index:this._controls.length;if(null!==this.getControl(e.getId()))return!1;var o={type:r.Event.CONTROL_ADDED,control:e,index:i};return i=this._controls.length?null:this._controls[e].getId()},r.prototype.getNumberOfControls=function(){return this._controls.length},r.prototype.setCollapsed=function(e){if(!this._isCollapsible)return!1;var t=!1;return this._controls.forEach((function(i){i.isCollapsible()&&i.setCollapsed(e)&&(t=!0)})),t&&(e?this.container.classList.add("collapsed"):this.container.classList.remove("collapsed"),this.dispatchEvent({type:r.Event.COLLAPSED_CHANGED,isCollapsed:e})),t}},25360:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Filterbox:()=>o});var n=i(60618),r=i(38842);function o(e,t){this._id=e,this._listeners={},this._options=t||{},this._filterFunction=this._options.filterFunction||function(){};var i=this.getDocument();this.container=i.createElement("div"),this.container.id=e,this.addClass("adsk-control"),this.addClass("adsk-filterbox"),this.addClass("empty");var n=i.createElement("input");n.classList.add("filter-box"),n.classList.add("docking-panel-delimiter-shadow"),n.type="search",n.placeholder=r.A.t("Enter filter term"),n.setAttribute("data-i18n","Enter filter term"),n.incremental="incremental",n.autosave=this.container.id+"filter",this.container.appendChild(n),this.filterbox=n;var o=this,s=function(e){0===(e=e.trim()).length?o.container.classList.add("empty"):o.container.classList.remove("empty"),o._filterFunction&&o._filterFunction(e)},a=i.createElement("div");a.className="filter-box-icon",this.container.insertBefore(a,n.nextSibling);var l=i.createElement("div");l.className="filter-box-close",l.addEventListener("click",(function(){o.filterbox.value="",o.addClass("empty")})),this.container.appendChild(l),n.addEventListener("keydown",(function(e){var t=o.getWindow();13===(e=e||t.event).keyCode&&o.filterbox.blur()})),n.addEventListener("input",(function(){s(this.value)})),n.addEventListener("change",(function(){s(this.value)})),n.addEventListener("focus",(function(){a.classList.add("focused")})),n.addEventListener("blur",(function(){a.classList.remove("focused")}))}o.prototype=Object.create(n.Control.prototype),o.prototype.constructor=o},41129:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RadioButtonGroup:()=>s});var n=i(37463),r=i(22767),o=i(60618);function s(e,t){n.ControlGroup.call(this,e,t);var i=this;this._activeButton=null,this._handleButtonStateChange=function(e){var t=r.Button.State;e.state===t.ACTIVE?(i._activeButton=e.target,i.dispatchEvent({type:s.Event.ACTIVE_BUTTON_CHANGED,button:e.target,isActiveButton:!0}),i._controls.forEach((function(i){i!==e.target&&i.getState()!==t.DISABLED&&i.setState(t.INACTIVE)}))):e.target===i._activeButton&&(i._activeButton=null,i.dispatchEvent({type:s.Event.ACTIVE_BUTTON_CHANGED,button:e.target,isActiveButton:!1}))}}s.Event={ACTIVE_BUTTON_CHANGED:"RadioButtonGroup.ActiveButtonChanged",VISIBILITY_CHANGED:o.Control.Event.VISIBILITY_CHANGED,COLLAPSED_CHANGED:o.Control.Event.COLLAPSED_CHANGED,CONTROL_ADDED:n.ControlGroup.Event.CONTROL_ADDED,CONTROL_REMOVED:n.ControlGroup.Event.CONTROL_REMOVED,SIZE_CHANGED:n.ControlGroup.Event.SIZE_CHANGED},s.prototype=Object.create(n.ControlGroup.prototype),s.prototype.constructor=s,s.prototype.addControl=function(e,t){return e instanceof r.Button&&(!!n.ControlGroup.prototype.addControl.call(this,e,t)&&(e.addEventListener(r.Button.Event.STATE_CHANGED,this._handleButtonStateChange),!0))},s.prototype.removeControl=function(e){var t="string"==typeof e?this.getControl(e):e;return!(null===t||!n.ControlGroup.prototype.removeControl.call(this,t))&&(t.removeEventListener(r.Button.Event.STATE_CHANGED,this._handleButtonStateChange),!0)},s.prototype.getActiveButton=function(){return this._activeButton}},11674:(e,t,i)=>{"use strict";i.d(t,{j:()=>n});let n="search-selected"},77995:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Searchbox:()=>S});var n=i(60618),r=i(11674),o=i(83081),s=i(25004),a=i(86022),l=i(26206),c=50,h=150,u=100;function d(e,t,i){let n=i;this.excludeRoot=t,(n instanceof Autodesk.Viewing.GuiViewer3D||n instanceof Autodesk.Viewing.Viewer3D)&&(o.logger.warn("Deprecated use of Viewer as parameter. Provide container instead"),n=i.container),this.results=[],this.resultCount=0,this.selectedIndex=-1;let r=this.getDocument();this.container=r.createElement("div"),this.container.classList.add("docking-panel"),this.container.classList.add("adsk-search-results"),this.container.results=r.createElement("div"),this.container.results.classList.add("docking-panel-scroll"),this.container.results.classList.add("docking-panel-container-solid-color-b"),this.container.results.addEventListener("scroll",p.bind(this)),this.container.appendChild(this.container.results),e.insertBefore(this.container,e.firstChild),this.scrollingContainer=r.createElement("div"),this.scrollingContainer.classList.add("adsk-search-results-scrolling-panel"),this.scrollingContainer.addEventListener("click",f.bind(this)),this.container.results.appendChild(this.scrollingContainer),this.footer=new a.ResizeFooter(this.container,function(){var e=this.container.getBoundingClientRect(),t=n.getBoundingClientRect();t.right=u&&(this.scrollY=e,m(this))}function m(e,t){e.dirty&&!t||(t?g(e):(e.dirty=!0,e.nextFrameId=requestAnimationFrame((function(){g(e)}))))}function g(e){e.dirty=!1,function(e){for(var t=e.elementsUsed,i=e.elementsPool,n=0;nr+n+u){d=!1;break}if(e.elementsUsed===e.elementsPool.length){d=!1;break}var f=o.id(),p=o.delegate(),m=i+c,g=e.elementsPool[e.elementsUsed++];v(f,p,g,e,l===e.selectedIndex),e.scrollingContainer.appendChild(g),i=m,l++}var y=e.resultCount*c;e.scrollingContainer.style.height=y+"px"}(e)):e.setDisplayNoResults(!0)}function v(e,t,i,n,r){i.classList.add("search-result"),r?i.classList.add("selected"):i.classList.remove("selected"),i.setAttribute("lmv-nodeId",e),i.setAttribute("lmv-modelId",t.model.id),i.style.height=c+"px";var o=t.instanceTree.getNodeName(e),s=n.searchString,a=o.toLowerCase().indexOf(s.toLowerCase()),l=o.substr(0,a),h=o.substr(a,s.length),u=o.substr(a+s.length);i.domPrefix.innerText=l,i.domMatch.innerText=h,i.domSufix.innerText=u;var d=function(e,t,i){var n=[],r=t.getRootId(),o=i.isRootExcluded(),s=t.instanceTree,a=e,l=!1;for(;a&&!l&&(a!==r||(l=!0,!o));){var c=s.getNodeName(a);n.unshift(c),a=s.getNodeParentId(a)}return n}(e,t,n);i.domPath.innerText=d.join(" > ")}function y(e){var t=e.createElement("div"),i=e.createElement("div"),n=e.createElement("span"),r=e.createElement("span"),o=e.createElement("span"),s=e.createElement("span");return i.classList.add("search-result-container"),r.classList.add("search-match"),s.classList.add("search-path"),i.appendChild(n),i.appendChild(r),i.appendChild(o),i.appendChild(s),t.appendChild(i),t.domPrefix=n,t.domMatch=r,t.domSufix=o,t.domPath=s,t.domContainer=i,t}function b(e){e.setAttribute("lmv-nodeId",""),e.setAttribute("lmv-modelId",""),e.domPrefix.innerText="",e.domMatch.innerText="",e.domSufix.innerText="",e.domPath.innerText="",e.style.height="0"}function x(e,t){e.scrollTop+e.clientHeight<(t+1)*c&&(e.scrollTop+=(t+1)*c-(e.scrollTop+e.clientHeight)),e.scrollTop/c>t&&(e.scrollTop=t*c)}d.prototype.constructor=d,s.EventDispatcher.prototype.apply(d.prototype),l.GlobalManagerMixin.call(d.prototype),d.prototype.setPosition=function(e,t){this.container.style.left=e+"px",this.container.style.top=t+"px"},d.prototype.setMinWidth=function(e){this.container.style.width=e+"px"},d.prototype.setMaxWidth=function(e){this.container.style.maxHeight=e+"px"},d.prototype.setVisible=function(e){this.container.style.display=e?"":"none"},d.prototype.setResults=function(e,t){this.searchString=e,this.results=t,this.resultCount=function(e){for(var t=0,i=0;i1)&&(!(this.modelCount>1)&&this.excludeRoot)},d.prototype.uninitialize=function(){this.setVisible(!1),this.container=null,this.container.parentNode&&this.container.parentNode.removeChild(this.container),cancelAnimationFrame(this.nextFrameId),this.clearListeners()},d.prototype.setDisplayNoResults=function(e){this.divNoResults.style.display=e?"":"none"},d.prototype.selectNext=function(){0!==this.resultCount&&(this.selectedIndex=Math.min(this.resultCount-1,this.selectedIndex+1),x(this.container.results,this.selectedIndex),m(this))},d.prototype.selectPrevious=function(){0!==this.resultCount&&(this.selectedIndex=Math.max(0,this.selectedIndex-1),x(this.container.results,this.selectedIndex),m(this))},d.prototype._getNodeAndModelIds=function(e){for(;!e.hasAttribute("lmv-nodeId");)if(!(e=e.parentNode)||e===this.scrollingContainer)return;return{nodeId:parseInt(e.getAttribute("lmv-nodeId")),modelId:parseInt(e.getAttribute("lmv-modelId"))}};var _=i(38842);const E=i(38221);function S(e,t,i){this._id=e,this._listeners={},this._options=i||{},this._searchFunction=this._options.searchFunction||function(){};var n=this.getDocument();this.container=n.createElement("div"),this.container.id=e,this.addClass("adsk-control"),this.addClass("adsk-searchbox"),this.addClass("empty");var s=n.createElement("input");s.classList.add("search-box"),s.classList.add("docking-panel-delimiter-shadow"),s.type="search",s.results=[],s.placeholder=_.A.t("Search"),s.setAttribute("data-i18n","Search"),s.incremental="incremental",s.autosave=this.container.id+"search_autosave",this.container.insertBefore(s,this.scrollContainer),this.searchbox=s;var a=function(){u.searchbox.value="",u.addClass("empty")},l=function(){u.searchbox.classList.remove("searching"),u.searchResults.setVisible(!1)},c=n.createElement("div");c.className="search-box-icon",this.container.insertBefore(c,s.nextSibling);var h=n.createElement("div");h.className="search-box-close",h.addEventListener("click",(function(){a(),l()})),this.container.appendChild(h),this.searchResults=new d(this.container,i.excludeRoot,t),this.searchResults.addEventListener(r.j,(function(e){a(),l(),u.fireEvent(e)}));var u=this,f=!0;s.addEventListener("keydown",(function(e){var t=u.getWindow();if(38===(e=e||t.event).keyCode&&(u.searchResults.selectPrevious(),e.preventDefault()),40===e.keyCode&&(u.searchResults.selectNext(),e.preventDefault()),13===e.keyCode){var i=u.searchResults.getSelection();if(!i)return!1;a(),l(),u.fireEvent({type:S.Events.ON_SEARCH_SELECTED,id:i.nodeId,modelId:i.modelId}),e.preventDefault()}}));var p=E((()=>{if(0===s.value.length)return u.container.classList.add("empty"),void l();u.container.classList.remove("empty"),s.value.length<3||function(){var e=s.value.trim();if(0!==e.length){f&&(o.logger.track({category:"search_node",name:"model_browser_tool"}),f=!1),s.classList.add("searching");var t=u._searchFunction(e);u.searchResults.setResults(e,t),u.searchResults.setVisible(!0)}else l()}()}),800);s.addEventListener("input",(function(){p()})),s.addEventListener("change",(function(e){var t=u.getDocument();e.target===t.activeElement&&p()})),s.addEventListener("focus",(function(){c.classList.add("focused")})),s.addEventListener("blur",(function(){c.classList.remove("focused")}))}S.prototype=Object.create(n.Control.prototype),S.prototype.constructor=S,S.Events={ON_SEARCH_SELECTED:r.j}},857:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SplitViewLayout:()=>l});const n={down:{pointer:"pointerdown",mouse:"mousedown",touch:"touchstart"},up:{pointer:"pointerup",mouse:"mouseup",touch:"touchend"},move:{pointer:"pointermove",mouse:"mousemove",touch:"touchmove"}};function r(e,t,i){const r=(arguments.length>3&&void 0!==arguments[3]&&arguments[3]?"remove":"add")+"EventListener",o=function(e){const t=[];return Autodesk.Viewing.isMobileDevice()||t.push(n[e].mouse),Autodesk.Viewing.isTouchDevice()&&t.push(n[e].touch),t}(t);for(const t of o)e[r](t,i)}class o{constructor(e,t){this.container=e,this.isDragging=!1,this.resizeHandlerElement=null,this.onMoveCB=t,this.panelSizeThreshold=20,this.margin=16,this.initResizeHandlerElement()}onDown(e){this.isDragging=!0,e.preventDefault()}onUp(e){this.isDragging=!1}onMove(e){if(this.isDragging){"touchmove"===e.type&&(e.pageX=e.touches[0].pageX,e.pageY=e.touches[0].pageY);const t=this.container.getBoundingClientRect(),i=this.getTargetWidthPercentage(e,t);this.panelSizeThreshold{"use strict";i.r(t),i.d(t,{ToolBar:()=>o});var n=i(37463),r=i(60618);function o(e,t){n.ControlGroup.call(this,e,t),this.removeClass("adsk-control-group"),this.addClass("adsk-toolbar"),t&&t.alignVertically&&this.addClass("adsk-toolbar-vertical")}o.Event={VISIBILITY_CHANGED:r.Control.Event.VISIBILITY_CHANGED,COLLAPSED_CHANGED:r.Control.Event.COLLAPSED_CHANGED,CONTROL_ADDED:n.ControlGroup.Event.CONTROL_ADDED,CONTROL_REMOVED:n.ControlGroup.Event.CONTROL_REMOVED,SIZE_CHANGED:n.ControlGroup.Event.SIZE_CHANGED},o.prototype=Object.create(n.ControlGroup.prototype),o.prototype.constructor=o},10902:(e,t,i)=>{"use strict";i.r(t)},72980:(e,t,i)=>{function n(t,i){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e.exports[n]=t[n],i&&(e.exports[i][n]=t[n]))}i(74423),i(69479),i(28845),i(17656),i(55105),i(7467),i(10586),i(71517),i(93777),i(14190),i(12359),i(86097),i(39172),i(57019),i(17273),i(81723),i(27415),i(19929),i(37583),i(55122),i(16385),i(20230),i(57268),i(79733),i(58179),i(30456),i(74017),i(79310),i(83062),i(96369),i(15637),i(2848),i(24842),i(24746),i(33454),i(6660),i(15941),i(82101),i(2917),i(47628),i(65186),i(42978),i(72527),i(79852),i(42376),i(40617),i(73067),i(66820),i(8288),i(25509),i(65223),i(60321),i(41927),i(11632),i(64377),i(49522),i(66771),i(12516),i(68931),i(52514),i(35694),i(52774),i(23283),i(49536),i(21926),i(94483),i(16215),i(78898),i(74176),i(43275),i(42793),i(77208),i(67348),i(26957),i(79732),i(83742),i(56422),i(82451),i(46270),i(59848),e.exports.Autodesk=i(54679).Autodesk;var r=Object.assign||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])};e.exports.THREE=i(72091),e.exports.av={},e.exports.avp={},e.exports.avu={},e.exports.ave={},n({Hammer:i(41944)},"av"),n(i(55280),"av"),n(i(55280),"avp"),n(i(8600),"avp"),n(i(8600),"av"),n(i(75840),"avp"),n(i(85403),"avp"),n(i(11653),"avp"),n(i(11653),"av"),n(i(20268),"avp");const o=i(38842).A;o.translate=o.t.bind(o),o.localize=()=>{},n({i18n:o},"av"),n(i(16271),"avp"),n(i(77427),"avp"),n(i(83081),"avp"),n(i(57872),"avp"),n(i(14859),"avp"),n(i(65802),"avp"),n(i(61453),"avp"),n(i(94998),"avp"),n(i(25618),"avp"),n(i(12360),"avp"),n(i(30130),"avp"),n(i(26217),"avp"),n(i(68449),"avp"),n(i(31320),"avp"),n(i(48717),"avp"),n(i(34423),"avp"),n(i(97011),"avp"),n(i(89024),"avp"),n(i(2179),"avp"),n(i(46890),"avp"),n(i(60012),"avp"),n(i(22267),"avp"),n(i(36771),"avp"),n(i(68630),"avp"),n(i(62612),"avp"),n(i(88190),"avp"),n(i(53870),"avp"),n(i(44745),"avp"),n(i(5732),"avp"),n(i(41007),"avp"),n(i(98233),"avp"),n(i(15371),"avp"),n(i(68747),"avp"),n(i(24528),"avp"),n(i(19129),"avp"),n(i(96118),"avp"),n(i(37365),"avp"),n(i(21706),"avp"),n(i(69511),"avp"),n(i(81760),"avp"),n(i(38749),"avp"),n(i(65672),"avp"),n(i(36411),"avp"),n(i(86639),"avp"),n(i(8879),"avp"),n(i(42525),"avp"),n(i(72474),"avp"),n(i(34845),"avp"),n(i(70101),"avp"),n(i(77201),"avp"),n(i(22040),"avp"),n(i(47263),"avp"),n(i(71082),"avp"),n(i(9478),"avp"),n(i(4897),"avp"),n(i(94549),"avp"),n(i(54561),"avp"),n(i(63430),"av"),n(i(41428),"avp"),n(i(65435),"avp"),n(i(75468),"avp"),n(i(12153),"avp"),n(i(65782),"avp"),n(i(76731),"avp"),n(i(47712),"avp"),n(i(90824),"avp"),n(i(81422),"avp"),n(i(23936),"avp"),n(i(32431),"avp"),n(i(1433),"avp"),n(i(30514),"avp"),n(i(58536),"avp"),n(i(93509),"avp"),n(i(46014),"avp"),n(i(57480),"av"),n(i(8412),"av"),n(i(84045),"avp"),n(i(9341),"avp"),n(i(22201),"avp"),n(i(54393),"av"),n(i(99211),"av"),n(i(25004),"av"),n(i(82712),"av"),n(i(55270),"av"),n(i(93228),"av"),n(i(19556),"av"),n(i(24840),"av"),n(i(92037),"av"),n(i(97005),"avp"),n(i(73674),"avp"),n(i(94661),"avp"),n(i(63764),"av"),n(i(26940),"av"),n(i(61183),"avp"),n(i(35922),"avp"),n(i(11743),"av"),n(i(26477),"av"),n(i(91735),"av"),n(i(55066),"avp"),n(i(21174),"avp"),n(i(67259),"av"),n(i(18817),"av"),n(i(82976),"av"),n(i(56197),"av"),n(i(13002),"av"),n(i(65251),"av"),n(i(53625),"av"),n(i(6684),"av"),n(i(33398),"av");const s=i(19948);n({FeatureFlags:s.FeatureFlags,PublicFeatureFlags:s.PublicFeatureFlags},"av"),n({InternalFeatureFlags:s.InternalFeatureFlags},"avp"),n(i(27623),"avp"),e.exports.av.ModelUnits=i(27623).ModelUnits,n(i(54386),"avp"),n(i(80152),"av"),n(i(13202),"avp");var a=e.exports.av.MeasureCommon={};r(a,i(97010)),a.MeasurementTypes=i(65918).S,a.MeasurementTypesToAnalytics=i(65918).z,a.SnapType=i(17070).h,a.Events=i(23482).G,a.Measurement=i(63795).D,a.SnapResult=i(12182).e,n(i(8811),"av"),n(i(26206),"av"),n(i(45775),"avp"),n(i(4369),"avp"),n(i(78567),"avp"),n(i(17016),"av"),n(i(63841),"av"),n(i(27579),"avp"),n(i(18310),"av"),n(i(13843),"avp"),n(i(49930),"av"),n(i(83464),"av"),n(i(75109),"av"),n(i(68793),"av"),n(i(40723),"av"),n(i(55855),"av"),n(i(74481),"av"),n(i(23261),"av"),n(i(4746),"av"),n(i(28833),"av"),n(i(60687),"av"),n(i(43719),"av"),n(i(2312),"avp"),n(i(5968),"avp"),n(i(47261),"avp"),n(i(14564),"avp"),n(i(13e3),"avp"),n(i(90255),"avp"),n(i(91496),"avp"),n(i(19356),"avp"),n(i(87816),"avp"),n(i(7756),"avp"),n(i(28441),"av"),n(i(32937),"av"),n(i(82076),"avp"),n(i(16613),"avp"),i(10902),n(i(98087),"avu"),n(i(55266),"avu"),n(i(87241),"avu"),n(i(76948),"avu"),n(i(86022),"avp"),n(i(82024),"avu"),n(i(96551),"avu"),n(i(26452),"avp"),n(i(23619),"avp"),n(i(1581),"avp"),n(i(91904),"avp"),n(i(99587),"avu"),n(i(14813),"avu"),n(i(16969),"avu"),n(i(42440),"avp"),n(i(81215),"ave"),n(i(60618),"avu"),n(i(37463),"avu"),n(i(22767),"avu"),n(i(41129),"avu"),n(i(66277),"avu"),n(i(4355),"avu"),n(i(88946),"avp"),n(i(94589),"avu"),n(i(25360),"avu"),n(i(77995),"avu"),n(i(47898),"avp"),n(i(72738),"ave"),n(i(87471),"ave"),n(i(11337),"ave"),n(i(23611),"ave"),n(i(36523),"av"),n(i(66316),"av"),n(i(857),"avu"),n(i(6614),"av"),n(i(82800),"av"),n(i(14561),"av"),n(i(88728),"av"),n(i(95062),"avp"),n(i(97705),"av"),i(63526).E(e.exports)},88728:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CrossViewerInteractionCommon:()=>r});var n=i(19556);const r={onSelectionChanged:{eventName:n.AGGREGATE_SELECTION_CHANGED_EVENT,cb:(e,t,i)=>{const n=e.getAggregateSelection();if(t.impl.model)if(n.length>0)for(let e=0;e{"use strict";i.r(t),i.d(t,{createLeechViewer:()=>a});var n=i(88190);function r(e){Autodesk.Viewing.Private.RenderContext.call(this),this.originalInit=this.init.bind(this),this.init=function(t,i,n){var r;let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};this.canvas=e,this.ctx2D=this.canvas.getContext("2d");const s=!0!==(null===(r=o.webglInitParams)||void 0===r?void 0:r.alpha),a=Object.assign({},o,{offscreen:!0,removeAlphaInOutput:s});this.originalInit(t,i,n,a),this.glrenderer=t;const l=this.glrenderer.getPixelRatio();this.setSize(i/l,n/l)},this.renderToCanvas=function(){this.ctx2D&&(this.getOffscreenTarget()||0!=this.widthWithPixelRatio&&0!=this.heightWithPixelRatio&&(this.ctx2D.clearRect(0,0,this.widthWithPixelRatio,this.heightWithPixelRatio),this.ctx2D.drawImage(this.glrenderer.domElement,0,this.glrenderer.domElement.height-this.heightWithPixelRatio,this.widthWithPixelRatio,this.heightWithPixelRatio,0,0,this.widthWithPixelRatio,this.heightWithPixelRatio)))},this.originalSetSize=this.setSize.bind(this),this.setSize=function(e,t,i,n){if(!n){const i=this.glrenderer.getPixelRatio();this.width=e,this.height=t,this.widthWithPixelRatio=e*i,this.heightWithPixelRatio=t*i,this.canvas.width=this.widthWithPixelRatio,this.canvas.height=this.heightWithPixelRatio,this.canvas.style.width=`${this.width}px`,this.canvas.style.height=`${this.height}px`}this.prepareViewport(i,n),this.restoreViewport()},this.prepareViewport=function(e,t){this.glrenderer.pushViewport();const i=this.glrenderer.getPixelRatio(),n=this.glrenderer.domElement.width/i,r=this.glrenderer.domElement.height/i;(n1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;this.sharedResources=i,this.resizeObserver=null,n.call(this,e,t),Autodesk.Viewing.Private.IsUsingWebGPU()||(this.renderContext=new r(this.canvas),this.sharedResources.mrtFlags?this.renderContext.mrtFlags=this.sharedResources.mrtFlags:this.sharedResources.mrtFlags=this.renderContext.mrtFlags)}a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.prototype.initialize=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t={glrenderer:this.sharedResources.glrenderer,materialManager:this.sharedResources.materialManager,renderer:this.renderContext},i=Object.assign({},e,t),r=n.prototype.initialize.call(this,i);return this.overrideAPIs(),this.sharedResources.geomCache&&this.sharedResources.geomCache.initialized&&this.impl.setGeomCache(this.sharedResources.geomCache),this.resizeObserver=new ResizeObserver((e=>{const t=e[0].contentRect,i=Math.floor(t.width),n=Math.floor(t.height);i&&n&&(this.impl.resize(i,n,!0),this.dispatchEvent({type:Autodesk.Viewing.VIEWER_RESIZE_EVENT,width:i,height:n}),this.impl.tick(performance.now()))})),this.resizeObserver.observe(this.container),r},a.prototype.uninitialize=function(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.originalLoadDocumentNode=null,this.loadDocumentNode=n.prototype.loadDocumentNode,n.prototype.uninitialize.call(this)},a.prototype.overrideAPIs=function(){var e=this;if(!this.impl.isWebGPU()){const e=this.impl.tick.bind(this.impl);this.impl.tick=()=>{if(!this.impl||!this.impl.glrenderer())return;this.impl.renderer().prepareViewport(),this.restoreViewerState();const t=performance.now();e(t),this.impl.renderer().restoreViewport()},this.addEventListener(Autodesk.Viewing.RENDER_PRESENTED_EVENT,(()=>{this.renderContext.renderToCanvas()}),{priority:-1e3})}const t=this.impl.setLightPreset.bind(this.impl);this.impl.setLightPreset=(e,i,n)=>{if(this.impl.is2d){this.impl.initLights();const t=Autodesk.Viewing.Private.LightPresets[e].bgColorGradient;this.setBackgroundColor(...t),this.impl.setCurrentLightPreset(e);const i=this.impl.loadCubeMapFromColors(this.impl.clearColorTop,this.impl.clearColorBottom);this.impl.renderer().setCubeMap(i)}else t(e,i,n)};const i=this.toolController.__invokeStack.bind(this.toolController);this.toolController.__invokeStack=function(){return e.restoreViewerState(),i(...arguments)};const n=this.impl.unloadModel.bind(this.impl);this.impl.unloadModel=(e,t)=>{const i=e.leechViewerKey;let r=!1;const o=this.sharedResources.loadedModels[i];return o&&(o.usedByViewersCounter--,r=t||o.forceKeepResources||o.usedByViewersCounter>0,r||delete this.sharedResources.loadedModels[i]),n(e,t=t||r)},this.originalLoadDocumentNode=this.loadDocumentNode.bind(this),this.loadDocumentNode=function(t,i){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new Promise(((r,o)=>{const s=function(e,t){let i=e.getModelKey();return i+=".ref:"+!!t.applyRefPoint,i+=".g:"+(t.globalOffset?[t.globalOffset.x,t.globalOffset.y,t.globalOffset.z]:[0,0,0]).toString(),t.placementTransform&&(i+=".p:"+t.placementTransform.toArray().toString()),t.customHash&&(i+=".h:"+t.customHash),i}(i,n),a=e.sharedResources.loadedModels[s];if(a){const t=e.onModelLoaded(a.model,n);r(t)}else e.originalLoadDocumentNode(t,i,n).then((t=>{t.leechViewerKey=s,e.sharedResources.loadedModels[s]={model:t,usedByViewersCounter:1,loadingViewer:e},r(t)})).catch(o)}))};const r=this.impl.geomCache.bind(this.impl);this.impl.geomCache=()=>(this.sharedResources.geomCache&&this.sharedResources.geomCache.initialized||(this.sharedResources.geomCache=r()),this.sharedResources.geomCache)},a.prototype.setViewerProfile=function(e,t){if(t.loadAsHidden)return;t.isAEC=e.isAEC();const i=this.chooseProfile(t);delete i.settings.lineRendering,delete i.settings.pointRendering,this.setProfile(i)},a.prototype.setViewerLight=function(e,t){if(!t.loadAsHidden)if(this.impl.is2d){this.impl.setLightPreset(o.DefaultLightPreset2d);const e=this.impl.clearColorTop.clone().multiplyScalar(255),i=this.impl.clearColorBottom.clone().multiplyScalar(255);t.isAEC?this.impl.setLightPresetForAec():this.impl.setLightPreset(o.DefaultLightPreset),this.impl.toggleEnvMapBackground(!1),this.setBackgroundColor(e.x,e.y,e.z,i.x,i.y,i.z)}else this.impl.toggleEnvMapBackground(this.profile.settings.envMapBackground)},a.prototype.cleanViewerBeforeLoadModel=function(e){if(!e.keepCurrentModels&&this.impl.hasModels()){let e=this.config;this.tearDown(),this.setUp(e)}!this.impl.hasModels()&&this._loadingSpinner&&this._loadingSpinner.show()};const l=new THREE.Vector4(0,0,-1,-1e20);function c(e){const t=!e,i=e&&!e.isLoadDone(),n=e&&e.getPropertyDb()&&!e.getPropertyDb().isLoadDone();return!(t||i||n)}return a.prototype.syncCutPlanes=function(){const e=this.impl.getAllCutPlanes()||[l],t=this.impl.matman(),i=Math.max(e.length,t._cutplanes.length);t._cutplanes.length=0;let n=0;for(;n{e.doNotCut||(e.cutplanes=t._cutplanes)}),!1,!0)},a.prototype.restoreViewerState=function(){this.sharedResources.lastRenderedViewer!==this&&(this.syncCutPlanes(),this.impl.is2d&&this.impl.updateCameraMatrices(),this.sharedResources.lastRenderedViewer=this)},a.prototype.onModelLoaded=function(e,t){const i=e.leechViewerKey;this.sharedResources.loadedModels[i].forceKeepResources=!0,this.cleanViewerBeforeLoadModel(t);const n=this.cloneModelToViewer(e);return this.addModelToViewer(n,t),delete this.sharedResources.loadedModels[i].forceKeepResources,n},a.prototype.addModelToViewer=function(e,t){this.impl.modelQueue().addHiddenModel(e),t.loadAsHidden||(this.setViewerProfile(e,t),this.showModel(e),this.setViewerLight(e,t),!t.headlessViewer&&this.createUI&&this.createUI(e)),this._loadingSpinner&&this._loadingSpinner.hide()},a.prototype.cloneModelToViewer=function(e){const t=e.clone(),i=e.leechViewerKey;t.leechViewerKey=i;const n=this.sharedResources.loadedModels[i];n.usedByViewersCounter++;const r=n.loadingViewer,o=()=>this.impl.invalidate(!1,!0,!1);return r.addEventListener(Autodesk.Viewing.LOADER_REPAINT_REQUEST_EVENT,o,{priority:-1e3}),function(e,t){return new Promise((i=>{c(t)&&i();const n=()=>{c(t)&&(e.removeEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT,n),e.removeEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT,n),i())};e.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT,n),e.addEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT,n)}))}(r,t).then((()=>{setTimeout((()=>{t.setInnerAttributes(e.getInnerAttributes()),this.impl.onLoadComplete(t)}),1),r.removeEventListener(Autodesk.Viewing.LOADER_REPAINT_REQUEST_EVENT,o)})),t},s.set(n,a),new a(e,t,i,n)}},82800:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MultiViewerFactory:()=>o});var n=i(14561),r=i(62612);class o{constructor(){if(this.sharedResources={loadedModels:{}},!Autodesk.Viewing.Private.IsUsingWebGPU()){const e=Autodesk.Viewing.Private.createRenderer(void 0,{alpha:!0}),t=new r.MaterialManager(e);this.sharedResources={...this.sharedResources,glrenderer:e,materialManager:t}}}createViewer(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Autodesk.Viewing.Viewer3D;return(0,n.createLeechViewer)(e,t,this.sharedResources,i)}destroy(){this.sharedResources=null}}},83081:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LogLevels:()=>l,Logger:()=>c,logger:()=>f,setLogger:()=>p});var n=i(55280),r=i(8412),o=i(85403);const s=(0,n.getGlobal)(),a=s,l={DEBUG:5,LOG:4,INFO:3,WARNING:2,ERROR:1,NONE:0};function c(){this.runtimeStats={},this.level=-1,this.setLevel(l.ERROR),this._reportError=this._reportError.bind(this)}function h(e,t){let i;"string"==typeof t?i={message:t}:"object"==typeof t&&(i=t),o.analytics.track(e,i)}function u(){return"undefined"!=typeof window?encodeURI(a.location.href):""}function d(){}c.prototype.initialize=function(e){if(e.eventCallback&&(this.callback=e.eventCallback),this.sessionId=e.sessionId,!this.sessionId){var t=Date.now()+"";this.sessionId=parseFloat((1e4*Math.random()|0)+""+t.substring(4))}"number"==typeof e.logLevel&&this.setLevel(e.logLevel),this.environmentInfo={touch:(0,n.isTouchDevice)(),env:(0,r.getEnv)(),referer:u(),version:s.LMV_VIEWER_VERSION,build_type:s.LMV_BUILD_TYPE};var i={category:"viewer_start",touch:this.environmentInfo.touch,env:this.environmentInfo.env,referer:this.environmentInfo.referer,version:this.environmentInfo.version,build_type:this.environmentInfo.build_type};this.track(i);var o=this;this.interval=setInterval((function(){o.reportRuntimeStats()}),6e4)},c.prototype.shutdown=function(){clearInterval(this.interval),this.interval=void 0},c.prototype.track=function(e){this.updateRuntimeStats(e),!(0,r.isOffline)()&&this.sessionId&&(this.callback&&(e.timestamp=Date.now(),e.sessionId=this.sessionId,this.callback(e)),"error"===(null==e?void 0:e.category)&&h("viewer.error.tracked",e))},c.prototype.updateRuntimeStats=function(e){if(Object.prototype.hasOwnProperty.call(e,"aggregate"))switch(e.aggregate){case"count":this.runtimeStats[e.name]>0?this.runtimeStats[e.name]++:this.runtimeStats[e.name]=1,this.runtimeStats._nonempty=!0;break;case"last":this.runtimeStats[e.name]=e.value,this.runtimeStats._nonempty=!0;break;default:this.warn("unknown log aggregate type")}},c.prototype.reportRuntimeStats=function(){this.runtimeStats._nonempty&&(delete this.runtimeStats._nonempty,this.runtimeStats.category="misc_stats",this.track(this.runtimeStats),this.runtimeStats={})},c.prototype.setLevel=function(e){this.level!==e&&(this.level=e,this.debug=e>=l.DEBUG?console.log:d,this.log=e>=l.LOG?console.log:d,this.info=e>=l.INFO?console.info:d,this.warn=e>=l.WARNING?console.warn:d,this.error=e>=l.ERROR?this._reportError:d)},c.prototype._reportError=function(){console.error.apply(console,arguments);const e=Array.prototype.slice.call(arguments).join(" ");this.callback&&this.callback({category:"error",message:e}),h("viewer.error.logged",e)};let f=new c;function p(e){f=e}},13202:(e,t,i)=>{"use strict";i.r(t),i.d(t,{displayUnits:()=>s,displayUnitsEnum:()=>a,displayUnitsPrecision:()=>l,displayUnitsPrecisionEnum:()=>c,getUnitEnum:()=>u});var n=i(38842);const r=[{name:"File units",type:""},{name:"Millimeters",type:"mm",matches:["millimeter","millimeters"]},{name:"Centimeters",type:"cm",matches:["centimeter","centimeters"]},{name:"Meters",type:"m"},{name:"Inches",type:"in",matches:["inch","inches"]},{name:"Feet",type:"ft",matches:["foot"]},{name:"Feet and fractional inches",type:"ft-and-fractional-in"},{name:"Feet and decimal inches",type:"ft-and-decimal-in"},{name:"Decimal inches",type:"decimal-in"},{name:"Decimal feet",type:"decimal-ft"},{name:"Fractional inches",type:"fractional-in"},{name:"Meters and centimeters",type:"m-and-cm"},{name:"Points",type:"pt",matches:["point","points"]}],o=[{name:"File precision",value:""},{name:"0 (1)",value:0},{name:"0.1 (1/2)",value:1},{name:"0.01 (1/4)",value:2},{name:"0.001 (1/8)",value:3},{name:"0.0001 (1/16)",value:4},{name:"0.00001 (1/32)",value:5},{name:"0.000001 (1/64)",value:6}],s=r.map((e=>e.name)),a=r.map((e=>e.type)),l=o.map((e=>e.name)),c=o.map((e=>e.value));r.forEach((e=>{if(e.matches){const t=e.matches.map((e=>n.A.t(e)));e.matches=e.matches.concat(t)}}));const h=new Set(a);function u(e){if(e=e&&e.toLocaleLowerCase(),h.has(e))return e;for(let t in r){const i=r[t],n=i.matches;if(n&&n.indexOf(e)>-1)return i.type}return null}},97010:(e,t,i)=>{"use strict";i.r(t),i.d(t,{EPSILON:()=>a,angleVectorToVector:()=>w,calculateDistance:()=>h,computeResult:()=>g,correctPerpendicularPicks:()=>c,createCommonOverlay:()=>D,getCircularArcRadius:()=>y,getEndPointsInEdge:()=>A,getFaceArea:()=>v,getSnapResultPosition:()=>l,inverseProject:()=>x,isEqualVectors:()=>S,isParallel:()=>M,isPerpendicular:()=>C,nearestPointInPointToLine:()=>_,nearestPointInPointToSegment:()=>E,nearestVertexInVertexToEdge:()=>P,project:()=>b,safeToggle:()=>L});var n=i(72091),r=i(17070),o=i(65918),s=i(27623);const a=1e-4;function l(e,t){if(!e)return null;if(e.isPerpendicular)return e.intersectPoint;switch(e.geomType){case r.h.SNAP_VERTEX:case r.h.RASTER_PIXEL:case r.h.SNAP_MIDPOINT:case r.h.SNAP_CIRCLE_CENTER:return e.getGeometry();case r.h.SNAP_EDGE:var i=A(e.getGeometry()),n=i[0].clone(),o=i[1].clone();return _(e.intersectPoint,n,o);case r.h.SNAP_FACE:return T(e.intersectPoint,e.getGeometry().vertices[0],e.faceNormal);case r.h.SNAP_CIRCULARARC:if(t&&t.model&&t.model.is2d()){var s=e.snapPoint;return e.geomType=r.h.SNAP_VERTEX,e.geomVertex=s,s}return e.circularArcCenter;case r.h.SNAP_CURVEDEDGE:return P(e.intersectPoint,e.getGeometry());case r.h.SNAP_CURVEDFACE:return e.intersectPoint;case r.h.SNAP_INTERSECTION:return e.snapPoint;default:return null}}function c(e,t,i,o){if(!(e&&t&&e.getGeometry()&&t.getGeometry()))return!1;var s=l(e,i);if(o&&i)if(t.geomType===r.h.SNAP_EDGE){var a=new n.Vector3,c=new n.Vector3,h=t.getGeometry();if(a.subVectors(t.intersectPoint,s).normalize(),c.subVectors(h.vertices[0],h.vertices[1]).normalize(),C(a,c,.05))if(f=E(s,h.vertices[0],h.vertices[1],!0))return o.onMouseMove(b(f,i))&&o.setPerpendicular(!0),t.geomVertex=f,t.intersectPoint=f,!0}else if(t.geomType===r.h.SNAP_FACE){var u=new n.Vector3,d=t.getGeometry();if(u.subVectors(t.intersectPoint,s).normalize(),M(t.faceNormal,u,.05)){var f=T(s,d.vertices[0],t.faceNormal);return o.onMouseMove(b(f,i))&&o.setPerpendicular(!0),t.geomVertex=f,t.intersectPoint=f,!0}}}function h(e,t,i,n){var r;if(!(e&&t&&e.getGeometry()&&t.getGeometry()))return null;var s=l(e,n),c=l(t,n);if(!s||!c)return null;if(S(s,c,a))return null;let h;n.model.is2d()&&(s=s.clone(),c=c.clone(),e.viewportIndex2d=n.model.isPdf?e.viewportIndex2d:e.viewportIndex2d||e.id,n.model.pageToModel(s,c,e.viewportIndex2d));const u=e.viewportIndex2d,d=null==n||null===(r=n.model)||void 0===r||null===(r=r.getData())||void 0===r?void 0:r.viewports;var f;d&&void 0!==u&&(h=null===(f=d[u])||void 0===f?void 0:f.units);if(i){i=p(i);var g=s.distanceTo(c);return{distanceXYZ:m(g,i),distanceX:m(g=Math.abs(s.x-c.x),i),distanceY:m(g=Math.abs(s.y-c.y),i),distanceZ:0,type:o.S.MEASUREMENT_DISTANCE,units:h}}return{distanceXYZ:s.distanceTo(c),distanceX:Math.abs(s.x-c.x),distanceY:Math.abs(s.y-c.y),distanceZ:Math.abs(s.z-c.z),type:o.S.MEASUREMENT_DISTANCE,units:h}}function u(e,t){if(e.is3d())return 0;if(e.isPdf())return 0;var i=e.getMetadata("page_dimensions","page_width",null),r=e.getMetadata("page_dimensions","logical_width",null),o=e.getMetadata("page_dimensions","page_height",null),s=e.getMetadata("page_dimensions","logical_height",null);if(!(i&&r&&o&&s))return 0;var a=i/r,l=o/s,c=new n.Vector3(0,0,0),h=new n.Vector3(a,l,0);return e.pageToModel(c,h,t),c.distanceTo(h)}function d(e,t){var i=[];for(var r in e)if(e.hasOwnProperty(r)){var o=l(e[r],t);o&&i.push(o)}if(3!==i.length||function(e){for(var t=0;t1?o=r?null:i:(a.subVectors(i,t),a.multiplyScalar(s),o=a.add(t)),o}function S(e,t,i){return!(!e||!t)&&(Math.abs(e.x-t.x)<=i&&Math.abs(e.y-t.y)<=i&&Math.abs(e.z-t.z)<=i)}function A(e){var t=[];const i=e.vertices,n=i.length;for(var r=0;ro&&(i=s,n=o)}return i}function D(e,t){e.impl.overlayScenes[t]||e.impl.createOverlayScene(t)}function L(e,t,i){(e.classList.contains(t)&&!i||!e.classList.contains(t)&&i)&&e.classList.toggle(t,i)}},23482:(e,t,i)=>{"use strict";i.d(t,{G:()=>n});var n={MEASUREMENT_CHANGED_EVENT:"measurement-changed",MEASUREMENT_COMPLETED_EVENT:"measurement-completed",UNITS_CALIBRATION_STARTS_EVENT:"units_calibration_starts_event",FINISHED_CALIBRATION_FOR_DIMENSION_EVENT:"finished_calibration_for_dimension_event",CALIBRATION_REQUIRED_EVENT:"calibration-required",OPEN_CALIBRATION_PANEL_EVENT:"open-calibration-panel",CLOSE_CALIBRATION_PANEL_EVENT:"close-calibration-panel",CLEAR_CALIBRATION_SIZE_EVENT:"clear-calibration-size",FINISHED_CALIBRATION:"finished-calibration",DISPLAY_UNITS_CHANGED:"display-units-changed",PRECISION_CHANGED:"precision-changed",MEASUREMENT_MODE_ENTER:"measure-mode-enter",MEASUREMENT_MODE_LEAVE:"measure-mode-leave",DELETE_MEASUREMENT:"delete-measurement",SELECT_MEASUREMENT:"select-measurement",MEASURE_TOOL_ACTIVE:"measure-tool-active"}},63795:(e,t,i)=>{"use strict";i.d(t,{D:()=>s});var n=i(12182),r=i(65918),o=i(97010);function s(e,t,i){this.measurementType=e,this.id=t,this.picks=[],this.closedArea=!1,this.isRestored=!1,this.options=i,this.resetMeasureValues()}s.prototype.clone=function(){var e;const t=new s(this.measurementType,this.id,this.options);return t.closedArea=this.closedArea,t.isRestored=this.isRestored,t.picks=this.clonePicks(),t.angle=this.angle,t.distanceX=this.distanceX,t.distanceY=this.distanceY,t.distanceZ=this.distanceZ,t.distanceXYZ=this.distanceXYZ,t.arc=this.arc,t.location=null===(e=this.location)||void 0===e?void 0:e.clone(),t.result=Object.assign({},this.result),t},s.prototype.resetMeasureValues=function(){this.angle=0,this.distanceX=0,this.distanceY=0,this.distanceZ=0,this.distanceXYZ=0,this.arc=0,this.location=null,this.result=null},s.prototype.setPick=function(e,t){var i=this.picks[e]=t;return i.id=parseInt(e),i},s.prototype.getPick=function(e){var t=this.picks[e];return t||(t=this.setPick(e,new n.e)),t},s.prototype.clonePicks=function(e){var t=[];for(var i in this.picks)if(Object.prototype.hasOwnProperty.call(this.picks,i)){var n=this.picks[i];t.push(n.clone())}return t},s.prototype.countPicks=function(){return Object.keys(this.picks).length},s.prototype.getMaxNumberOfPicks=function(){switch(this.measurementType){case r.S.MEASUREMENT_DISTANCE:case r.S.MEASUREMENT_LOCATION:case r.S.MEASUREMENT_CALLOUT:case r.S.MEASUREMENT_ARC:return 2;case r.S.MEASUREMENT_ANGLE:return 3;case r.S.MEASUREMENT_AREA:return this.closedArea?this.countPicks():Number.MAX_VALUE-1}},s.prototype.hasPick=function(e){return this.picks[e]&&!this.picks[e].isEmpty()||this.isRestored},s.prototype.isComplete=function(){var e=this.countPicks()===this.getMaxNumberOfPicks();for(var t in this.picks)if(Object.prototype.hasOwnProperty.call(this.picks,t)&&!(e=e&&this.hasPick(t)))break;return e},s.prototype.isEmpty=function(){var e=!0;for(var t in this.picks)if(Object.prototype.hasOwnProperty.call(this.picks,t)&&!(e=e&&!this.hasPick(t)))break;return e},s.prototype.clearPick=function(e){this.picks[e]&&this.picks[e].clear(),this.resetMeasureValues()},s.prototype.clearAllPicks=function(){for(var e in this.picks)Object.prototype.hasOwnProperty.call(this.picks,e)&&this.clearPick(e)},s.prototype.hasEqualPicks=function(e,t){if(!e||!t)return!1;if(e.geomType===t.geomType){var i=(0,o.getSnapResultPosition)(e),n=(0,o.getSnapResultPosition)(t);return(0,o.isEqualVectors)(i,n,o.EPSILON)}return!1},s.prototype.computeResult=function(e,t){if(this.resetMeasureValues(),!t.model)return this.result=null,!1;var i=this.result=(0,o.computeResult)(e,this.measurementType,t,this.options);if(null===i)return!this.isComplete();switch(i.type){case r.S.MEASUREMENT_DISTANCE:return this.distanceXYZ=i.distanceXYZ,this.distanceX=i.distanceX,this.distanceY=i.distanceY,this.distanceZ=i.distanceZ,!0;case r.S.MEASUREMENT_ANGLE:return this.angle=isNaN(i.angle)?0:i.angle,!0;case r.S.MEASUREMENT_AREA:return this.area=i.area,!0;case r.S.MEASUREMENT_ARC:return this.arc=i.arc,!0;case r.S.MEASUREMENT_LOCATION:return this.location=i.location,!0;case r.S.MEASUREMENT_CALLOUT:return!0;default:return!1}},s.prototype.getGeometry=function(e){return{type:this.picks[e].geomType,geometry:this.picks[e].getGeometry()}},s.prototype.attachIndicator=function(e,t,i){this.indicator=new i(e,this,t),this.indicator.init()}},65918:(e,t,i)=>{"use strict";i.d(t,{S:()=>n,z:()=>r});var n={MEASUREMENT_DISTANCE:1,MEASUREMENT_ANGLE:2,MEASUREMENT_AREA:3,CALIBRATION:4,MEASUREMENT_CALLOUT:5,MEASUREMENT_LOCATION:6,MEASUREMENT_ARC:7},r={[n.MEASUREMENT_DISTANCE]:"Distance",[n.MEASUREMENT_ANGLE]:"Angle",[n.MEASUREMENT_AREA]:"Area",[n.CALIBRATION]:"Calibration",[n.MEASUREMENT_CALLOUT]:"Callout",[n.MEASUREMENT_LOCATION]:"Location",[n.MEASUREMENT_ARC]:"Arc"}},80152:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PDFUtils:()=>a});var n=i(12153);function r(e){var t,i;const n=null===(t=e.impl)||void 0===t||null===(t=t.model)||void 0===t?void 0:t.getDocumentNode(),r=null==n||null===(i=n.search(Autodesk.Viewing.BubbleNode.LEAFLET_NODE)[0])||void 0===i?void 0:i._raw();if(!r)return null;const o={};return new Autodesk.Viewing.Document(n.getRootNode()._raw(),"").getLeafletParams(o,n,r),o}function o(e){const t=new Autodesk.Viewing.Private.TexQuadConfig,i=r(e);if(!i)return null;t.initFromLoadOptions(null,i);return t.getBBox()}function s(e){const t=o(e);if(!t)return null;return n.SceneMath.getNormalizingMatrix(null,t)}var a={leafletToPdfWorld:function(e,t){const i=s(e);if(!i)return null;let r;if(t.applyMatrix4(i),e.model.isLeaflet()){const t=e.model.getMetadata("page_dimensions"),i=new THREE.Box3(new THREE.Vector3,new THREE.Vector3(t.page_width,t.page_height,0));r=n.SceneMath.getNormalizingMatrix(void 0,i)}else r=n.SceneMath.getNormalizingMatrix(e.model);return t.applyMatrix4(r.invert()),t},pdfToLeafletWorld:function(e,t){const i=n.SceneMath.getNormalizingMatrix(e.model);t.applyMatrix4(i);let r=s(e);return r?(t.applyMatrix4(r.invert()),t):null},getLeafletLoadOptions:r,getLeafletBoundingBox:o,getLeafletNormalizingMatrix:s}},12182:(e,t,i)=>{"use strict";i.d(t,{e:()=>r});var n=i(17070);function r(){this.clear()}r.prototype.clear=function(){this.geomType=null,this.modelId=null,this.fragId=null,this.fragPos=null,this.snapNode=null,this.geomVertex=null,this.geomEdge=null,this.geomFace=null,this.radius=null,this.intersectPoint=null,this.faceNormal=null,this.viewportIndex2d=null,this.circularArcCenter=null,this.circularArcRadius=null,this.fromTopology=!1,this.isPerpendicular=!1,this.snapPoint=null},r.prototype.copyTo=function(e){e.modelId=this.modelId,e.fragId=this.fragId,e.fragPos=this.fragPos,e.snapNode=this.snapNode,e.geomVertex=this.geomVertex,e.geomFace=this.geomFace,e.geomEdge=this.geomEdge,e.radius=this.radius,e.geomType=this.geomType,e.intersectPoint=this.intersectPoint,e.faceNormal=this.faceNormal,e.viewportIndex2d=this.viewportIndex2d,e.circularArcCenter=this.circularArcCenter,e.circularArcRadius=this.circularArcRadius,e.fromTopology=this.fromTopology,e.isPerpendicular=this.isPerpendicular,e.snapPoint=this.snapPoint},r.prototype.clone=function(){var e=new r;return this.copyTo(e),e},r.prototype.isEmpty=function(){return!this.getGeometry()};let o=null,s=null,a=null;const l=(e,t)=>(s=s||new THREE.Vector3,a=a||new THREE.Vector3,s.set(0,0,0),a.set(e,0,0),s.applyMatrix4(t),a.applyMatrix4(t),s.distanceTo(a));r.prototype.applyMatrix4=function(e){if(this.geomEdge&&this.geomEdge.applyMatrix4(e),this.geomFace&&this.geomFace.applyMatrix4(e),this.geomVertex&&this.geomVertex.applyMatrix4(e),this.intersectPoint&&this.intersectPoint.applyMatrix4(e),this.circularArcCenter&&this.circularArcCenter.applyMatrix4(e),this.snapPoint&&this.snapPoint.applyMatrix4(e),this.faceNormal){o=o||new THREE.Matrix4;const t=o.getNormalMatrix(e);this.faceNormal.applyMatrix4(t)}this.radius=l(this.radius,e),this.circularArcRadius=l(this.circularArcRadius,e)},r.prototype.getFace=function(){return this.geomFace},r.prototype.getEdge=function(){return this.geomEdge},r.prototype.getVertex=function(){return this.geomVertex},r.prototype.getGeometry=function(){switch(this.geomType){case n.h.SNAP_VERTEX:case n.h.SNAP_MIDPOINT:case n.h.SNAP_INTERSECTION:case n.h.SNAP_CIRCLE_CENTER:case n.h.RASTER_PIXEL:return this.geomVertex;case n.h.SNAP_EDGE:return this.geomEdge;case n.h.SNAP_FACE:return this.geomFace;case n.h.SNAP_CIRCULARARC:case n.h.SNAP_CURVEDEDGE:return this.geomEdge;case n.h.SNAP_CURVEDFACE:return this.geomFace}return null},r.prototype.setGeometry=function(e,t){switch(e){case n.h.SNAP_VERTEX:case n.h.SNAP_MIDPOINT:case n.h.SNAP_INTERSECTION:case n.h.SNAP_CIRCLE_CENTER:case n.h.RASTER_PIXEL:this.geomVertex=t;break;case n.h.SNAP_EDGE:this.geomEdge=t;break;case n.h.SNAP_FACE:this.geomFace=t;break;case n.h.SNAP_CIRCULARARC:case n.h.SNAP_CURVEDEDGE:this.geomEdge=t;break;case n.h.SNAP_CURVEDFACE:this.geomFace=t;break;default:return}this.geomType=e}},17070:(e,t,i)=>{"use strict";i.d(t,{h:()=>n});var n={SNAP_VERTEX:0,SNAP_MIDPOINT:1,SNAP_CIRCLE_CENTER:2,SNAP_EDGE:3,SNAP_FACE:4,SNAP_CIRCULARARC:5,SNAP_CURVEDEDGE:6,SNAP_CURVEDFACE:7,RASTER_PIXEL:8,SNAP_INTERSECTION:9}},27623:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ModelUnits:()=>s,calculatePrecision:()=>x,convertToDisplayUnits:()=>_,convertUnits:()=>b,fixUnitString:()=>v,formatValueWithUnits:()=>g,getMainUnit:()=>E,getUnitData:()=>y});var n=i(38842),r=i(13202);const o=i(92467);var s={METER:"m",CENTIMETER:"cm",MILLIMETER:"mm",FOOT:"ft",INCH:"in",POINT:"pt"};const a={[s.METER]:1,[s.CENTIMETER]:.01,[s.MILLIMETER]:.001,[s.FOOT]:.3048,[s.INCH]:.0254,[s.POINT]:.0254/72};function l(e){let t="";return 2===e?t=String.fromCharCode(178):3===e&&(t=String.fromCharCode(179)),t}function c(e){var t=0<=e?Math.floor(e):Math.ceil(e);return{intPart:t,fracPart:e-t}}function h(e,t,i){var n="";return i&&0===e&&(n+="-"),n+=00?e+=.5/a:e-=.5/a,i?o=e:(s+=h(r=c(e/12).intPart,0,l)+n.feet+" ",(o=e-12*r)<0&&(o=-o));var d=c(o).intPart,f=c((o-d)*a).intPart;if(0!==f&&0===d||(s+=h(d,0)),0!==f){for(d<0&&f<0&&(f=-f);f%2==0;)f/=2,a/=2;0!==d&&(s+="-"),s+=h(f,0)+"/"+h(a,0)}return s+=n.inches}function d(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;var n="";e<0&&(n="-",e=Math.abs(e));var r=c(e),o=r.intPart,s=r.fracPart*Math.pow(100,i);const a=l(i);let u=h(o,0),d=h(s,t);return d.startsWith(Math.pow(100,i).toString())&&(u=h(o+1,0),d=h(0,t)),n+u+` m${a} `+d+` cm${a}`}function f(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;var r="";e<0&&(r="-",e=Math.abs(e));var o=c(e),s=o.intPart,a=o.fracPart*Math.pow(12,n);const u=l(n);let d=h(s,0),f=h(a,t);return f.startsWith(Math.pow(12,n).toString())&&(d=h(s+1,0),f=h(0,t)),r+d+i.feet+u+" "+f+i.inches+u}const p={feetFractionalInches:"ft-and-fractional-in",fractionalInches:"fractional-in",feet:"feet",inches:"inches",stationingFeet:"feet"};function m(e){if(!e||!e.startsWith("autodesk.unit.unit:"))return e;let t=e.split(":")[1].split("-")[0],i=o.unit[t];if(!i)return console.warn("Failed to find Forge unit schema for",e),e;{let e=p[t];if(e)return e;if(!i.symbols)return console.warn("Unit without symbols.",i),"";if(i.defaultSymbol&&i.symbols[i.defaultSymbol])return i.symbols[i.defaultSymbol];for(let e in i.symbols)return i.symbols[e]}}function g(e,t,i,r,o){var s;null==r&&(r=3);const a=(o=o||{}).preferLetters?{feet:" ft",inches:" in"}:{feet:"'",inches:'"'};t=m(t);try{if(1===i)s=n.A.t(e?"Yes":"No");else if(24===i){var c=e.split(" ");s=[];for(var p=0;pb(o,n,1,e,l,null))).join(" "),displayUnits:s}}return{displayValue:e,displayUnits:i}}function E(e){switch(e){case"decimal-ft":case"ft-and-fractional-in":case"ft-and-decimal-in":return"ft";case"decimal-in":case"fractional-in":return"in";case"m-and-cm":return"m"}return e}},54386:(e,t,i)=>{"use strict";i.r(t),i.d(t,{UnitParser:()=>n});var n={};function r(e,t,i,n){if(!e)return NaN;var r,o=(e=e.toString()).trim();if(0==o.length)return NaN;var s=i.join("| *"),a=n.join("| *");if(r=o.match(new RegExp("^([+-]?\\d+)(?: *)/(?: *)(\\d+)(?: *)(?:"+a+") *$")))return parseFloat(r[1])/parseFloat(r[2])/t;if(r=o.match(new RegExp("^([+-]?\\d+)(?: *)/(?: *)(\\d+)(?: *)(?:"+s+")? *$")))return parseFloat(r[1])/parseFloat(r[2]);var l;if(!(r=o.match(/^[+-]? *(?:\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?/i)))return NaN;if(l=parseFloat(r[0].replace(/ */g,"")),0==(o=(o=o.slice(r[0].length)).replace("-"," ")).length||isNaN(l))return l;var c=Math.sign(l);return 0===c&&(c=1),o.match(new RegExp("^(?: *)(?:"+a+") *$","i"))?l/t:(r=o.match(new RegExp("^ +(\\d+)(?: *)/(?: *)(\\d+)(?: *)(?:"+a+") *$","i")))?(l+c*parseFloat(r[1])/parseFloat(r[2]))/t:(r=o.match(new RegExp("^(?: *)(?:"+s+"|-| +-?) *","i")))?0==(o=o.slice(r[0].length).trim()).length?r[0].match(/-/)?NaN:l:(r=o.match(new RegExp("^(\\d+(?:\\.\\d*)?)(?: *)(?:"+a+")? *$")))?l+c*parseFloat(r[1])/t:(r=o.match(new RegExp("^(\\d+)(?: *)/(?: *)(\\d+)(?: *)(?:"+a+")? *$")))?l+c*(parseFloat(r[1])/parseFloat(r[2]))/t:(r=o.match(new RegExp("^(\\d+) +(\\d+)(?: *)/(?: *)(\\d+)(?: *)(?:"+a+")? *$")))?l+c*(parseFloat(r[1])+parseFloat(r[2])/parseFloat(r[3]))/t:NaN:NaN}n.parseFeet=function(e){return r(e,12,["ft","feet","'","`","‘","’"],["in","inch",'\\"',"''","``","‘‘","’’"])},n.parseMeter=function(e){return r(e,100,["m","meter"],["cm","centimeter"])},n.parseNumber=function(e,t){switch(t){case"ft":case"decimal-ft":case"ft-and-fractional-in":case"ft-and-decimal-in":case"decimal-in":case"fractional-in":return n.parseFeet(e);default:return n.parseMeter(e)}},n.parsePositiveNumber=function(e,t){var i=n.parseNumber(e,t);return i>=0?i:NaN}},32937:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MobileCallbacks:()=>r});const n=(0,i(55280).getGlobal)();function r(){this.ios=n.webkit,this.android=n.JSINTERFACE,this.iosSend=function(e,t){return n.webkit.messageHandlers.callbackHandler.postMessage({command:e,data:t})},this.androidSend=n.JSINTERFACE}var o=r.prototype;o.animationReady=function(){this.ios?this.iosSend("animationReady"):this.android&&this.androidSend.animationReady()},o.onSelectionChanged=function(e){this.ios?this.iosSend("selectionChanged",e):this.android&&this.androidSend.onSelectionChanged(e)},o.onLongTap=function(e,t){this.ios?this.iosSend("onLongTap",[e,t]):this.android&&this.androidSend.onLongTap(e,t)},o.onSingleTap=function(e,t){this.ios?this.iosSend("onSingleTap",[e,t]):this.android&&this.androidSend.onSingleTap(e,t)},o.onDoubleTap=function(e,t){this.ios?this.iosSend("onDoubleTap",[e,t]):this.android&&this.androidSend.onDoubleTap(e,t)},o.setRTCSession=function(e){this.ios?this.iosSend("setRTCSession",{id:e}):this.android&&this.androidSend.setRTCSessionID(e)},o.putProperties=function(e,t){this.ios?this.iosSend("putProperties",{name:e,value:t}):this.android&&this.androidSend.putProperties(e,t)},o.onPropertyRetrievedSuccess=function(){this.ios?this.iosSend("onPropertyRetrievedSuccess"):this.android&&this.androidSend.onPropertyRetrievedSuccess()},o.onPropertyRetrievedFailOrEmptyProperties=function(){this.ios?this.iosSend("onPropertyRetrievedFailOrEmptyProperties"):this.android&&this.androidSend.onPropertyRetrievedFailOrEmptyProperties()},o.resetAnimationStatus=function(){this.ios?this.iosSend("resetAnimationStatus"):this.android&&this.androidSend.resetAnimationStatus()},o.setPauseUI=function(){this.ios?this.iosSend("setPauseUI"):this.android&&this.androidSend.setToPaused()},o.getDeviceAvailableMemory=function(){return this.ios?this.iosSend("getDeviceAvailableMemory"):this.android?this.androidSend.getDeviceAvailableMemory():void 0},o.onDeviceMemoryInsufficient=function(){return this.ios?this.iosSend("onDeviceMemoryInsufficient"):this.android?this.androidSend.onDeviceMemoryInsufficient():void 0},o.updateAnimationTime=function(e){this.ios?this.iosSend("updateAnimationTime",e):this.android&&this.androidSend.updateAnimationTime(e)},o.setLoadingProgress=function(e,t){this.ios?this.iosSend("setLoadingProgress",{state:e,progress:t}):this.android&&this.androidSend.setLoadingProgress(e,t)},o.objectTreeCreated=function(){this.ios?this.iosSend("objectTreeCreated"):this.android&&this.androidSend.objectTreeCreated()},o.geometryLoaded=function(){this.ios?this.iosSend("geometryLoaded"):this.android&&this.androidSend.geometryLoaded()},o.putSheets=function(e,t){this.ios?this.iosSend("putSheets",[e,t]):this.android&&this.androidSend.putSheets(e,t)},o.putAllSheets=function(e){this.ios?this.iosSend("putAllSheets",e):this.android&&this.androidSend.putAllSheets(e)},o.hideLoadingView=function(){this.android&&this.androidSend.hideLoadingView()},o.instanceTree=function(e){this.ios?this.iosSend("instanceTree",e):this.android&&this.androidSend.instanceTree(e)},o.loadSheetFailed=function(){this.ios?this.iosSend("loadSheetFailed"):this.android&&this.androidSend.loadSheetFailed()},o.sheetSelected=function(e){this.ios?this.iosSend("sheetSelected",e):this.android&&this.androidSend.sheetSelected(e)},"undefined"!=typeof window&&(n.MobileCallbacks=r)},54679:(e,t,i)=>{const{getGlobal:n}=i(38685);function r(e){for(var t=n(),i=e.split("."),r=0;r{"use strict";function n(e){var t=Autodesk.Viewing,i=t.Private,n=t.UI,r=t.Extensions;for(let i in e.av)t[i]=e.av[i];for(let t in e.avp)i[t]=e.avp[t];for(let t in e.avu)n[t]=e.avu[t];for(let t in e.ave)r[t]=e.ave[t];t.getGlobal().THREE=e.THREE,t.getGlobal().LMV=e,i.isRightClick=t.isRightClick,i.isMiddleClick=t.isMiddleClick}i.d(t,{E:()=>n})},20268:(e,t,i)=>{"use strict";i.r(t),i.d(t,{loadDependency:()=>a,theResourceLoader:()=>s});var n=i(8600);const r=(0,i(55280).getGlobal)(),o=r.document;const s=new class{constructor(){this.loadPromises={}}getResourceUrl(e){return e.indexOf("://")>0?e:(0,n.getResourceUrl)(e)}loadScriptIntoDom(e,t,i){const n=o.createElement("SCRIPT");n.src=e;const r=function(){n.onerror=null,n.onload=null};n.onload=function(){r(),t()},n.onerror=function(t){r(),i&&i(new Error(`Error loading script ${e}, with error ${t}`))},o.head.appendChild(n)}loadScript(e,t){if(t&&void 0!==r[t])return Promise.resolve();const i=(e=this.getResourceUrl(e)).toLowerCase();if(i in this.loadPromises)return this.loadPromises[i];const o=(0,n.getScript)(e);return this.loadPromises[i]=o?Promise.resolve():new Promise(((t,i)=>{this.loadScriptIntoDom(e,t,i)})),this.loadPromises[i]}_getLink(e){const t=o.getElementsByTagName("link");for(let i=0,n=t.length;i{i&&i()})).catch((e=>{n&&n(e)}))}Object.freeze(s)},97705:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SearchManager:()=>r});class n{constructor(e){this.viewer=e}search(e){return new Promise(((e,t)=>{}))}getProviderId(){return"Search Provider Id"}}class r{constructor(e){this.viewer=e,this.searchProviders=new Map}addSearchProvider(e){this.searchProviders.has(e)||this.searchProviders.set(e,new e(this.viewer))}search(e){return new Promise(((t,i)=>{const n=this.prepareSearchInput(e),r=[];this.searchProviders.forEach((e=>{const t=e.search(n),i=e.getProviderId();t.id=i,r.push(t)})),Promise.all(r).then((e=>{const i={};e.forEach(((e,t)=>{const n=r[t].id;i[n]=e})),t(i)})).catch(i)}))}removeAllProviders(){this.searchProviders.clear()}removeProvider(e){this.searchProviders.delete(e)}prepareSearchInput(e){return e.toLowerCase()}}const o=AutodeskNamespace("Autodesk.Viewing.Search");o.SearchManager=r,o.ModelPartsSearchProvider=class extends n{constructor(e){super(e)}search(e){return new Promise(((t,i)=>{const n=this.viewer.getVisibleModels(),r=[];0===n.length&&t(r);for(let t=0;t{t.enumNodeChildren(t.getRootId(),(t=>{const i=s&&s.getNodeName(t);i&&-1!==i.toLowerCase().indexOf(e)&&o.push(t)}),!0)})),r.push({ids:o,model:i})}t(r)}))}getProviderId(){return"ModelPartsSearchProvider"}},o.PropertiesSearchProvider=class extends n{constructor(e){super(e)}search(e){return new Promise(((t,i)=>{const n=this.viewer.getVisibleModels(),r=[];0===n.length&&t(r);for(let o=0;o{r.push({ids:e,model:s}),r.length===n.length&&t(r)}),i)}}))}getProviderId(){return"PropertiesSearchProvider"}},o.TextSearchProvider=class extends n{constructor(e){super(e),e.loadExtension("Autodesk.StringExtractor")}search(e){return new Promise((t=>{this.viewer.getExtensionAsync("Autodesk.StringExtractor").then((i=>i.getDocumentStrings().then((i=>{const n=[],r=this.viewer.impl.get2DModels();for(let t=0;t0){const o=this.splitOccurrences(e[n],s,t,i);r=r.concat(o)}}else for(let i=0;ie+t))}if(r){const n=a.metadata.page_dimensions.page_units;s*=Autodesk.Viewing.Private.convertUnits(Autodesk.Viewing.Private.ModelUnits.INCH,n,1,1);const c=a.scaleX,h=(r.getData().scaleY||s)*e.stringHeight;for(let n=0;n{"use strict";i.r(t),i.d(t,{DefaultHandler:()=>r});i(72091);var n=i(55280);function r(e,t,i){this.clickConfig=null,this.getNames=function(){return["default"]},this.getName=function(){return this.getNames()[0]},this.setClickBehavior=function(e){this.clickConfig=e},this.getClickBehavior=function(){return this.clickConfig},this.activate=function(e){},this.deactivate=function(e){},this.handleAction=function(t,n,r){for(var o=0;o{"use strict";i.r(t),i.d(t,{FovTool:()=>r});var n=i(72091);function r(e){var t=.001,i=e.navigation,r=i.getCamera(),o=["fov"],s=!1,a=0,l=null,c=null,h=!1,u=0,d=-5,f=-1,p=d,m=new n.Vector3,g=new n.Vector3,v=new n.Vector3,y=null;function b(e){return e<0&&e>-3?-3:e>0&&e<3?3:e}this.getNames=function(){return o},this.getName=function(){return o[0]},this.activate=function(e){u=0},this.deactivate=function(e){p=d},this.getCursor=function(){return 0!==u&&p===d?null:"url(data:image/x-icon;base64,AAACAAEAGBgAAAAAAACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAYAkAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAwMD/yEhIf8AAABmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAGknJyf/goKC/8/Pz/8aGhr/AAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAABTFBQU/2lpaf/MzMz///////////+Wlpb/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAOAAAAKFTU1P/t7e3////////////8PDw////////////AQEB/wAAAAEAAAAAAAAAFAAAAH0KCgr/AAAAYwAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAjCwsL/6Ghof/t7e3///////Dw8P9MTEz/LS0t//Pz8///////Ghoa/wAAABoAAAANDQ0N/319ff+rq6v/Y2Nj/wAAAK8AAABGAAAA////////////AAAA/wAAAF0hISH/jIyM////////////sLCw/xEREf8AAACHAAAArKysrP//////V1dX/wAAAFcAAABSUlJS//f39///////8PDw/6+vr/86Ojr/LS0t////////////FRUV/1xcXP/Gxsb/+Pj4//Hx8f9MTEz/AAAAsAAAAEcAAAAAAAAAZ2dnZ///////pKSk/wAAAKQAAACtra2t///////////////////////m5ub/kZGR/wAAAP8AAAD/q6ur//Hx8f//////vb29/x0dHf8AAACIAAAAAAAAAAAAAAAAAAAAOjo6Ov//////5+fn/wAAAOcAAADd3d3d////////////////////////////+/v7/9bW1v/i4uL//v7+//Pz8/9hYWH/AAAAvQAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAJycnJ//6+vr//////wMDA/8AAADv7+/v/////////////////////////////////////////////////7y8vP8ODg7/AAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiYmJv/6+vr//////wkJCf8AAADv7+/v//////////////////////////////////f39//9/f3//////+np6f+UlJT/GBgY/wAAAH0AAAACAAAAAAAAAAAAAAAAAAAAKSkpKf///////v7+/w0NDf8AAADd3d3d////////////////////////////29vb/39/f/+Xl5f/5+fn////////////5ubm/1RUVP8CAgL/AAAAPwAAAAAAAAAAAAAAOTk5Of//////8PDw/wgICP8AAAChoaGh/////////////////+np6f+YmJj/QkJC/wAAAP8AAAD/UFBQ/7e3t//39/f///////////+oqKj/EBAQ/wAAAIgAAAAAAAAAZ2dnZ///////29vb/wEBAf8AAAA4NTU1/9zc3P/t7e3/tbW1/01NTf8AAACYAAAA////////////AwMD/wsLC/9oaGj/y8vL////////////8fHx/zg4OP8AAACWAAAApaWlpf//////n5+f/wAAAJ8AAAAAAAAAczg4OP9LS0v/EhIS/wAAAE0AAAAAAAAA////////////FRUV/wAAABUAAABoJSUl/4GBgf/i4uL///////////9+fn7/Pz8///b29v//////SkpK/wAAAEoAAAAAAAAAAAAAADgAAABLAAAAEgAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAJQAAAIE8PDz/np6e//z8/P/////////////////8/Pz/CQkJ/wAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAA8DAwM/09PT/+7u7v///////////+QkJD/AAAAkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////Dw8P/wAAAA8AAAAAAAAAAAAAAAAAAAAAAAAADAAAAFIYGBj/aGho/729vf8WFhb/AAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////FRUV/wAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAQEB/w8PD/8AAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////DAwM/wAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8x/h/nO/4fw1D+HwFy/h4BRu4YAHOGEABkAAAAXAAAIFwAAOBnAAHgIAAD4GUAAOB4AABgXAAAIGMAAABtggAAVMYYAHT+HgE7/g8BcP4Pw2/+D+dc/h//XP///2c=), auto"},this.getMotionDelta=function(e){var i=g.x-m.x,n=g.y-m.y,r=g.z-m.z;Math.abs(i)100?(t=b(a),a=0,l=null,c=null,h=!1):l&&e-l>100&&(h?Math.abs(a)>=3&&(t=a,a=0):(t=b(a),h=!0,a=0)),t},this.update=function(){var e=!1,t=p>d;if(p>d){this.controller.setIsLocked(!0),this.getMotionDelta(v);var n=v.x,o=v.y,a=v.z;if(0!==n||0!==o||0!==a)if(t=!0,p>=0)o=-o,0!==(a=Math.abs(n)>Math.abs(o)?n:o)&&(a*=-1,i.setVerticalFov(i.getVerticalFov()*(1+a),!0));else{var l=this.getAccumulatedWheelDelta()/3;0!==l&&i.setFocalLength(i.getFocalLength()+l,!0)}this.stepMotionDelta(v,!0),p===f&&Math.abs(a)<1e-5&&(this.interactionEnd(f),e=!0)}return t?this.utilities.pivotActive(i.getPivotSetFlag(),!0):this.utilities.pivotUpdate(),!s&&(e||p>d)&&(p>f&&m.copy(g),p=d,this.controller.setIsLocked(!1)),r.dirty},this.interactionStart=function(e,t){(t||e>p)&&(p=e,s=!0),i.toPerspective()},this.interactionEnd=function(e){e===p&&(e!==f&&this.utilities.pivotActive(!1),s=!1)},this.handleWheelInput=function(e){if(p>f)return!1;i.getReverseZoomDirection()&&(e*=-1),g.z+=e,a+=e;var t=Date.now();return l||(l=t),c=t,0!=e&&this.interactionStart(f),!0},this.handleGesture=function(e){switch(e.type){case"dragstart":return this.handleButtonDown(e,0);case"dragmove":return this.handleMouseMove(e);case"dragend":return this.handleButtonUp(e,0);case"drag3start":return y="drag",this.handleButtonDown(e,0);case"drag3move":return"drag"===y&&this.handleMouseMove(e);case"drag3end":return"drag"===y&&this.handleButtonUp(e,0),y=null,!1}return!1},this.handleButtonDown=function(e,t){return u+=1<f},this.handleBlur=function(e){return this.interactionEnd(p),!1}}},55855:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GestureHandler:()=>s,GestureRecognizers:()=>o});var n=i(55280);let r;(0,n.isNodeJS)()||(r=i(41944));const o={};function s(e){var t=e.navigation,i=["gestures"],s=this,a=!0,l=!1,c=!0,h=null,u=!1,d=(0,n.isTouchDevice)();t.setIsTouchDevice(d),d&&((h=new r.Manager(e.canvasWrap,{recognizers:[o.drag,o.doubletap,o.doubletap2,o.singletap,o.singletap2,o.press,o.drag3,o.swipe,o.pan,o.pinch,o.rotate],handlePointerEventMouse:!1,inputClass:r.TouchInput})).get("pinch").recognizeWith([h.get("drag")]),e.canvasWrap.addEventListener("touchstart",this.onTouchStart,!1)),this.onTouchStart=function(e){e.preventDefault()},this.getNames=function(){return i},this.getName=function(){return i[0]},this.isActive=function(){return u},this.__clientToCanvasCoords=function(t){var i,n,r=e.impl.getCanvasBoundingClientRect(),o=r.width,s=r.height;t.hasOwnProperty("center")?(i=t.center.x-r.left,n=t.center.y-r.top):(i=t.pointers[0].clientX-r.left,n=t.pointers[0].clientY-r.top),t.canvasX=i,t.canvasY=n,t.normalizedX=i/o*2-1,t.normalizedY=(s-n)/s*2-1},this.distributeGesture=function(e){s.__clientToCanvasCoords(e),s.controller.distributeEvent("handleGesture",e)&&e.preventDefault()},this.onSingleTap=function(e){s.__clientToCanvasCoords(e),s.controller.distributeEvent("handleSingleTap",e)&&e.preventDefault()},this.onDoubleTap=function(e){s.__clientToCanvasCoords(e),s.controller.distributeEvent("handleDoubleTap",e)&&e.preventDefault()},this.onPressHold=function(e){s.__clientToCanvasCoords(e),s.controller.distributeEvent("handlePressHold",e)&&e.preventDefault()},this.onHammerInput=function(e){s.setMouseDisabledWhenTouching(e)},this.setMouseDisabledWhenTouching=function(e){e.isFirst&&!l?(a=s.controller.enableMouseButtons(!1),l=!0):e.isFinal&&setTimeout((function(){s.controller.enableMouseButtons(a),l=!1}),10)},this.activate=function(e){h&&!u&&(h.on("dragstart dragmove dragend",this.distributeGesture),h.on("singletap",this.onSingleTap),h.on("singletap2",this.onSingleTap),h.on("doubletap",this.onDoubleTap),h.on("doubletap2",this.onDoubleTap),h.on("press pressup",this.onPressHold),h.on("drag3start drag3move drag3end",this.distributeGesture),h.on("swipeleft swiperight swipeup swipedown",this.distributeGesture),c&&(h.on("panstart panmove panend",this.distributeGesture),h.on("pinchstart pinchmove pinchend",this.distributeGesture),h.on("rotatestart rotatemove rotateend",this.distributeGesture)),h.on("hammer.input",this.onHammerInput),h.get("doubletap2").recognizeWith("doubletap"),h.get("singletap2").recognizeWith("singletap"),h.get("singletap").requireFailure("doubletap"),h.get("swipe").recognizeWith("drag")),u=!0},this.deactivate=function(e){h&&u&&(h.off("dragstart dragmove dragend",this.distributeGesture),h.off("singletap",this.onSingleTap),h.off("singletap2",this.onSingleTap),h.off("doubletap",this.onDoubleTap),h.off("doubletap2",this.onDoubleTap),h.off("press pressup",this.onPressHold),h.off("drag3start drag3move drag3end",this.distributeGesture),h.off("swipeleft swiperight swipeup swipedown",this.distributeGesture),c&&(h.off("panstart panmove panend",this.distributeGesture),h.off("pinchstart pinchmove pinchend",this.distributeGesture),h.off("rotatestart rotatemove rotateend",this.distributeGesture)),h.off("hammer.input",this.onHammerInput)),u=!1},this.update=function(){return!1},this.handleBlur=function(e){return!1},this.disableTwoFingerSwipe=function(){c=!1,h&&(h.remove(r.Pan),h.remove(r.Pinch),h.remove(r.Rotate),h.off("panstart panmove panend",this.distributeGesture),h.off("pinchstart pinchmove pinchend",this.distributeGesture),h.off("rotatestart rotatemove rotateend",this.distributeGesture))},this.setGestureParameter=function(e,t,i){const n=h&&h.get(e);return!!n&&(n.options[t]=i,!0)},this.restoreGestureParameterDefault=function(e,t){const i=h&&h.get(e);if(!i)return!1;const n=o[e][1];return i.options[t]=n.hasOwnProperty(t)?n[t]:i.defaults[t],!0}}r&&function(){if(!o.singletap){var e=o;e.singletap=[r.Tap,{event:"singletap",threshold:7,time:400}],e.singletap2=[r.Tap,{event:"singletap2",pointers:2,threshold:7,time:400}],e.press=[r.Press,{event:"press",time:500,threshold:50}],e.doubletap=[r.Tap,{event:"doubletap",taps:2,interval:300,threshold:6,posThreshold:30}],e.doubletap2=[r.Tap,{event:"doubletap2",pointers:2,taps:2,interval:300,threshold:6,posThreshold:40}],e.swipe=[r.Swipe,{event:"swipe",pointers:1,threshold:200,velocity:1.7}],e.drag=[r.Pan,{event:"drag",pointers:1}],e.drag3=[r.Pan,{event:"drag3",pointers:3,threshold:15}],e.pan=[r.Pan,{event:"pan",pointers:2,threshold:20}],e.pinch=[r.Pinch,{event:"pinch",pointers:2,enable:!0,threshold:.05}],e.rotate=[r.Rotate,{event:"rotate",pointers:2,enable:!0,threshold:7}]}}()},4746:(e,t,i)=>{"use strict";function n(e){var t=["hottouch"],i={SHIFT:0,ALT:0,CONTROL:0},n=null,r=null,o=!1,s=!1,a=null,l=16,c=17,h=18;this.active=!1,this.getNames=function(){return t},this.getName=function(){return t[0]},this.activate=function(e){this.active=!0},this.deactivate=function(e){this.active=!1},this.isActive=function(){return this.active},this.__checkStart=function(){a&&(this.controller.distributeEvent("handleGesture",a),a=null)},this.update=function(){if(this.controller.getIsLocked())return!1;var t=e.getActiveNavigationTool(),i=!1===o&&!0===s;if(i||!0===o&&!1===s){var a=i?"worldup":"fov";if(t===a)return!1;if(t===n)return e.setActiveNavigationTool(a),n=a,this.__checkStart(),!1;r=t,e.setActiveNavigationTool(a),n=a,this.__checkStart()}else n&&(e.setActiveNavigationTool(r),n=null,r=null);return!1},this.resetKeys=function(){i.SHIFT=0,i.CONTROL=0,i.ALT=0},this.updateModifierState=function(e){i.CONTROL=e.ctrlKey?1:0,i.SHIFT=e.shiftKey?1:0,i.ALT=e.altKey?1:0},this.handleGesture=function(t){if(t===a)return!1;switch(t.type){case"drag3start":e.navigation.isActionEnabled("fov")&&(a=t,o=!0);break;case"drag3move":case"rotatemove":break;case"drag3end":o=!1;break;case"rotatestart":e.navigation.isActionEnabled("roll")&&(a=t,s=!0);break;case"rotateend":s=!1}return!1},this.handleKeyDown=function(e,t){switch(this.updateModifierState(e),t){case l:i.SHIFT=1;break;case c:i.CONTROL=1;break;case h:i.ALT=1}return!1},this.handleKeyUp=function(e,t){switch(this.updateModifierState(e),t){case l:i.SHIFT=0;break;case c:i.CONTROL=0;break;case h:i.ALT=0}return!1},this.handleButtonDown=function(e,t){return this.updateModifierState(e),!1},this.handleButtonUp=function(e,t){return this.updateModifierState(e),!1},this.handleMouseMove=function(e){return this.updateModifierState(e),!1},this.handleBlur=function(e){return this.resetKeys(),!1}}i.r(t),i.d(t,{HotGestureTool:()=>n})},75109:(e,t,i)=>{"use strict";i.r(t),i.d(t,{HotkeyManager:()=>r});const n=function(e,t){return e-t};function r(){var e=[],t=[],i=[],r=[],o=["hotkeys"];this.getNames=function(){return o},this.getName=function(){return o[0]},this.pushHotkeys=function(t,i,r){if(e.some((function(e){return e.id===t})))return!1;for(var o=0;o=0;n--)e[n].id===t&&(e.splice(n,1),i=!0);return i};const s=function(){var e,n=t.join();for(e=0;e=0;c--)(d=e[c]).keys===a&&d.onRelease?f.unshift(d):d.keys===h&&d.onPress&&p.unshift(d);for(c=f.length-1;c>=0&&!(d=f[c]).onRelease(l);c--)d.options.tryUntilSuccess&&r.unshift(d);for(c=p.length-1;c>=0&&!(d=p[c]).onPress(u);c--)d.options.tryUntilSuccess&&i.unshift(d)}},this.handleKeyUp=function(n,o){var a=t.join(),l=t.slice(0),c=t.indexOf(o);c>-1&&t.splice(c,1);var h=t.join(),u=t.slice(0);s();var d,f=[],p=[];for(c=e.length-1;c>=0;c--)(d=e[c]).keys===a&&d.onRelease?f.unshift(d):d.keys===h&&d.onPress&&p.unshift(d);for(c=f.length-1;c>=0&&!(d=f[c]).onRelease(l);c--)d.options.tryUntilSuccess&&r.unshift(d);for(c=p.length-1;c>=0&&!(d=p[c]).onPress(u);c--)d.options.tryUntilSuccess&&i.unshift(d)},this.update=function(){var e,t;for(t=0;t=0;e--)this.handleKeyUp(null,t[e])},this.activate=function(){},this.deactivate=function(){}}},49930:(e,t,i)=>{"use strict";i.r(t),i.d(t,{KeyCode:()=>n});const n={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CONTROL:17,ALT:18,ESCAPE:27,SPACE:32,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,INSERT:45,DELETE:46,ZERO:48,SEMICOLONMOZ:59,EQUALSMOZ:61,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,LCOMMAND:91,RCOMMAND:93,PLUS:107,PLUSMOZ:171,DASHMOZ:109,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,DASHMOZNEW:173,SEMICOLON:186,EQUALS:187,COMMA:188,DASH:189,PERIOD:190,SLASH:191,LBRACKET:219,RBRACKET:221,SINGLEQUOTE:222,COMMANDMOZ:224}},17016:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Navigation:()=>a});var n=i(72091),r=i(83081),o=i(25004);const s={TRANSITION_ACTIVE_FLAG_CHANGED:"transitionActiveFlagChanged"};function a(e){var t=6.88,i=1e-6;this.__options={dollyToPivot:!1,orbitPastPoles:!0,reverseDolly:!1,reverseHorizontalLook:!1,reverseVerticalLook:!1,useLeftHandedInput:!1,usePivotAlways:!1,lockNavigation:!1},this.__lockSettings={orbit:!1,pan:!1,zoom:!1,roll:!1,fov:!1,gotoview:!1,walk:!1},this.FIT_TO_VIEW_VERTICAL_MARGIN=.05,this.FIT_TO_VIEW_VERTICAL_OFFSET=0,this.FIT_TO_VIEW_HORIZONTAL_MARGIN=.05,this.FIT_TO_VIEW_HORIZONTAL_OFFSET=0,this.__pivotIsSetFlag=!1,this.__fitToViewRequested=!1,this.__homeViewRequested=!1,this.__transitionActive=!1,this.__destinationView=null,this.__is2D=!1,this.__isTouchDevice=!1,this.__kEpsilon=i,this.__minDistance=1e-5;var r=void 0,o=void 0,s=2,a=200,l=null,c={left:0,top:0,width:1,height:1},h=Number.MAX_VALUE;this.uninitialize=function(){this.setCamera(null)},this.setMinimumLineWidth=function(e){h=e||Number.MAX_VALUE},this.setCamera=function(e){e!==l&&(l=e,e&&(Object.prototype.hasOwnProperty.call(e,"target")||(e.target=new n.Vector3(0,0,0)),Object.prototype.hasOwnProperty.call(e,"pivot")||(e.pivot=new n.Vector3(0,0,0)),e.worldup=e.up.clone(),e.dirty=!0))},this.getCamera=function(){return l},this.setScreenViewport=function(e){c=e},this.getScreenViewport=function(){return c},this.__setUp=function(e){if(e&&l&&0!==e.clone().normalize().sub(l.worldup).lengthSq())return l.worldup.copy(e).normalize(),l.dirty=!0,!0;return!1},this.__getUp=function(){return l?l.worldup:new n.Vector3(0,1,0)},this.setView=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if(!l)return;e&&t&&(l.position.copy(e),l.target.copy(t),null!=i&&l.up.copy(i),l.dirty=!0)},this.orientCameraUp=function(e){l&&(this.isActionEnabled("roll")||e)&&(l.up.copy(this.getAlignedUpVector()),l.dirty=!0)},this.getPivotPoint=function(){return l?l.pivot.clone():new n.Vector3(0,0,0)},this.setPivotPoint=function(e){l&&e&&l.pivot.copy(e)},this.getPosition=function(){return l?l.position.clone():new n.Vector3(0,0,1)},this.setPosition=function(e){l&&e&&(l.position.copy(e),l.dirty=!0)},this.setTarget=function(e){l&&e&&(l.target.copy(e),l.dirty=!0)},this.getTarget=function(){return l?l.target.clone():new n.Vector3(0,0,0)},this.getEyeVector=function(){return l?l.target.clone().sub(l.position):new n.Vector3(0,0,-1)},this.getEyeToCenterOfBoundsVec=function(e){return l?e.getCenter(new n.Vector3).sub(l.position):new n.Vector3(0,0,-1)},this.getFovMin=function(){return t},this.getFovMax=function(){return 100},this.setZoomInLimitFactor=function(e){a=e},this.getZoomInLimitFactor=function(){return a},this.setZoomOutLimitFactor=function(e){s=e},this.getZoomOutLimitFactor=function(){return s},this.isPointVisible=function(e){return(new n.Frustum).setFromProjectionMatrix(l.projectionMatrix.clone().multiply(l.matrixWorldInverse)).containsPoint(e)},this.setVerticalFov=function(e,r){if((!l||l.isPerspective)&&(e100&&(e=100),l&&this.isActionEnabled("fov"))){if(Math.abs(l.fov-e)<=i)return;if(r){var o=this.__pivotIsSetFlag&&this.isPointVisible(this.getPivotPoint()),s=this.getPosition(),a=this.getEyeVector(),c=n.Math.degToRad(l.fov),h=n.Math.degToRad(e),u=o?this.getPivotPlaneDistance():a.length(),d=u*Math.tan(.5*c)/Math.tan(.5*h),f=a.normalize().multiplyScalar(u-d);this.setPosition(s.add(f)),o&&this.setTarget(this.getTarget().add(f))}l.setFov(e),l.dirty=!0}},this.applyRotation=(e,t,i,n)=>{e.sub(i),e.applyAxisAngle(n,t),e.add(i)},this.getSignedAngle=(e,t,i)=>{var n=e.angleTo(t),r=e.clone().cross(t).normalize();return n*(i.dot(r)>0?1:-1)},this.computeFit=function(t,i,r,o,s){if(!o||o.isEmpty())return{position:t,target:i};s=void 0===s?1:s;for(var a=o.getCenter(new n.Vector3),l=o.getSize(new n.Vector3),c=t.clone().sub(i).normalize(),h=Math.tan(n.Math.degToRad(.5*r)),u=0,d=this.computeOrthogonalUp(t,i),f=c.clone().cross(d).normalize(),p=new n.Vector3,m=0===l.z?4:8,g=0;gi.y?n.y-=1e-4:n.z-=1e-4,r.crossVectors(n,i)),r.cross(n).normalize()},this.fitBounds=function(e,t,i,n){const r=this.getTarget(),o=this.getPosition();if(!this.isActionEnabled("gotoview")&&!n||!t||t.isEmpty())return{position:o,target:r};const s=this.getVerticalFov();i||(t=this.rotateBoundsToCamera(t,o,r));const a=this.computeFit(o,r,s,t,l.aspect),c=i?this.computeOrthogonalUp(o,r):l.up;return e?(l.up.copy(c),this.setView(a.position,a.target)):this.setRequestTransitionWithUp(!0,a.position,a.target,s,c),this.setPivotPoint(a.target),this.setPivotSetFlag(!0),a},this.rotateBoundsToCamera=function(e,t,i){const r=(e=e.clone()).getCenter(new n.Vector3),o=t.clone().sub(i).normalize(),s=this.getSignedAngle(this.getCameraUpVector(),this.getAlignedUpVector(),o);return this.applyRotation(e.min,s,r,o),this.applyRotation(e.max,s,r,o),e.setFromPoints([e.min.clone(),e.max.clone()]),e},this.computeOverviewDistance=function(e){var t=e.getSize(new n.Vector3);if(this.__is2D){var i=l.aspect,r=t.x/i,o=t.y;return Math.max(r,o)}var s=this.getVerticalFov(),a=t.length();return 0===a&&(a=2),l.isPerspective?.5*a/Math.tan(n.Math.degToRad(.5*s)):a},this.applyDollyConstraint=function(e,t){if(!(r||o||s)||!this.__is2D)return e;var i=e;if(r&&s&&t&&e>1){var n,c=l.isPerspective?this.getEyeToCenterOfBoundsVec(t):this.getEyeVector();n=r?s*this.computeOverviewDistance(r):s*this.computeOverviewDistance(t);var u=Math.abs(n/c.length());u=Math.max(u,1),i=Math.min(i,u)}if(o||a&&t){var d=(o?l.clientHeight/o:Math.min(h,this.computeOverviewDistance(t)/a))/-this.getEyeVector().z;d=Math.min(d,1),i=Math.max(i,d)}return i},this.applyPanningConstraint2D=function(e){if(this.__is2D&&r){var t=l.position.x+e.x,i=l.position.y+e.y;t=n.Math.clamp(t,r.min.x,r.max.x),i=n.Math.clamp(i,r.min.y,r.max.y);var o=t-l.position.x,s=i-l.position.y,a=Math.min(e.x,0),c=Math.min(e.y,0),h=Math.max(e.x,0),u=Math.max(e.y,0);o=n.Math.clamp(o,a,h),s=n.Math.clamp(s,c,u),e.x=o,e.y=s}},this.updateCamera=function(){l&&(l.updateProjectionMatrix(),this.orient(l,l.target,l.position,l.up),l.dirty=!1)},this.setCamera(e),this.setConstraints2D=function(e,t){r=e,o=t},this.getConstrains2D=function(){return{maxViewRegion:r,maxPixelPerUnit:o}}}a.prototype.constructor=a,a.prototype.setIs2D=function(e){this.__is2D=!!e},a.prototype.getIs2D=function(){return this.__is2D},a.prototype.setIsTouchDevice=function(e){this.__isTouchDevice=!!e},a.prototype.getIsTouchDevice=function(){return this.__isTouchDevice},a.prototype.orient=function(){var e,t,i,r;return function(o,s,a,l){e||(e=new n.Matrix4,t=new n.Vector3,i=new n.Vector3,r=new n.Vector3);var c=e.elements;r.subVectors(a,s).normalize(),0===r.lengthSq()&&(r.z=1),t.crossVectors(l,r).normalize(),0===t.lengthSq()&&(l.z>l.y?r.y-=1e-4:r.z+=1e-4,t.crossVectors(l,r).normalize()),i.crossVectors(r,t),c[0]=t.x,c[4]=i.x,c[8]=r.x,c[1]=t.y,c[5]=i.y,c[9]=r.y,c[2]=t.z,c[6]=i.z,c[10]=r.z,o.setRotationFromMatrix(e)}}(),a.prototype.fov2fl=function(e){var t=n.Math.degToRad(e);return t<=0&&(t=1e-4),Math.round(12/Math.tan(.5*t))},a.prototype.fl2fov=function(e){e<=0&&(e=1e-4);var t=2*Math.atan(12/e);return n.Math.radToDeg(t)},a.prototype.setCameraUpVector=function(e,t){if(this.isActionEnabled("roll")||t){var i=this.getCamera();i.up.copy(e),i.dirty=!0}},a.prototype.getCameraUpVector=function(){var e=this.getCameraRightVector(!1),t=this.getEyeVector();return e.cross(t).normalize()},a.prototype.getAlignedUpVector=function(){var e=this.getCameraRightVector(!0),t=this.getEyeVector();return e.cross(t).normalize()},a.prototype.getCameraRightVector=function(e){var t=new n.Vector3,i=e?this.getWorldUpVector():this.getCamera().up,r=this.getEyeVector();return t.crossVectors(r,i),0===t.lengthSq()&&(Math.abs(r.z)>=Math.abs(r.y)?i.set(0,1,0):i.set(0,0,1),t.crossVectors(r,i)),t.normalize()},a.prototype.setWorldUpVector=function(e,t,i){(this.isActionEnabled("roll")||i)&&(this.__setUp(e),t&&this.orientCameraUp(i))},a.prototype.getWorldUpVector=function(){return this.__getUp().clone()},a.prototype.getWorldRightVector=function(){var e=new n.Vector3;return e.copy(this.__getUp()),Math.abs(e.z)<=Math.abs(e.y)?e.set(e.y,-e.x,0):e.z>=0?e.set(e.z,0,-e.x):e.set(-e.z,0,e.x),e.normalize()},a.prototype.getVerticalFov=function(){return this.getCamera().fov},a.prototype.getHorizontalFov=function(){var e=this.getScreenViewport();return this.getCamera().fov*(e.width/e.height)},a.prototype.getFocalLength=function(){return this.fov2fl(this.getVerticalFov())},a.prototype.setFocalLength=function(e,t){this.setVerticalFov(this.fl2fov(e),t)},a.prototype.setReverseZoomDirection=function(e){this.__options.reverseDolly=!!e},a.prototype.setReverseHorizontalLookDirection=function(e){this.getIs2D()?r.logger.warn("Autodesk.Viewing.Navigation.setReverseHorizontalLookDirection is not applicable to 2D"):this.__options.reverseHorizontalLookDirection=!!e},a.prototype.setReverseVerticalLookDirection=function(e){this.getIs2D()?r.logger.warn("Autodesk.Viewing.Navigation.setReverseVerticalLookDirection is not applicable to 2D"):this.__options.reverseVerticalLookDirection=!!e},a.prototype.getReverseZoomDirection=function(){return this.__options.reverseDolly},a.prototype.getReverseHorizontalLookDirection=function(){return this.getIs2D()?(r.logger.warn("Autodesk.Viewing.Navigation.getReverseHorizontalLookDirection is not applicable to 2D"),!1):this.__options.reverseHorizontalLookDirection},a.prototype.getReverseVerticalLookDirection=function(){return this.getIs2D()?(r.logger.warn("Autodesk.Viewing.Navigation.getReverseVerticalLookDirection is not applicable to 2D"),!1):this.__options.reverseVerticalLookDirection},a.prototype.setZoomTowardsPivot=function(e){this.__options.dollyToPivot=!!e},a.prototype.getZoomTowardsPivot=function(){return this.__options.dollyToPivot},a.prototype.setOrbitPastWorldPoles=function(e){this.getIs2D()?r.logger.warn("Autodesk.Viewing.Navigation.setOrbitPastWorldPoles is not applicable to 2D"):this.__options.orbitPastPoles=!!e},a.prototype.getOrbitPastWorldPoles=function(){return this.getIs2D()?(r.logger.warn("Autodesk.Viewing.Navigation.orbitPastWorldPoles is not applicable to 2D"),!1):this.__options.orbitPastPoles},a.prototype.setUsePivotAlways=function(e){this.__options.usePivotAlways=!!e},a.prototype.getUsePivotAlways=function(){return this.__options.usePivotAlways},a.prototype.setUseLeftHandedInput=function(e){this.__options.useLeftHandedInput=!!e},a.prototype.getUseLeftHandedInput=function(){return this.__options.useLeftHandedInput},a.prototype.setWheelSetsPivot=function(e){this.__options.wheelSetsPivot=!!e},a.prototype.getWheelSetsPivot=function(){return this.__options.wheelSetsPivot},a.prototype.setSelectionSetsPivot=function(e){this.__options.SelectionSetsPivot=!!e},a.prototype.getSelectionSetsPivot=function(){return this.__options.SelectionSetsPivot},a.prototype.setIsLocked=function(e){this.__options.lockNavigation=!!e},a.prototype.getIsLocked=function(){return this.__options.lockNavigation},a.prototype.setLockSettings=function(e){for(var t in this.__lockSettings)Object.prototype.hasOwnProperty.call(e,t)&&(this.__lockSettings[t]=e[t])},a.prototype.getLockSettings=function(){var e={};for(var t in this.__lockSettings)e[t]=this.__lockSettings[t];return e},a.prototype.isActionEnabled=function(e){return!this.__options.lockNavigation||!0===this.__lockSettings[e]},a.prototype.setPivotSetFlag=function(e){this.__pivotIsSetFlag=!!e},a.prototype.getPivotSetFlag=function(){return this.__pivotIsSetFlag},a.prototype.setRequestFitToView=function(e){this.isActionEnabled("gotoview")&&(this.__fitToViewRequested=!!e)},a.prototype.getRequestFitToView=function(){return this.__fitToViewRequested},a.prototype.setRequestHomeView=function(e){this.isActionEnabled("gotoview")&&(this.__homeViewRequested=!!e)},a.prototype.getRequestHomeView=function(){return this.__homeViewRequested},a.prototype.setRequestTransition=function(e,t,i,n,r,o){this.__destinationView=e?{position:t.clone(),coi:i.clone(),fov:n,up:this.getCamera().up.clone(),worldUp:this.getWorldUpVector(),reorient:r,pivot:o?o.clone():i.clone()}:null},a.prototype.setRequestTransitionWithUp=function(e,t,i,n,r,o,s){this.__destinationView=e?{position:t.clone(),coi:i.clone(),fov:n,up:r.clone(),worldUp:o||this.getWorldUpVector(),reorient:!1,pivot:s?s.clone():i.clone()}:null},a.prototype.getRequestTransition=function(){return this.__destinationView},a.prototype.setTransitionActive=function(e){const t=this.__transitionActive!=e;this.__transitionActive=!!e,t&&this.fireEvent({type:s.TRANSITION_ACTIVE_FLAG_CHANGED,transitionActive:!!e})},a.prototype.getTransitionActive=function(){return this.__transitionActive},a.prototype.getWorldSize=function(e){var t=this.getCamera(),i=t.aspect,r=2*e*Math.tan(n.Math.degToRad(.5*t.fov)),o=r*i;return new n.Vector2(o,r)},a.prototype.screenToViewport=function(e,t){return e=2*e-1,t=2*(t=1-t)-1,new n.Vector3(e,t,1)},a.prototype.viewportToScreen=function(e,t){return e=(e+1)/2,t=1-(t=(t+1)/2),new n.Vector2(e,t)},a.prototype.getWorldPoint=function(e,t){var i=this.screenToViewport(e,t);e=i.x,t=i.y;var r,o=this.getCamera();o.isPerspective&&(r=(r=new n.Vector3(e,t,1)).unproject(o));var s,a,l=this.getEyeVector(),c=this.getPosition();if(!o.isPerspective||isNaN(r.x)){var h=this.getWorldSize(l.length()),u=this.getCameraRightVector(!1).multiplyScalar(.5*e*h.x),d=this.getCameraUpVector().multiplyScalar(.5*t*h.y);s=l.clone().add(u).add(d).normalize()}else s=r.sub(c).normalize();var f=this.getPivotPoint(),p=s.dot(l);return a=this.__pivotIsSetFlag&&(this.getIs2D()||o.isPerspective&&p>0)?0!==p?Math.abs(f.sub(c).dot(l))/p:f.sub(c).length():o.isPerspective?.5*(o.near+o.far):o.orthoScale,s.multiplyScalar(a).add(c)},a.prototype.getPivotPlaneDistance=function(){var e=this.getPivotPoint(),t=this.getEyeVector(),i=this.getPosition();return e.sub(i).dot(t.normalize())},a.prototype.panRelative=function(e,t,i){if(this.isActionEnabled("pan")){var n=this.getScreenViewport(),r=this.getCamera(),o=this.getWorldSize(i),s=e*o.x*n.width/r.clientWidth,a=t*o.y*n.height/r.clientHeight,l=this.getCameraRightVector(!1).multiplyScalar(s),c=this.getCameraUpVector().multiplyScalar(a),h=l.add(c);this.applyPanningConstraint2D(h),this.setView(this.getPosition().add(h),this.getTarget().add(h))}},a.prototype.dollyFromPoint=function(e,t,i){if(this.isActionEnabled("zoom")&&!(Math.abs(e)<=this.__kEpsilon)){var n=this.getPosition(),r=this.getEyeVector();if(!this.getCamera().isPerspective){var o=r.lengthSq(),s=r.dot(this.getTarget().sub(t));t=r.clone().multiplyScalar(s/o).add(t)}var a=t.clone().sub(n),l=a.length(),c=l+e;cthis.__kEpsilon){a.multiplyScalar(h),a.set(-a.x,-a.y,-a.z);var u=a.add(t);r=this.getEyeVector(),this.getCamera().isPerspective||r.multiplyScalar(h),this.setView(u,r.add(u))}}},a.prototype.toPerspective=function(){if(this.getIs2D())r.logger.warn("Autodesk.Viewing.Navigation.toPerspective is not applicable to 2D");else{var e=this.getCamera();e.isPerspective||(e.toPerspective(),e.dirty=!0)}},a.prototype.toOrthographic=function(){var e=this.getCamera();e.isPerspective&&(e.toOrthographic(),e.dirty=!0)},a.snapToAxis=function(e){var t=new n.Vector3(Math.abs(e.x),Math.abs(e.y),Math.abs(e.z));return t.x>t.y&&t.x>t.z?e.set(e.x>0?1:-1,0,0):t.y>t.x&&t.y>t.z?e.set(0,e.y>0?1:-1,0):e.set(0,0,e.z>0?1:-1),e},o.EventDispatcher.prototype.apply(a.prototype),a.Events=s},23261:(e,t,i)=>{"use strict";i.r(t),i.d(t,{OrbitDollyPanTool:()=>s});var n=i(19556),r=i(26206),o=i(35922);function s(e,t,i){this.setGlobalManager(t.globalManager);var r,s,a=this,l=.001,c=.01,h=i&&i.hasOwnProperty("dollyDragScale")?i.dollyDragScale:100,u=-1!=navigator.userAgent.search("Mac OS"),d=i&&i.disablePinchRotation,f=t.navigation,p=f.getCamera(),m=["orbit","freeorbit","dolly","pan"],g=m[0],v=[g],y=g,b=null,x=1,_=0,E=0,S=0,A=0,w=!0,T=!1,M=null,C=!1,P=33,D=34,L=37,I=38,R=39,O=40,N=48,F=187,U=189,B=-4,k=-1,V=-5,G=new THREE.Vector3,z=new THREE.Vector3,H=new THREE.Vector2,W=new THREE.Vector2,j=new THREE.Vector2,q=new THREE.Vector2,X=new THREE.Vector3,Y=new THREE.Vector3,K=new THREE.Vector3,Q=new THREE.Vector3,Z=new THREE.Vector3,$=new THREE.Vector3,J=new THREE.Vector3,ee=new THREE.Vector3,te=new THREE.Vector3,ie=new THREE.Quaternion,ne=new THREE.Plane,re=[!1,!1,!1,!1,!1,!1],oe={SHIFT:0,ALT:0,CONTROL:0,SPACE:0};this.active=!1;var se,ae=function(t){e.renderer().rolloverObjectId(0,null,0)},le=.01,ce=i&&i.hasOwnProperty("dollyScrollScale")?i.dollyScrollScale:.6,he=1,ue=5,de=.025;function fe(e,t){var i=a.getWindow(),n=0,r=0,o=i.innerWidth,s=i.innerHeight;ee.set((e-.5*o-n)/(.5*o),(.5*s+r-t)/(.5*s),0);var l=ee.length();return l>1?ee.normalize():ee.z=Math.sqrt(1-l*l),Q.copy(p.position).sub(p.pivot),$.copy(p.up).setLength(ee.y),$.add(J.copy(p.up).cross(Q).setLength(ee.x)),$.add(Q.setLength(ee.z)),$}this.getNames=function(){return m},this.getName=function(){return m[0]},this.activate=function(i){this.active=!0,v.push(i),y=i,w=t.prefs.get(o.Prefs3D.ENABLE_CUSTOM_ORBIT_TOOL_CURSOR),t.prefs.addListeners(o.Prefs3D.ENABLE_CUSTOM_ORBIT_TOOL_CURSOR,this._onPrefCursor),e.canvas.addEventListener("mouseout",ae),t.addEventListener(n.ESCAPE_EVENT,this.handleBlur)},this.deactivate=function(i){this.active=!1,t.prefs.removeListeners(o.Prefs3D.ENABLE_CUSTOM_ORBIT_TOOL_CURSOR,this._onPrefCursor);var r=v.length-1;r>0&&v[r]===i&&(v.pop(),y=v[r-1]),e.canvas.removeEventListener("mouseout",ae),t.removeEventListener(n.ESCAPE_EVENT,this.handleBlur)},this.isActive=function(){return this.active},this.adjustDollyLookSpeed=function(e){0===e?(de=.025,ue=5):((de*=e>0?1.1:.9)<1e-6&&(de=1e-6),(ue*=e>0?1.1:.9)<1e-6&&(ue=1e-6))},this.getDollySpeed=function(e,t){var i;if(!f.getZoomTowardsPivot()&&!f.getWheelSetsPivot()||p.isPerspective||f.getIs2D()){var n=f.getEyeVector(),r=f.getPosition();o=e.clone().sub(r).dot(n.normalize())*de;i=Math.abs(o).01&&(i=a)}}}else i=f.getEyeVector().length();he=i},this.initOrbit=function(){this.utilities.setTemporaryPivot(p.isPerspective&&f.getPivotPoint().sub(f.getPosition()).dot(f.getEyeVector())<=0?f.getTarget():null)},this.getActiveMode=function(){return g},this.getCursor=function(){if(!w)return null;switch(g){case"freeorbit":case"orbit":return"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAt1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAzMzP6+vri4uISEhKKioqtra2dnZ2EhIR9fX10dHRkZGQdHR3t7e3Hx8e5ubm1tbWoqKhWVlZKSko4ODgICAjv7+/o6OjMzMyxsbFOTk4pKSkXFxcEBAT29vbW1tZ6enpISEgLCwvhzeX+AAAAGXRSTlMANRO0nHRJHfnskIxQRKh89syDVwTWZjEJxPFEswAAAOFJREFUKM+1j+lygkAQhIflEAJe0Rw9u4CCeKKoSTTX+z9XoMJWWeX+ssrvZ3f19DQ5zOw/0DUMQPlmQ72bE2adBp8/Rp3CQUi3ILx+bxj4fjDs9T1Bmo6bbPPN8aDU4bjJt4nb+de789kSFyxn826jW3ICLNZZKU8nWWbrBTCRVm04U8TpjquRFf1Go0d7l8aYOrUR7FGEFr1S9LGymwthgX2gE/Kl0cHPOtF2xOWZ5QpIC93RflW4InkDoPRXesd5LJIMQPzV7tCMa7f6BvhJL79AVDmYTNQ1NhnxbI/uwB8H5Bjd4zQPBAAAAABJRU5ErkJggg==), auto";case"dolly":return"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAgVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8mJiYAAADNzc2/v7+fn59paWlPT08MDAwICAj6+vqpqak7Ozv29vby8vLp6em2traAgIBkZGRZWVlAQEAaGhpISEgkS7tbAAAAFHRSTlMAOvhpZD8mkQWegMy9qY1YVE01EYiqlE0AAADZSURBVCjPbY9ZloMgEAAbEbfsmRZZXbJn7n/AAX2RQVN/VD26AXLOeZLDGo6IbfI9tHq8cdxuj1HwvgCoaiHqKoRk+M3hB9jueUW8PnfsE/bJ3vms7nCkq7NoE3s99AXxoh8vFoXCpknrn5faAuJCenT0xPkYqnxQFJaU0gdZrsKm8aHZrAIffBj40mc1jsTfIJRWegq6opTMvlfqLqYg7kr1ZB7jFgeaMC59N//8O4WZ1IiPF8b5wMHcJn8zB4g4mc77zpxgAbMSUVoGK4iV0hL4wrksz+H0Bw5+E+HrniDQAAAAAElFTkSuQmCC), auto";case"pan":return"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAABHVBMVEUAAABPTk4AAAAAAAAJCQkRERE0MzQQEBAODg4QEBB4d3dbWlo9PDw/Pj4vLy8sLCwZGBgWFhYcHBwKCgoSEhIAAAAKCgoICAgKCgoQEBAODg4EBAQICAgPDw8REREMDAx2dnY0NDQvLy9QUFAaGhomJSYjIyM7OjokJCQNDA0mJiYNDQ0AAAAUFBQJCQkQEBAEBAQNDQ0PDw8VFRX///+amJkAAAD5+fnz8/PKycn9/f339vbi4eLR0dDNzMyAgIB8e3xycHH7+/vw7+/o6OjX1ta7urq4t7iwsLCnp6eioqKbmppva21OTk74+Pjl5eXc3Nzb29vLy8vDw8PDwsKrqqqdnZ2WlpaSkpKTkZKMiouEg4NkZGRISEgxLzBpgbsEAAAANHRSTlMA+fiQXgngKSYG/vX17uvBuqackpCNg3BpUkpAPBwTDvj18+vl0s/NwrOwoZZ+TDg4NBkBGrzX8QAAAP5JREFUKM99j9Vuw0AQRdeuKZyGkyZNmbnXDLHDVGb8/8/oy7paK1bO0+oc7WiGnGiaxq+QRTQAOh8f9Jv4H/Ge8PZPrCdlvkxfYluUT2WyyCq3mZ7unwlKVLcqOzA/Mf71j0TWJ/Ym6rPeca05Ni4iIevYc7yoUD2zQFhq71BdI9nvBeBabFDSPe8DswlUc1Riw3VxbH0NHBUPQ0jrbDnPYDjALQBMq9E7nkC5y7VDKTZlUg8Q0lmjvl74zlYErgvKa42GPKf3/a0kQmYCDY1SYMDosqMoiWrGwz/uAbNvc/fNon4kXRKGq+PUo2Mb96afV0iUxqGU2s4VBbKUP65NL/LKF+7ZAAAAAElFTkSuQmCC), auto"}return null},this.getMotionDelta=function(e,t){var i=f&&f.getReverseZoomDirection()?-1.5:1.5;u&&(i*=-1),re[0]&&(z.x+=c,j.x+=20),re[1]&&(z.x-=c,j.x-=20),re[2]&&(z.y+=c,j.y+=20),re[3]&&(z.y-=c,j.y-=20),re[4]&&(z.z+=i),re[5]&&(z.z-=i);var n=z.x-G.x,r=z.y-G.y,o=z.z-G.z;Math.abs(n)k)&&this.controller.setIsLocked(!0),0!==o||0!==a||0!==l){switch(g){case"orbit":this.utilities.autocam&&this.utilities.autocam.startState&&(q.x=-q.x,M&&this.utilities.autocam.orbit(j,M,q.multiplyScalar(2),this.utilities.autocam.startState));break;case"freeorbit":!function(){if(f.isActionEnabled("orbit")){Q.subVectors(p.position,p.pivot),Z.subVectors(p.position,p.target);var e=Z.length();Z.normalize();var t=Math.acos(Y.dot(K)/Y.length()/K.length());t&&(t*=2,te.crossVectors(Y,K).normalize(),ie.setFromAxisAngle(te,-t),Q.applyQuaternion(ie),p.up.applyQuaternion(ie),K.applyQuaternion(ie),Z.applyQuaternion(ie),Y.copy(K)),p.position.addVectors(p.pivot,Q),p.target.subVectors(p.position,Z.multiplyScalar(e)),p.dirty=!0}}();break;case"dolly":var c,u=new THREE.Vector2;l*=ce,V>=0?(a=-a,l=Math.abs(o)>Math.abs(a)?o:a,f.getReverseZoomDirection()&&(l*=-1),l*=h,o=0,a=0,u=f.viewportToScreen(0,0)):(e=f.getScreenViewport(),r&&s?(u.x=r/e.width,u.y=s/e.height):u=f.viewportToScreen(0,0)),!f.getIs2D()&&f.getZoomTowardsPivot()?this.coiIsActive()?c=f.getPivotPoint():(u=f.viewportToScreen(0,0),c=f.getWorldPoint(u.x,u.y)):c=f.getWorldPoint(u.x,u.y),f.dollyFromPoint(l*this.getDollySpeed(c,l<0),c,this.getFitBounds());break;case"pan":f.panRelative(-o,a,he);break;case"dollypan":0===o&&0===a||f.panRelative(-o,a,he),e=f.getScreenViewport(),c=f.getWorldPoint(r/e.width,s/e.height);var v=f.getPosition(),y=f.getIs2D()?v.sub(c).length():he,A=(_/E-1)*y;f.dollyFromPoint(A,c,this.getFitBounds());var w=new THREE.Vector3,P=new THREE.Quaternion,D=f.getCameraUpVector(),L=w.copy(p.position).sub(p.target).normalize();P.setFromAxisAngle(L,1.2*S),D.applyQuaternion(P),f.getIs2D()||d&&("pinch"===b||"pan"===b)||f.setCameraUpVector(D),_=E,x,he=y+A}n=!0}return this.stepMotionDelta(X,"pan"!==g&&"dollypan"!==g),V===k&&Math.abs(l)<.01&&(this.interactionEnd(k),z.z=0,G.z=0,i=!0,n=!0),(oe.SHIFT||oe.ALT)&&-1!==m.indexOf(t.getActiveNavigationTool())&&(n=!0),!C&&(i||V>-5)&&(V>k&&(G.copy(z),this.utilities.removeTemporaryPivot()),this.utilities.autocam.endInteraction(),V=-5,T&&this.controller.setIsLocked(!1),T=!1,M=null,b=null),n?this.utilities.pivotActive(f.getPivotSetFlag(),V<=k):this.utilities.pivotUpdate(),p.dirty},this.checkInteractionMode=function(){var e=this.getTriggeredMode();e!==g&&("pan"===(g=e)&&V>k||"dollypan"===g)&&this.initTracking(G.x,G.y)},this.interactionStart=function(e,t){(t||e>V)&&(V=e,C=!0,e>k&&("pan"===g&&this.initTracking(G.x,G.y),"orbit"===g&&this.initOrbit()),!f.getSelectionSetsPivot()&&this.utilities.pivotActive(f.getPivotSetFlag(),e===k),this.utilities.autocam&&(this.utilities.autocam.sync(p),this.utilities.autocam.startInteraction(W.x,W.y),M=W.clone()))},this.interactionCheck=function(){(re[0]||re[1]||re[2]||re[3]||re[4]||re[5]||oe.SHIFT||oe.CONTROL||oe.ALT||oe.SPACE)&&this.interactionStart(B,!0)},this.interactionEnd=function(e){e===V&&(e!==k&&this.utilities.pivotActive(!1),C=!1)},this.isInteractionActive=function(){return C},this.handleWheelInput=function(t,i){if(r=i.canvasX,s=i.canvasY,this.isDragging)return!1;if(f.getIs2D()){var n=f.getScreenViewport(),o=e.intersectGround(r+n.width,s+n.height);this.utilities.setPivotPoint(o,!0,!0)}else this.setPivotPointFromInput(r,s);return f.getReverseZoomDirection()&&(t*=-1),z.z+=t,0!=t&&this.interactionStart(k),!0},this.resetKeys=function(){this.autoMove(-1,!1),oe.SHIFT=0,oe.CONTROL=0,oe.ALT=0,oe.SPACE=0},this.autoMove=function(e,t){t&&this.isDragging||(e<0?re[0]=re[1]=re[2]=re[3]=re[4]=re[5]=t:re[e]=t,t||this.interactionEnd(B),this.interactionCheck())},this.updateModifierState=function(e){oe.CONTROL=u&&e.metaKey||e.ctrlKey?1:0,oe.SHIFT=e.shiftKey?1:0,oe.ALT=e.altKey?1:0},this.handleKeyDown=function(e,t){this.updateModifierState(e);var i=!1;if(u&&oe.CONTROL)return this.autoMove(-1,!1),this.interactionEnd(B),!1;switch(t){case F:this.adjustSpeed(1),i=!0;break;case U:this.adjustSpeed(-1),i=!0;break;case N:this.adjustSpeed(0),i=!0;break;case L:this.autoMove(0,!0),i=!0;break;case R:this.autoMove(1,!0),i=!0;break;case P:this.autoMove(2,!0),i=!0;break;case D:this.autoMove(3,!0),i=!0;break;case I:this.autoMove(4,!0),i=!0;break;case O:this.autoMove(5,!0),i=!0;break;default:return!1}return this.isDragging||this.interactionStart(B),i},this.handleKeyUp=function(e,t){this.updateModifierState(e);var i=!1;if(u&&oe.CONTROL)return this.autoMove(-1,!1),this.interactionEnd(B),!1;switch(t){case L:this.autoMove(0,!1),i=!0;break;case R:this.autoMove(1,!1),i=!0;break;case P:this.autoMove(2,!1),i=!0;break;case D:this.autoMove(3,!1),i=!0;break;case I:this.autoMove(4,!1),i=!0;break;case O:this.autoMove(5,!1),i=!0;break;default:return!1}return i&&(this.interactionEnd(B),C||this.interactionCheck()),i},this.handleDollyPan=function(e){r=e.canvasX,s=e.canvasY;var t=f.getScreenViewport();j.x=r,j.y=s,z.x=j.x/t.width,z.y=j.y/t.height,E=function(e){var t=e.pointers[1].clientX-e.pointers[0].clientX,i=e.pointers[1].clientY-e.pointers[0].clientY;return Math.sqrt(t*t+i*i)}(e);var i,n,o=THREE.Math.degToRad(e.rotation);S=o-A,Math.abs(S)>1&&(S=0),A=o,i=e.type,n="start",-1!==i.indexOf(n,i.length-n.length)&&(_=E,1,S=0,A=o),x=e.scale},this.handleGesture=function(e){switch(e.type){case"dragstart":return b="drag",this.handleButtonDown(e,0);case"dragmove":return"drag"!==b&&(this.handleButtonDown(e,0),b="drag"),this.handleMouseMove(e);case"dragend":return"drag"===b&&(this.handleButtonUp(e,0),b=null,!0);case"panstart":return b="pan",this.handlePanStart(e),this.handleDollyPan(e),!0;case"panmove":return"pan"!==b&&(b="pan",this.handlePanStart(e)),this.handleDollyPan(e);case"panend":return"pan"===b&&(this.isDragging=!1,this.handleDollyPan(e),this.interactionEnd(3),!0);case"pinchstart":return this.setPivotPointFromInput(e.center.x,e.center.y),this.isDragging=!0,b="pinch",G.x=.5*(e.normalizedX+1),G.y=1-.5*(e.normalizedY+1),H.set(e.canvasX,e.canvasY),W.set(e.canvasX,e.canvasY),T=!1,this.interactionStart(3),this.handleDollyPan(e),!0;case"pinchmove":return"pinch"===b&&this.handleDollyPan(e);case"pinchend":return"pinch"===b&&(this.isDragging=!1,this.handleDollyPan(e),this.interactionEnd(3),!0)}return!1},this.handleButtonDown=function(e,t){return this.updateModifierState(e),G.x=.5*(e.normalizedX+1),G.y=1-.5*(e.normalizedY+1),W.set(e.canvasX,e.canvasY),z.copy(G),j.copy(W),Y.copy(fe(e.canvasX,e.canvasY)),K.copy(Y),r=e.canvasX,s=e.canvasY,this.isDragging=!0,this.interactionStart(t),!0},this.handlePanStart=function(e){return this.isDragging=!0,G.x=.5*(e.normalizedX+1),G.y=1-.5*(e.normalizedY+1),H.set(e.canvasX,e.canvasY),W.set(e.canvasX,e.canvasY),this.interactionStart(3),!0},this.handleButtonUp=function(e,t){return this.updateModifierState(e),z.x=.5*(e.normalizedX+1),z.y=1-.5*(e.normalizedY+1),j.set(e.canvasX,e.canvasY),K.copy(fe(e.canvasX,e.canvasY)),Y.copy(K),r=e.canvasX,s=e.canvasY,this.interactionEnd(t),this.isDragging=!1,!0},this.handleMouseMove=function(t){return this.updateModifierState(t),this.isDragging?(z.x=.5*(t.normalizedX+1),z.y=1-.5*(t.normalizedY+1),j.set(t.canvasX,t.canvasY),K.copy(fe(t.canvasX,t.canvasY)),r=t.canvasX,s=t.canvasY,!0):(G.x=.5*(t.normalizedX+1),G.y=1-.5*(t.normalizedY+1),W.set(t.canvasX,t.canvasY),z.x=G.x,z.y=G.y,j.copy(W),r=t.canvasX,s=t.canvasY,t.target===e.canvas&&e.rolloverObject(r,s),!1)},this.handleBlur=e=>{this.resetKeys(),this.interactionEnd(V)},this._onPrefCursor=function(e){w=e}.bind(this)}r.GlobalManagerMixin.call(s.prototype)},18310:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SelectionType:()=>n});var n={MIXED:1,REGULAR:2,OVERLAYED:3}},27579:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MultiModelSelector:()=>h,Selector:()=>c});var n=i(63430),r=i(18310),o=i(57480),s=i(83081),a=i(19556),l=i(72091);function c(e,t){var i=this;this.selectedObjectIds={},this.selectionCount=0,this.selectionMode=n.SelectionMode.LEAF_OBJECT,this.lockedNodes=[];var a={};function c(){return t.getData().instanceTree}function h(i){var n=c();if(a[i]>0)a[i]--,0==a[i]&&e.highlightObjectNode(t,i,!1);else if(a[i]<0)throw"Selection State machine broken. Negatively selected object!";n&&n.enumNodeChildren(i,(function(e){h(e)}),!1)}function u(i,n,o){var s=c();if(a[i])a[i]++;else{switch(o){default:case r.SelectionType.MIXED:e.highlightObjectNode(t,i,!0,n);break;case r.SelectionType.REGULAR:e.highlightObjectNode(t,i,!0,!0);break;case r.SelectionType.OVERLAYED:e.highlightObjectNode(t,i,!0,!1)}a[i]=1}s&&s.enumNodeChildren(i,(function(e){u(e,!0,o)}),!1)}function d(e){if(void 0!==e&&i.selectedObjectIds[e])return!0}function f(n,o){if(!i.isNodeSelectionLocked(n)){var s=c();if(o=o||r.SelectionType.MIXED,s){const r=function(){var n;const r="ifc"===(null===(n=t.getData())||void 0===n||null===(n=n.loadOptions)||void 0===n?void 0:n.fileExt),o=void 0!==e.api.prefs.getPrefFromLocalStorage(Autodesk.Viewing.Private.Prefs3D.SELECTION_MODE);return r&&!o?Autodesk.Viewing.SelectionMode.FIRST_OBJECT:i.selectionMode}();if(n=s.findNodeForSelection(n,r),!s.isNodeSelectable(n))return}d(n)||(i.selectedObjectIds[n]=o,i.selectionCount++,u(n,!1,o))}}function p(e){d(e)&&(h(e),i.selectedObjectIds[e]=0,i.selectionCount--)}this.getInstanceTree=c,this.hasSelection=function(){return i.selectionCount>0},this.getSelectionLength=function(){return i.selectionCount},this.getSelection=function(){var e=[],t=i.selectedObjectIds;for(var n in t)if(t[n]){var r=parseInt(n);e.push(r)}return e},this.isSelected=function(e){return d(e)},this.clearNodeSelection=function(e){return void 0!==e&&0!==this.selectionCount&&(h(e),delete i.selectedObjectIds[e],!0)},this.clearSelection=function(e){if(this.selectionCount>0){var t=i.selectedObjectIds;for(var n in t){var r=parseInt(n);void 0!==r&&h(r)}return i.selectedObjectIds={},i.selectionCount=0,!0}},this.deselectInvisible=function(){var n=!1,r=i.selectedObjectIds,o=e.visibilityManager;for(var s in r){var a=parseInt(s);a&&!o.isNodeVisible(t,a)&&(p(a),n=!0)}return n},this.toggleSelection=function(e,i){e||t.isLeaflet()?d(e)?p(e):f(e,i):s.logger.error("Attempting to select node 0.",(0,o.errorCodeString)(o.ErrorCodes.VIEWER_INTERNAL_ERROR))},this.setSelectionMode=function(e){this.clearSelection(!0),this.selectionMode=e},this.isNodeSelectionLocked=function(e){if(-1===e)return!1;var t=c();return t?t.isNodeSelectionLocked(e):-1!==i.lockedNodes.indexOf(e)},this.lockSelection=function(e,t){var n=c();function r(e,t){if(e&&-1!==e)if(t)-1===i.lockedNodes.indexOf(e)&&(i.lockedNodes.push(e),i.clearNodeSelection(e));else{const t=i.lockedNodes.indexOf(e);i.lockedNodes.splice(t,1)}}e=Array.isArray(e)?e:[e],n?e.forEach((function(e){n.enumNodeChildren(e,(function(e){n.lockNodeSelection(e,!1),r(e,t),t&&n.lockNodeSelection(e,t)}),!0)})):e.forEach((e=>{r(e,t)}))},this.setSelection=function(e,t){if(!function(e){if(i.selectionCount!==e.length)return!1;for(var t=0;t{s[t.remapDbId(e)]=i.selectedObjectIds[e]})),i.selectedObjectIds=s;for(o=0;o1&&s.logger.warn("This selection call does not yet support multiple models.")}function n(i){for(var n,r=[],o=0;o1&&s.logger.warn("Use getAggregateSelection instead of getSelection when there are multiple models in the scene."),t[0]?t[0].selector.getSelection():[]},this.getAggregateSelection=function(){for(var e=[],i=0;i{const t=e.selector.lockedNodes.slice();this.lockSelection(t,!1,e)}))},this.setSelection=function(e,r,o,s){if(!this.selectionDisabled){if(e&&0!==e.length){if(r)for(var a=0;a1&&void 0!==arguments[1])||arguments[1];if(!this.selectionDisabled){if(e&&0!==e.length)for(var i=0;i{"use strict";i.r(t),i.d(t,{ToolController:()=>a});var n=i(83081),r=i(19556),o=i(49930),s=i(26206);function a(e,t,i,s,l){this.setGlobalManager(t.globalManager),this.domElement=t.canvasWrap,this.selector=e.selector,this.autocam=i,this.lastClickX=-1,this.lastClickY=-1,this.scrollInputEnabled=!0,this.keyMapCmd=!0,this.propagateInputEventTypes=[];var c=-1!==navigator.userAgent.search("Mac OS"),h=-1!==navigator.userAgent.search("Firefox"),u=-1!==navigator.userAgent.search("Chrome"),d=-1!==navigator.userAgent.search("Safari")&&!u,f={},p={},m={},g=[],v=!1,y=-1,b=-1,x=!1,_=null,E=!1,S={},A=this;function w(e){return e.getPriority instanceof Function&&e.getPriority()||0}function T(e,i){return t.navigation.getUseLeftHandedInput()&&0===e||h&&1===e||c&&!d&&0===e&&i.ctrlKey}this.__registerToolByName=function(e,t){f[t]=e},this.registerTool=function(e,t){var i=e.getNames();if(!i||0===i.length)return n.logger.warn("Cannot register tool with no name."),!1;for(var r=!1,o=0;o{const i=e.getName();t?this.activateTool(i):this.deactivateTool(i)};m[i[o]]=t&&t instanceof Function?t:n,r=!0}return e.utilities=s,e.controller=this,e.register&&e.register(),r},this.deregisterTool=function(e){this.deactivateTool(e.getName());var t=e.getNames();if(!t||0===t.length)return!1;for(var i=t.length;--i>=0;)this.__deregisterToolName(t[i]);return e.deregister&&e.deregister(),e.utilities=null,e.controller=null,!0},this.__deregisterToolName=function(e){e in f&&(!function(e){for(var t=g.length;--t>=0;)g[t].activeName===e&&(f[e].deactivate(e),g.splice(t,1))}(e),delete f[e])},this.getTool=function(e){return f[e]},this.getActiveToolName=function(){var e=g.length;return e>0?g[e-1].activeName:"default"},this.getActiveTool=function(){var e=g.length;return e>0?g[e-1]:f.default},this.getActiveTools=function(){return g.slice()},this.isToolActivated=function(e){for(var t=0;t=0;)if(g[i].activeName===e){const n=f[e];return(!n.count||n.count<=1)&&(1!=n.count&&console.warn("Deactivating tool without activation: "+e),g.splice(i,1)),n.count--,n.deactivate(e),t.dispatchEvent({type:r.TOOL_CHANGE_EVENT,toolName:e,tool:n,active:!1}),!0}return n.logger.warn("deactivateTool not found: "+e),!1},this.getToolNames=function(){return Object.keys(f)},this.setDefaultTool=function(e){var t=this.getDefaultTool();return!(!e||e===t)&&(this.__registerToolByName(e,"default"),t&&t.deactivate("default"),e.activate("default"),!0)},this.getDefaultTool=function(){return f.default},this.setDefaultTool(l),this.setIsLocked=function(e){var t=v;return v=!!e,t},this.getIsLocked=function(){return v},this.__checkCursor=function(){for(var e=null,i=g.length;--i>=0;){var n=g[i];if(n.getCursor&&(e=n.getCursor()))break}e||(e="auto"),_!=e&&(t.canvas.style.cursor=e,_=e)},this.update=function(e){this.__checkCursor();var i=!1;s&&s.update()&&(i=!0);for(var n=g.length;--n>=0;){var r=g[n];r.update&&r.update(e)&&(i=!0)}if(t.navigation.getCamera().dirty?(t.navigation.updateCamera(),i=!0,this.cameraUpdated=!0):this.cameraUpdated=!1,i)t.navigation.updateCamera(),this.moveDelay=Date.now()+150;else if(0!==this.moveDelay){this.moveDelay-Date.now()>0?i=!0:this.moveDelay=0}return i},this.__clientToCanvasCoords=function(t,i,n){var r=e.getCanvasBoundingClientRect(),o=r.width,s=r.height,a=t.clientX-r.left,l=t.clientY-r.top;t.canvasX=a,t.canvasY=l,t.normalizedX=a/o*2-1,t.normalizedY=(s-l)/s*2-1,i&&i.set(a/o,l/s,0),n&&n.set(a,l)},this.__invokeStack=function(e,t,i){for(var n=g.length;--n>=0;){var r=g[n];if(r&&r[e]&&r[e](t,i))return!0}var o=this.getDefaultTool();return!(!o[e]||!o[e](t,i))},this.distributeEvent=function(e,t,i){return this.__invokeStack(e,t,i)},this.handleResize=function(){t.navigation.setScreenViewport(t.container.getBoundingClientRect());for(var e=g.length;--e>=0;){var i=g[e];i.handleResize&&i.handleResize()}},this.handleSingleClick=function(e){var t=this.applyButtonMappings(e);this.lastClickX=e.clientX,this.lastClickY=e.clientY,this.__invokeStack("handleSingleClick",e,t)&&this.__onEventHandled(e)},this.handleDoubleClick=function(e){var t=this.applyButtonMappings(e);this.__invokeStack("handleDoubleClick",e,t)&&this.__onEventHandled(e)},this.handleSingleTap=function(e){this.lastClickX=e.canvasX,this.lastClickY=e.canvasY,this.__invokeStack("handleSingleTap",e)&&this.__onEventHandled(e)},this.handleDoubleTap=function(e){this.lastClickX=e.canvasX,this.lastClickY=e.canvasY,this.__invokeStack("handleDoubleTap",e)&&this.__onEventHandled(e)},this.handleWheelInput=function(e,t){this.__invokeStack("handleWheelInput",e,t)&&this.__onEventHandled(t)},this.applyButtonMappings=function(e){var i=e.button;return"buttons"in e&&(e.firefoxSpoof?i=0:!x||1&e.buttons?2===i&&1&e.buttons&&(i=0,e.firefoxSpoof=x=!0):(e.firefoxSpoof=!0,x=!1,i=0)),t.navigation.getUseLeftHandedInput()&&(i=0===i?2:2===i?0:i),i},this.applyKeyMappings=function(e){switch(e.keyCode){case o.KeyCode.EQUALSMOZ:return o.KeyCode.EQUALS;case o.KeyCode.DASHMOZNEW:case o.KeyCode.DASHMOZ:return o.KeyCode.DASH}return e.keyCode},this.handleKeyDown=function(e){let t;!this.keyMapCmd||!c||"MetaLeft"!=e.code&&"MetaRight"!=e.code?(t=this.applyKeyMappings(e),t&&this.__invokeStack("handleKeyDown",e,t)&&this.__onEventHandled(e)):this.handleCmdKeyEvent(e,"keydown")},this.handleKeyUp=function(e){let t;!this.keyMapCmd||!c||"MetaLeft"!=e.code&&"MetaRight"!=e.code?(t=this.applyKeyMappings(e),t&&this.__invokeStack("handleKeyUp",e,t)&&this.__onEventHandled(e)):this.handleCmdKeyEvent(e,"keyup")},this.handleCmdKeyEvent=function(e,t){this.__onEventHandled(e);var i=new KeyboardEvent(t,{key:"Control",code:"MetaLeft"==e.code?"ControlLeft":"ControlRight",location:e.location,ctrlKey:!0,metaKey:!1,repeat:e.repeat,isComposing:e.isComposing,charCode:0,keyCode:17,which:17});window.dispatchEvent(i)},this.handleButtonDown=function(e,t){this.__invokeStack("handleButtonDown",e,t)&&this.__onEventHandled(e)},this.handleButtonUp=function(e,t){this.__invokeStack("handleButtonUp",e,t)&&this.__onEventHandled(e)},this.handleMouseMove=function(e){this.__invokeStack("handleMouseMove",e)&&this.__onEventHandled(e)},this.handleBlur=function(e){this.__invokeStack("handleBlur",e)&&this.__onEventHandled(e)},this.keydown=function(e){if(!a._lastTouchedElement||A.domElement.contains(a._lastTouchedElement)){var t=A.getDocument();if(!(t.activeElement instanceof HTMLInputElement||t.activeElement instanceof HTMLTextAreaElement||t.activeElement instanceof HTMLSelectElement)){if(t.activeElement){var i=t.activeElement.getAttribute("contenteditable");if("true"===i||""===i)return}A.handleKeyDown(e)}}},this.keyup=function(e){A.handleKeyUp(e)},this.mousedown=function(e){var t=A.getDocument();t.activeElement&&t.activeElement.blur&&t.activeElement.blur(),A.__clientToCanvasCoords(e);var i=A.applyButtonMappings(e);if(A.handleButtonDown(e,i),y=e.canvasX,b=e.canvasY,T(i,e)){var n=S,r=void 0!==n.time&&e.timeStamp-n.time<500,o=void 0!==n.x&&void 0!==n.y&&Math.abs(n.x-e.canvasX)<=2&&Math.abs(n.y-e.canvasY)<=2;(!r||!o||n.clickCount&&2<=n.clickCount)&&(n.clickCount=0),n.clickCount?1===n.clickCount&&(n.clickCount=2):(n.clickCount=1,n.x=e.canvasX,n.y=e.canvasY,n.time=e.timeStamp)}A.addDocumentEventListener("mouseup",(function e(t){A.applyButtonMappings(t)===i&&(A.removeDocumentEventListener("mouseup",e),A.mouseup(t))}),!1),A.registerWindowMouseMove()},this.mousemove=function(e){A.__clientToCanvasCoords(e);var t=y-e.canvasX,i=b-e.canvasY;(Math.abs(t)>2||Math.abs(i)>2)&&(y=-1,b=-1),A.handleMouseMove(e)},this.mouseup=function(e){A.__clientToCanvasCoords(e);var t=A.applyButtonMappings(e);A.handleButtonUp(e,t);var i=y-e.canvasX,n=b-e.canvasY;if(y=-1,b=-1,Math.abs(i)<=2&&Math.abs(n)<=2&&A.handleSingleClick(e),T(t,e)){var r=S;2===r.clickCount&&(A.handleDoubleClick(e),r.clickCount=0,r.x=void 0,r.y=void 0,r.time=void 0)}A.unregisterWindowMouseMove()},this.doubleclick=function(e){A.__clientToCanvasCoords(e),y=e.canvasX,b=e.canvasY,A.handleDoubleClick(e)},this.mousewheel=function(e){if(A.scrollInputEnabled){A.__clientToCanvasCoords(e);var t=0;if(e.wheelDelta)t=e.wheelDelta/40;else if(e.detail)t=-e.detail;else if(e.deltaY){var i=h?1:40;t=-e.deltaY/i}A.handleWheelInput(t,e)}},this.blur=function(e){A.handleBlur(e)},this.mouseover=function(e){a._lastTouchedElement=e.target},this.registerWindowMouseMove=function(){A.addWindowEventListener("mousemove",A.mousemove),A.addWindowEventListener("mouseover",A.mouseover),A.domElement.removeEventListener("mousemove",A.mousemove),A.domElement.removeEventListener("mouseover",A.mouseover)},this.unregisterWindowMouseMove=function(){A.removeWindowEventListener("mousemove",A.mousemove),A.removeWindowEventListener("mouseover",A.mouseover),A.domElement.addEventListener("mousemove",A.mousemove),A.domElement.addEventListener("mouseover",A.mouseover)},this.enableMouseButtons=function(e){e&&!E?(this.domElement.addEventListener("mousedown",this.mousedown),this.domElement.addEventListener("dblclick",this.doubleclick),this.domElement.addEventListener("mousemove",this.mousemove),this.domElement.addEventListener("mouseover",this.mouseover)):!e&&E&&(this.domElement.removeEventListener("mousedown",this.mousedown),this.domElement.removeEventListener("dblclick",this.doubleclick),this.domElement.removeEventListener("mousemove",this.mousemove),this.domElement.removeEventListener("mouseover",this.mouseover));var t=E;return E=e,t},this.domElement.addEventListener("mousewheel",this.mousewheel,!1),this.domElement.addEventListener("DOMMouseScroll",this.mousewheel,!1),A.addWindowEventListener("keydown",this.keydown,!1),A.addWindowEventListener("keyup",this.keyup,!1),A.addWindowEventListener("blur",this.blur,!1),this.uninitialize=function(){for(this.domElement.removeEventListener("mousemove",this.mousemove),this.domElement.removeEventListener("mouseover",this.mouseover),this.removeWindowEventListener("mousemove",this.mousemove),this.removeWindowEventListener("mouseover",this.mouseover),this.removeWindowEventListener("keydown",this.keydown),this.removeWindowEventListener("keyup",this.keyup),this.removeWindowEventListener("blur",this.blur),this.domElement=null,this.selector=null,this.autocam=null,v=!1;g.length>0;)this.deactivateTool(g[g.length-1].activeName);f=null,g=null,A=null,s=null,t=null,e=null,a._lastTouchedElement=null},this.set2DMode=function(){},this.setAutocam=function(){},this.syncCamera=function(){},this.recordHomeView=function(){var e=t.navigation.getCamera();i.sync(e),i.setHomeViewFrom(e)},this.setMouseWheelInputEnabled=function(e){this.scrollInputEnabled=e},this.setModalityMap=function(e){p={};for(let t in e)this.setToolModality(t,e[t])},this.getModalityMap=function(){return Object.assign({},p)},this.getToolModality=function(e){return p[e]},this.setToolModality=function(e,t){e?t?p[e]=t:n.logger.warn("Cannot add tool modality. Missing tool map."):n.logger.warn("Cannot add tool modality. Missing tool name.")},this.__onEventHandled=function(e){this.propagateInputEventTypes.includes(e.type)||(e.preventDefault(),e.stopPropagation())}}Object.defineProperty(a,"_lastTouchedElement",{value:null,writable:!0}),s.GlobalManagerMixin.call(a.prototype)},74481:(e,t,i)=>{"use strict";function n(){this.names=["unnamed"],this.getNames=function(){return this.names},this.getName=function(){return this.names[0]},this.getPriority=function(){return 0},this.register=function(){},this.deregister=function(){},this.activate=function(e,t){},this.deactivate=function(e){},this.update=function(e){return!1},this.handleSingleClick=function(e,t){return!1},this.handleDoubleClick=function(e,t){return!1},this.handleSingleTap=function(e){return!1},this.handleDoubleTap=function(e){return!1},this.handleKeyDown=function(e,t){return!1},this.handleKeyUp=function(e,t){return!1},this.handleWheelInput=function(e){return!1},this.handleButtonDown=function(e,t){return!1},this.handleButtonUp=function(e,t){return!1},this.handleMouseMove=function(e){return!1},this.handleGesture=function(e){return!1},this.handleBlur=function(e){return!1},this.handleResize=function(){}}i.r(t),i.d(t,{ToolInterface:()=>n})},63841:(e,t,i)=>{"use strict";i.r(t),i.d(t,{UnifiedCamera:()=>o});var n=i(72091),r=i(83081);class o extends n.Camera{constructor(e,t){super(),this.fov=45,this.near=.1,this.far=1e5,this.aspect=e/t,this.left=-e/2,this.right=e/2,this.top=t/2,this.bottom=-t/2,this.clientWidth=e,this.clientHeight=t,this.target=new n.Vector3(0,0,-1),this.worldup=new n.Vector3(0,1,0),this.viewInverseEnv=new n.Matrix4,this.projScreenMatrix=new n.Matrix4,this.orthographicCamera=new n.OrthographicCamera(this.left,this.right,this.top,this.bottom,this.near,this.far),this.perspectiveCamera=new n.PerspectiveCamera(this.fov,this.aspect,this.near,this.far),this.zoom=1,this.globalOffset=new n.Vector3,this.toPerspective()}get isOrthographicCamera(){return!this.isPerspective}clone(e){return e=e||new o(2*this.right,2*this.top),n.Camera.prototype.clone.call(this,e),e.position.copy(this.position),e.up.copy(this.up),this.target&&(e.target=this.target.clone()),this.worldup&&(e.worldup=this.worldup.clone()),this.worldUpTransform&&(e.worldUpTransform=this.worldUpTransform.clone()),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e.fov=this.fov,e.aspect=this.aspect,e.zoom=this.zoom,e.clientWidth=this.clientWidth,e.clientHeight=this.clientHeight,e.isPerspective=this.isPerspective,e.globalOffset=this.globalOffset.clone(),e.orthoScale=this.orthoScale,e.updateProjectionMatrix(),e}__computeFovPosition(e){if(Math.abs(this.fov-e)<=1e-4)return this.position.clone();var t,i,r=this.target.clone().sub(this.position),o=r.clone().normalize(),s=n.Math.degToRad(this.fov),a=n.Math.degToRad(e),l=Math.tan(.5*s)/Math.tan(.5*a);this.pivot?(t=(new n.Plane).setFromNormalAndCoplanarPoint(o.clone().negate(),this.pivot).distanceToPoint(this.position),i=o.clone().multiplyScalar(t).add(this.position)):(t=r.length(),i=this.target);t*=l;var c=o.multiplyScalar(-t);return i.clone().add(c)}toPerspective(){!this.isPerspective&&this.saveFov&&(this.position.copy(this.__computeFovPosition(this.saveFov)),this.fov=this.saveFov),this.perspectiveCamera.aspect=this.aspect,this.perspectiveCamera.near=this.near,this.perspectiveCamera.far=this.far,this.perspectiveCamera.fov=this.fov/this.zoom,this.perspectiveCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspectiveCamera.projectionMatrix,this.isPerspective=!0}toOrthographic(){if(this.isPerspective){this.saveFov=this.fov;var e=o.ORTHO_FOV;this.position.copy(this.__computeFovPosition(e)),this.fov=e}this.orthoScale=this.target.clone().sub(this.position).length();var t=.5*this.orthoScale,i=t*this.aspect;this.left=this.orthographicCamera.left=-i,this.right=this.orthographicCamera.right=i,this.top=this.orthographicCamera.top=t,this.bottom=this.orthographicCamera.bottom=-t,this.orthographicCamera.near=this.near,this.orthographicCamera.far=this.far,this.orthographicCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthographicCamera.projectionMatrix,this.isPerspective=!1}updateProjectionMatrix(){this.isPerspective?this.toPerspective():this.toOrthographic()}setSize(e,t){this.aspect=e/t,this.left=-e/2,this.right=e/2,this.top=t/2,this.bottom=-t/2}setFov(e){this.fov=e,this.updateProjectionMatrix()}setLens(e,t){void 0===t&&(t=24);var i=2*n.Math.radToDeg(Math.atan(t/(2*e)));return this.setFov(i),i}setViewFromBox(e,t){o.getViewParamsFromBox(e,t,this.aspect,this.up,this.fov,this),this.updateCameraMatrices()}updateCameraMatrices(){this.lookAt(this.target),this.updateProjectionMatrix(),this.updateMatrixWorld()}setView(e){if(e.position&&this.position.copy(e.position),e.target&&this.target.copy(e.target),e.up&&this.up.copy(e.up),void 0!==e.isPerspective&&(this.isPerspective=e.isPerspective),void 0!==e.orthoScale){this.orthoScale=e.orthoScale;const t=this.target.clone().sub(this.position);this.isPerspective||t.length()===this.orthoScale||(t.normalize().multiplyScalar(this.orthoScale),this.target.copy(t.add(this.position)))}this.updateCameraMatrices()}pixelsPerUnitAtDistance(e){if(!this.isPerspective)return this.clientHeight/this.orthoScale;const t=2*e*Math.tan(n.Math.degToRad(.5*this.fov));return this.clientHeight/t}UnifpixelsPerUnitAtPoint(e){const t=this.position.distanceTo(e);return this.pixelsPerUnitAtDistance(t)}setGlobalOffset(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];var i;(e!==this.position&&e!==this.target&&e!==this.pivot||(e=e.clone()),t)&&(this.position.add(this.globalOffset).sub(e),this.target.add(this.globalOffset).sub(e),null===(i=this.pivot)||void 0===i||i.add(this.globalOffset).sub(e));this.globalOffset.copy(e)}getGlobalPosition(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:new n.Vector3).copy(this.position).add(this.globalOffset)}viewportToRay(e,t){e.z=-1;var i=new n.Vector3(e.x,e.y,1);return e=e.unproject(this),(i=i.unproject(this)).sub(e).normalize(),t||(t=new n.Ray),t.set(this.isPerspective?this.position:e,i),t}transformCurrentView(e){o.transformViewParams(this,e)}}o.ORTHO_FOV=2*Math.atan(.5)*180/Math.PI,o.getViewParamsFromBox=function(e,t,i,r,o,s){var a=s||{},l=e.getSize(new n.Vector3);if(a.target=e.getCenter(new n.Vector3),a.position||(a.position=new n.Vector3),a.up||(a.up=new n.Vector3),t){a.isPerspective=!1;var c=l.x/l.y,h=i;a.orthoScale=h>c?l.y:l.x/h,a.up.set(0,1,0),a.position.copy(a.target),a.position.z+=a.orthoScale,a.target.y+=1e-6*l.y}else a.isPerspective=!0,a.fov=o,a.up.copy(r),a.position.copy(a.target),a.position.z+=1.5*Math.max(l.x,l.y,l.z);return a},o.copyViewParams=function(e,t){return(t=t||{}).position=(t.position||new n.Vector3).copy(e.position),t.target=(t.target||new n.Vector3).copy(e.target),t.up=(t.up||new n.Vector3).copy(e.up),t.aspect=e.aspect,t.fov=e.fov,t.isPerspective=e.isPerspective,t.orthoScale=e.orthoScale,t},o.transformViewParams=function(e,t){var i;e.position.applyMatrix4(t),e.target.applyMatrix4(t),null===(i=e.pivot)||void 0===i||i.applyMatrix4(t),e.up.transformDirection(t)},o.adjustOrthoCamera=function(e,t){if(!e.isPerspective){var i=t.getSize(new n.Vector3),o=e.target.clone().sub(e.position),s=o.length();if(i>0&&s>1e3*i.length()){var a=e.position.distanceTo(t.getCenter(new n.Vector3));e.target.copy(e.position).add(o.normalize().multiplyScalar(a))}else{if(Math.abs(s-e.orthoScale)/s>1e-5)r.logger.warn("Ortho scale does not match eye-target distance. One of them is likely wrong, but which one?"),!(0===e.fov&&1===e.orthoScale)&&e.position.copy(e.target).add(o.normalize().multiplyScalar(-e.orthoScale))}}},o.prototype.isUnifiedCamera=!0},40723:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ViewingUtilities:()=>r});var n=i(72091);function r(e,t,i){this.autocam=t,this.viewerImpl=e,this.setGlobalManager(this.viewerImpl.globalManager);var r=i.getCamera(),o={},s={};var a=new function(e){var t=.6,i=0,r=new n.SphereGeometry(1),o=new n.MeshPhongMaterial({color:32512,opacity:t,transparent:!0}),s=new n.Mesh(r,o),a=e,l=1;a.createOverlayScene("pivot"),s.visible=!1,this.shown=function(){return s.visible},this.show=function(e,n,r){s.scale.x=n*l,s.scale.y=n*l,s.scale.z=n*l,s.position.set(e.x,e.y,e.z),o.opacity=t,s.visible=!0,a.addOverlay("pivot",s),a.invalidate(!1,!1,!0),i=r?Date.now()+500:0},this.hide=function(){s.visible&&(s.visible=!1,a.removeOverlay("pivot",s),a.invalidate(!1,!1,!0),i=0)},this.fade=function(){if(i>0){var e=i-Date.now();if(e<=0)return this.hide(),!0;var n=e/500*t;return o.opacity=n,!0}return!1},this.fading=function(){return i>0},this.setSize=function(e){l=e},this.setColor=function(e,i){o.color=new n.Color(e),void 0!==i&&(t=i,o.opacity=t)}}(this.viewerImpl);this.transitionView=function(e,n,o,s,a,l,c){a=a||i.getWorldUpVector();var h=l?function(e,t,i){var n=t.clone().sub(e);if(0===n.lengthSq())return n.copy(i);var r=n.clone().cross(i);return 0===r.lengthSq()&&(i.z>i.y?n.y-=1e-4:n.z-=1e-4,r.crossVectors(n,i)),r.cross(n).normalize()}(e,n,a):s;h||(h=r.up);var u={position:e,center:n,pivot:c=c||n,fov:o,up:h,worldUp:a,isOrtho:!1===r.isPerspective};t.goToView(u)},this.goHome=function(){this.viewerImpl.track({name:"navigation/home",aggregate:"count"}),t.goHome()},this.getHitPoint=function(e,t){var n=this.viewerImpl.hitTestViewport(i.screenToViewport(e,t),!1);return n?n.intersectPoint:null},this.activatePivot=function(e){if(this.viewerImpl.model&&!this.viewerImpl.model.is2d()){var t=r.isPerspective?i.getPivotPlaneDistance():i.getEyeVector().length(),o=i.getVerticalFov(),s=2*t*Math.tan(n.Math.degToRad(.5*o)),l=i.getScreenViewport(),c=this.getWindow().devicePixelRatio||1,h=5*s/(l.height*c);a.show(i.getPivotPoint(),h,e)}},this.pivotActive=function(e,t){t=t||!1,(e=e&&!i.getIs2D())||!a.shown()?e&&this.activatePivot(t):a.hide()},this.pivotUpdate=function(){a.shown()&&a.fade()&&this.viewerImpl.invalidate(!1,!1,!0)},this.setPivotPoint=function(e,t,n){i.setPivotPoint(e),t||i.setTarget(e),n&&i.setPivotSetFlag(!0),this.setTemporaryPivot(null),i.getIs2D()||a.shown()&&this.activatePivot(a.fading())},this.savePivot=function(e){e||(e="default"),o[e]=i.getPivotPoint(),s[e]=i.getPivotSetFlag()},this.restorePivot=function(e){if(e||(e="default"),o[e]){var t=s[e];this.setPivotPoint(o[e],!0,t),t||i.setPivotSetFlag(!1),delete o[e],delete s[e]}},this.setTemporaryPivot=function(e){if(e){var t=i.getPivotPoint(),n=i.getPivotSetFlag();this.setPivotPoint(e,!0,n),o.TEMP=t,s.TEMP=n}else delete o.TEMP,delete s.TEMP},this.removeTemporaryPivot=function(){this.restorePivot("TEMP")},this.setPivotSize=function(e){a.setSize(e)},this.setPivotColor=function(e,t){a.setColor(e,t)},this.getBoundingBox=function(e){return this.viewerImpl.getFitBounds(e)},this.fitToView=function(e){this.viewerImpl.track({name:"navigation/fit",aggregate:"count"}),this.viewerImpl.fitToView(this.viewerImpl.selector.getAggregateSelection(),e),this.activatePivot(!0)},this.update=function(){i.getRequestFitToView()&&!i.getTransitionActive()&&(i.setRequestFitToView(!1),this.fitToView()),i.getRequestHomeView()&&!i.getTransitionActive()&&(i.setRequestHomeView(!1),this.goHome());var e=i.getRequestTransition();return e&&!i.getTransitionActive()&&(i.setRequestTransition(!1),this.transitionView(e.position,e.coi,e.fov,e.up,e.worldUp,e.reorient,e.pivot)),!1}}i(26206).GlobalManagerMixin.call(r.prototype)},13843:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MultiModelVisibilityManager:()=>s,VisibilityManager:()=>o});var n=i(83081),r=i(19556);function o(e,t){this.viewerImpl=e,this.model=t,this.isolatedNodes=new Set,this.hiddenNodes=new Set}function s(e){this.viewerImpl=e,this.models=[]}o.prototype.getInstanceTree=function(){return this.model?this.model.getData().instanceTree:null},o.prototype.getIsolatedNodes=function(){return Array.from(this.isolatedNodes)},o.prototype.getHiddenNodes=function(){return Array.from(this.hiddenNodes)},o.prototype.setAllVisibility=function(e){var t=this.model?this.model.getRootId():null;t&&this.setVisibilityOnNode(t,e),this.model.getData().is2d&&this.model.setAllVisibility(e)},o.prototype.isNodeVisible=function(e){var t=this.getInstanceTree();return t?!t.isNodeHidden(e):!this.hiddenNodes.has(e)&&(this.isolatedNodes.size||!this.isolatedNodes.has(e))},o.prototype.isolate=function(e){var t=this.getInstanceTree(),i=t?t.getRootId():null,n="number"==typeof e&&e===i||"object"==typeof e&&e.dbId===i;e&&!n?this.isolateMultiple(Array.isArray(e)?e:[e]):this.isolateNone()},o.prototype.isolateNone=function(){this.model.setAllVisibility(!0),this.viewerImpl.sceneUpdated(!0),this.setAllVisibility(!0),this.hiddenNodes=new Set,this.isolatedNodes=new Set,this.viewerImpl.invalidate(!0)},o.prototype.isolateMultiple=function(e){if(e&&0!=e.length){this.model.getData().is2d||(this.model.setAllVisibility(!1),this.viewerImpl.sceneUpdated(!0)),this.setAllVisibility(!1),this.isolatedNodes=new Set(e),this.hiddenNodes=new Set;const i=e.length-1;for(var t=0;t1&&void 0!==arguments[1])||arguments[1];var i;if(Array.isArray(e)){const t=e.length-1;for(var n=0;n0&&(i={type:r.HIDE_EVENT,nodeIdArray:e,model:this.model})}else this.setVisibilityOnNode(e,!1),i={type:r.HIDE_EVENT,nodeIdArray:[e],model:this.model};i&&t&&this.viewerImpl.api.dispatchEvent(i)},o.prototype.show=function(e){var t;if(Array.isArray(e)){const n=e.length-1;for(var i=0;i0&&(t={type:r.SHOW_EVENT,nodeIdArray:e,model:this.model})}else this.setVisibilityOnNode(e,!0),t={type:r.SHOW_EVENT,nodeIdArray:[e],model:this.model};t&&this.viewerImpl.api.dispatchEvent(t)},o.prototype.toggleVisibility=function(e){var t=this.getInstanceTree();if(t){var i=t.isNodeHidden(e);this.setVisibilityOnNode(e,i);var n={type:i?r.SHOW_EVENT:r.HIDE_EVENT,nodeIdArray:[e],model:this.model};this.viewerImpl.api.dispatchEvent(n)}},o.prototype.setVisibilityOnNode=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];var r,o=this.viewerImpl,s=this.model,a=this.getInstanceTree(),l=!t,c=s.getData().is2d;a?a.enumNodeChildren(e,(function(e){var i=a.isNodeVisibleLocked(e);if(a.setNodeHidden(e,l&&!i),c){var n=s.reverseMapDbIdFor2D(e);s.getFragmentList().setObject2DGhosted(n,!t&&!i)}else a.enumNodeFragments(e,(function(e){s.setVisibility(e,t||i)}),!1)}),n):c?s.isLeaflet()?s.setVisibility(null,t):null===(r=s.getFragmentList())||void 0===r||r.setObject2DGhosted(e,!t):s.setVisibility(e,t);o.sceneUpdated(!0,!1,i),this.updateNodeVisibilityTracking(e,t)},o.prototype.updateNodeVisibilityTracking=function(e,t){this.isolatedNodes.size>0?t?this.isolatedNodes.add(e):t||(this.isolatedNodes.delete(e),0===this.isolatedNodes.size&&(this.hiddenNodes=new Set([this.model.getRootId()]))):t?t&&this.hiddenNodes.delete(e):this.hiddenNodes.add(e);var i=this.getInstanceTree();i&&i.root&&i.root.dbId===e&&(t?(this.isolatedNodes=new Set,this.hiddenNodes=new Set):(this.isolatedNodes=new Set,this.hiddenNodes=new Set([e])))},o.prototype.toggleNodeVisibleLocked=function(e){var t=this.getInstanceTree().isNodeVisbileLocked(e);this.lockNodeVisible(e,!t)},o.prototype.lockNodeVisible=function(e,t){var i=this.viewerImpl,n=this.model,r=this.getInstanceTree(),o=n.getData().is2d;if(r){var s=e=>{r.enumNodeChildren(e,(function(e){if(r.lockNodeVisible(e,t),t)if(r.setNodeHidden(e,!1),o){var i=n.reverseMapDbIdFor2D(e);n.getFragmentList().setObject2DGhosted(i,!1)}else r.enumNodeFragments(e,(function(e){n.setVisibility(e,!0)}),!1)}),!0),t&&(i.sceneUpdated(!0),this.updateNodeVisibilityTracking(e,t))};Array.isArray(e)?e.forEach(s):s(e)}},o.prototype.isNodeVisibleLocked=function(e){var t=this.getInstanceTree();return t&&t.isNodeVisibleLocked(e)},o.prototype.setNodeOff=function(e,t,i,n){var r=this.viewerImpl,o=this.model,s=this.getInstanceTree(),a=o.getData().is2d;if(!s)return a?o.getFragmentList().setObject2DVisible(e,!t):o.getFragmentList().setFragOff(e,t),void r.sceneUpdated(!0);if(i&&n){let e,r;if(a)for(let n=0;n1&&n.logger.warn("This selection call does not yet support multiple models.")},s.prototype.getAggregateIsolatedNodes=function(){for(var e=[],t=this.models,i=0;ie.model==t));if(n){let e=n.ids||n.selection;"number"==typeof e&&(e=[e]),t.visibilityManager.isolate(e)}else i&&t.visibilityManager.setAllVisibility(!1)}}else for(let e of this.models)e.visibilityManager.isolateNone();!function(e){var t=e.getAggregateIsolatedNodes();if(1===e.models.length){var i={type:r.ISOLATE_EVENT,nodeIdArray:t.length?t[0].ids:[],model:e.models[0]};e.viewerImpl.api.dispatchEvent(i)}i={type:r.AGGREGATE_ISOLATION_CHANGED_EVENT,isolation:t};e.viewerImpl.api.dispatchEvent(i)}(this)},s.prototype.hide=function(e,t){t||(this.warn(),t=this.models[0]),t.visibilityManager.hide(e)},s.prototype.aggregateHide=function(e){if(e&&0!==e.length){for(var t=0;t3&&void 0!==arguments[3]&&arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];i||(this.warn(),i=this.models[0]),i.visibilityManager.setVisibilityOnNode(e,t,n,r)},s.prototype.toggleVisibleLocked=function(e,t){t||(this.warn(),t=this.models[0]),t.visibilityManager.toggleVisibleLocked(e)},s.prototype.lockNodeVisible=function(e,t,i){i||(this.warn(),i=this.models[0]),i.visibilityManager.lockNodeVisible(e,t)},s.prototype.isNodeVisibleLocked=function(e,t){return t||(this.warn(),t=this.models[0]),t.visibilityManager.isNodeVisibleLocked(e,t)},s.prototype.setNodeOff=function(e,t,i,n,r){i||(this.warn(),i=this.models[0]),i.visibilityManager.setNodeOff(e,t,n,r)}},60687:(e,t,i)=>{"use strict";i.r(t),i.d(t,{WorldUpTool:()=>o});var n=i(72091),r=i(19556);function o(e,t){var i,o=t.navigation,s=o.getCamera(),a=["worldup"],l=this,c=(i=new n.Vector3,function(e,t,r,o){var s=new n.Vector3(e,t,r),a=o.dot(s);return i.copy(o),i.multiplyScalar(a),s.sub(i)});var h=2*Math.PI,u=.001,d=1e-5,f=!1,p=!1,m=!1,g=new function(e,t){var i=2*Math.tan(n.Math.degToRad(15)),r=new n.MeshPhongMaterial({color:12303291,opacity:.5,transparent:!0,depthTest:!1,depthWrite:!1}),s=new n.Vector3,a=new n.Vector3,l=new n.Quaternion,u=new n.PerspectiveCamera(30,t.aspect,t.near,t.far),f=t,p=1,m=1,g=null,v=null,y=null,b=null,x=null,_=null,E=null,S=null,A=null,w=new Array(6),T=0,M=!1,C=!0,P=0,D=5*Math.PI/180,L=7*Math.PI/180,I=1,R=1e3,O=.1;function N(e,t){var i=Math.abs(e-t);return i>h?i:Math.min(h-i,i)}function F(e,t){var i=V(e);return i.distanceToSquared(t)h?e:e<=0?e+Math.PI:e-Math.PI}function B(e,t,i){var n,r=e.clone().normalize(),o=new Array(3),s=new Array(6);o[0]=c(1,0,0,r),o[1]=c(0,1,0,r),o[2]=c(0,0,1,r);var h=t.clone().cross(r).normalize();for(n=0;n<3;++n){var u=o[n];s[n]=u.length(),s[n]=0){var t=e>=3?-1:1;0===(e%=3)&&(s.x=t),1===e&&(s.y=t),2===e&&(s.z=t)}return M&&s.multiplyScalar(-1),s}function G(e,t){for(var i=N(w[0],e),n=0,r=1;r<6;++r){var o=N(w[r],e);oMath.PI?T-=h:T<=-Math.PI&&(T=h+T);var t=function(){if(!C){var e=G(T,D);if(e>=0)return 0,C=!0,T=w[e],V(e)}return!1}();if(t)P=T,z(t);else if(function(){if(C){if(G(T,L)<0)return C=!1,!0;0}return!1}()){H(T-P),P=0}else{if(C)return!1;H(e)}return!0}e.createOverlayScene("roll",null,null,u),this.updateRollCamera=function(e,t){u.position.copy(f.position),u.quaternion.copy(f.quaternion),u.up.copy(f.up),u.aspect=f.aspect,e&&t&&(u.near=t-e,u.far=t+e),u.updateProjectionMatrix()},this.isSnapped=function(){return C},this.resize=function(){var e=I*i,t=e*f.aspect,n=(f.aspect<1?t:e)*m;_.scale.x=n,_.scale.y=n,_.scale.z=n},this.start=function(t,i){this.updateHUD(t,i),e.addOverlay("roll",_)},this.updateHUD=function(e,t){g=e,t<.35?t=.35:t>.8&&(t=.8),m=t,p=.8/t;var n=s.copy(e).sub(f.position),r=(I=n.length())*i,a=r*f.aspect,l=(f.aspect<1?a:r)*t;this.updateRollCamera(l,I);var c=o.getWorldUpVector(),h=o.getCameraUpVector();k(l,e,n,c,h),T=0,P=0;var u=c.dot(h);M=u<0,C=j(c,h)},this.handleRoll=function(e,t,i){if(this.updateRollCamera(),j(o.getWorldUpVector(),o.getCameraUpVector()),0!==e||0!==t){var n=i.x-e-.5,r=i.y-t-.5,s=i.x-.5,a=i.y-.5;return q(Math.atan2(a,s)-Math.atan2(r,n))}return!1},this.handleRollTouch=function(e){this.updateRollCamera(),j(o.getWorldUpVector(),o.getCameraUpVector());var t=e-T;return Math.abs(t)>.001&&q(t)},this.end=function(){e.removeOverlay("roll",_)}}(e,s),v=new n.Vector3,y=new n.Vector3,b=new n.Vector3,x=null,_=0;this.getNames=function(){return a},this.getName=function(){return a[0]},this.activate=function(e){t.addEventListener(r.CAMERA_CHANGE_EVENT,this.handleCameraChange),m=!1},this.deactivate=function(e){g.end(),t.removeEventListener(r.CAMERA_CHANGE_EVENT,this.handleCameraChange),this.utilities.restorePivot(),x=null,f=!1,m=!1},this.getCursor=function(){return"auto"},this.getMotionDelta=function(e){var t=y.x-v.x,i=y.y-v.y,n=y.z-v.z;Math.abs(t){"use strict";i.r(t),i.d(t,{Autocam:()=>h});var n=i(72091),r=i(38842),o=i(26206),s=i(35922);const a=Number.MIN_VALUE||3e-308,l=1e-5;function c(e){const t=1e-12;Math.abs(e.x)0?1:-1):Math.abs(e.y)0?1:-1,0,0):Math.abs(e.z)0?1:-1,0)}function h(e,t,i){var o=this,h=null,u=!1;this.cube=null,this.camera=e,this.renderer="WEBGL",this.startState={},this.navApi=t,this.orthographicFaces=!1,this.canvas=i,this.cameraChangedCallback=function(){},this.pivotDisplayCallback=function(){},this.transitionCompletedCallback=function(){};var d,f=Date.now(),p=!1;function m(t){u=!0,e.target.copy(o.center),e.pivot.copy(o.pivot),e.worldup?e.worldup.copy(o.sceneUpDirection):e.up.copy(o.sceneUpDirection),o.cameraChangedCallback(t),u=!1}function g(e,t){e.position.copy(e.globalPosition).sub(t),e.center.copy(e.globalCenter).sub(t),e.pivot.copy(e.globalPivot).sub(t)}this.recordTime=!0,this.dtor=function(){this.cube=null,this.cameraChangedCallback=null,this.pivotDisplayCallback=null,this.transitionCompletedCallback=null,this.canvas=null,this.recordTime=!1,this.afAnimateTransition&&cancelAnimationFrame(this.afAnimateTransition)},this.registerCallbackCameraChanged=function(e){this.cameraChangedCallback=e},this.registerCallbackPivotDisplay=function(e){this.pivotDisplayCallback=e},this.registerCallbackTransitionCompleted=function(e){this.transitionCompletedCallback=e},this.showPivot=function(e){this.pivotDisplayCallback(e)},this.setWorldUpVector=function(e){u||e&&e.lengthSq()>0&&!e.normalize().equals(this.sceneUpDirection)&&(this.sceneUpDirection.copy(e),this.sceneFrontDirection.copy(this.getWorldFrontVector()),this.cubeFront.copy(this.sceneFrontDirection).cross(this.sceneUpDirection).normalize(),this.cube&&requestAnimationFrame(this.cube.render))},this.getWorldUpVector=function(){return this.sceneUpDirection.clone()},this.getWorldRightVector=function(){var e=this.sceneUpDirection.clone();return Math.abs(e.z)<=Math.abs(e.y)?e.set(e.y,-e.x,0):e.z>=0?e.set(e.z,0,-e.x):e.set(-e.z,0,e.x),e.normalize()},this.getWorldFrontVector=function(){return this.getWorldUpVector().cross(this.getWorldRightVector()).normalize()},this.goToView=function(e){if(this.navApi.isActionEnabled("gotoview")){var t={position:e.position.clone(),up:e.up.clone(),center:e.center.clone(),pivot:e.pivot.clone(),fov:e.fov,worldUp:e.worldUp.clone(),isOrtho:e.isOrtho};this.addGlobalPositions(t),o.elapsedTime=0,this.animateTransition(t)}},this.getCurrentView=function(){return{position:e.position.clone(),up:e.up.clone(),center:this.center.clone(),pivot:this.pivot.clone(),fov:e.fov,worldUp:this.sceneUpDirection.clone(),isOrtho:!1===e.isPerspective}},this.setCurrentViewAsHome=function(e){e?(this.navApi.setRequestFitToView(!0),p=!0):this.homeVector=this.getCurrentView()},this.setHomeViewFrom=function(e){var t=e.pivot?e.pivot:this.center,i=e.target?e.target:this.pivot,n=e.worldup?e.worldup:this.sceneUpDirection;this.homeVector={position:e.position.clone(),up:e.up.clone(),center:i.clone(),pivot:t.clone(),fov:e.fov,worldUp:n.clone(),isOrtho:!1===e.isPerspective},this.originalHomeVector={position:e.position.clone(),up:e.up.clone(),center:i.clone(),pivot:t.clone(),fov:e.fov,worldUp:n.clone(),worldFront:this.sceneFrontDirection.clone(),isOrtho:!1===e.isPerspective},this.addGlobalPositions(this.homeVector),this.addGlobalPositions(this.originalHomeVector)},this.toPerspective=function(){e.isPerspective||(e.toPerspective(),m(!1))},this.toOrthographic=function(){e.isPerspective&&(e.toOrthographic(),m(!1))},this.setOrthographicFaces=function(e){this.orthographicFaces=e},this.getViewType=function(){return this.orthographicFaces?s.VIEW_TYPES.PERSPECTIVE_ORTHO_FACES:e.isPerspective?s.VIEW_TYPES.PERSPECTIVE:s.VIEW_TYPES.ORTHOGRAPHIC},this.setViewType=function(e,t){switch(e){case s.VIEW_TYPES.ORTHOGRAPHIC:return this.setOrthographicFaces(!1),this.toOrthographic(),!0;case s.VIEW_TYPES.PERSPECTIVE:return this.setOrthographicFaces(!1),this.toPerspective(),!0;case s.VIEW_TYPES.PERSPECTIVE_ORTHO_FACES:return this.setOrthographicFaces(!0),void 0===t&&(t=this.isFaceView()),t?this.toOrthographic():this.toPerspective(),!0;default:return!1}},this.goHome=function(){this.navApi.isActionEnabled("gotoview")&&(this.navApi.setPivotSetFlag(!1),this.goToView(this.homeVector))},this.resetHome=function(){this.homeVector.position.copy(this.originalHomeVector.position),this.homeVector.up.copy(this.originalHomeVector.up),this.homeVector.center.copy(this.originalHomeVector.center),this.homeVector.pivot.copy(this.originalHomeVector.pivot),this.homeVector.fov=this.originalHomeVector.fov,this.homeVector.worldUp.copy(this.originalHomeVector.worldUp),this.homeVector.isOrtho=this.originalHomeVector.isOrtho,this.goHome()},this.getView=function(){return this.center.clone().sub(e.position)},this.setCameraUp=function(t){var i=this.dir.clone(),n=i.cross(t).normalize();0===n.lengthSq()&&(i.copy(this.dir),t.z>t.y?i.y+=1e-4:i.z+=1e-4,n=i.cross(t).normalize()),e.up.copy(n).cross(this.dir).normalize()},this.addGlobalPositions=function(e){var t=this.camera.globalOffset;e.globalPosition=e.position.clone().add(t),e.globalCenter=e.center.clone().add(t),e.globalPivot=e.pivot.clone().add(t)},this.onGlobalOffsetChanged=function(e){g(this.homeVector,e),g(this.originalHomeVector,e),this.camera.setGlobalOffset(e)};var v,b,_,E,S=this;!function e(){S.recordTime&&requestAnimationFrame(e);var t=Date.now();d=t-f,f=t}(),this.ortho=!1,this.center=e.target?e.target.clone():new n.Vector3(0,0,0),this.pivot=e.pivot?e.pivot.clone():this.center.clone(),this.sceneUpDirection=e.worldup?e.worldup.clone():e.up.clone(),this.sceneFrontDirection=this.getWorldFrontVector(),this.dir=this.getView(),this.setCameraUp(e.up),this.saveCenter=this.center.clone(),this.savePivot=this.pivot.clone(),this.saveEye=e.position.clone(),this.saveUp=e.up.clone(),this.cubeFront=this.sceneFrontDirection.clone().cross(this.sceneUpDirection).normalize(),this.setHomeViewFrom(e);var A,w,T=new n.Quaternion,M=new n.Quaternion,C=new n.Quaternion,P=new n.Quaternion;this.userPanSpeed=.5,this.userLookSpeed=2,this.userHeightSpeed=5,this.walkMultiplier=1,this.userZoomSpeed=1.015,this.orbitMultiplier=5,this.currentlyAnimating=!1,e.keepSceneUpright=!0,this.preserveOrbitUpDirection=!0,this.alignOrbitUpDirection=!0,this.constrainOrbitHorizontal=!1,this.constrainOrbitVertical=!1,this.doCustomOrbit=!1,this.snapOrbitDeadZone=.045,this.snapOrbitThresholdH=this.snapOrbitThresholdV=n.Math.degToRad(15),this.snapOrbitAccelerationAX=this.snapOrbitAccelerationAY=1.5,this.snapOrbitAccelerationBX=this.snapOrbitAccelerationBY=2,this.snapOrbitAccelerationPointX=this.snapOrbitAccelerationPointY=.5,this.combined=!1,this.useSnap=!1,this.lockDeltaX=0,this.lockedX=!1,this.lastSnapRotateX=0,this.lockDeltaY=0,this.lockedY=!1,this.lastSnapRotateY=0,this.lastSnapDir=new n.Vector3(0,0,0),this.topLimit=!1,this.bottomLimit=!1,this.minSceneBound=0,this.maxSceneBound=0;var D,L,I={destinationPercent:1,duration:1,zoomToFitScene:!0,useOffAxis:!1};this.shotParams=I,this.zoomDelta=new n.Vector2;var R;function O(e,t,i){if(e<=t)return 0;if(e>=i)return 1;var n=(e-t)/(i-t);return.5*(Math.sin((n-.5)*Math.PI)+1)}function N(e){return Math.round(10*e)/10}function F(e,t){var i=new n.Vector2(0,0),r=o.getWindow();return i.x=e/r.innerWidth,i.y=t/r.innerHeight,i}function U(e,t,i){var n,r,s,a;n=r=s=a=0;var l=0,c=null,h=null,u=o.snapOrbitDeadZone,d=o.orbitMultiplier;return"h"==e?(n=o.snapOrbitThresholdH,r=o.snapOrbitAccelerationAX,s=o.snapOrbitAccelerationBX,a=1-o.snapOrbitAccelerationPointX,h=o.lockDeltaX,c=o.lockedX):(n=o.snapOrbitThresholdV,r=o.snapOrbitAccelerationAY,s=o.snapOrbitAccelerationBY,a=1-o.snapOrbitAccelerationPointY,h=o.lockDeltaY,c=o.lockedY),c?(h+=i)<-u?(l=(h+u)*d*1/s,c=!1):h>u&&(l=(h-u)*d*1/s,c=!1):(l=Math.abs(t)>n?i*d:Math.abs(t)>a*n?i*t>0?i*d*r:i*d*1/r:i*t>0?i*d*s:i*d*1/s)*t>0&&Math.abs(l)>Math.abs(t)&&(this.lockDeltaX=this.lockDeltaY=0,c=!0,l=t),l}function B(){return o.combined}function k(e,t){var i=!1,n=o.getWindow(),r=n.innerWidth,s=e.x%r,a=n.innerHeight,l=e.y%a,c=s>0?s-t.x:r+s-t.x,h=l>0?l-t.y:a+l-t.y;return Math.abs(c)<30&&Math.abs(h)<30&&(i=!0),i}function V(e,t,i){var r=o.getWindow();if(!R||!e){if(e){var s=new n.Vector2,a=t.x,l=t.y;!function(e,t,i){var n=o.getWindow();i.x=(e.x-t.x)/n.innerWidth,e.x=t.x+(e.x-t.x)%n.innerWidth,i.y=(e.y-t.y)/n.innerHeight,e.y=t.y+(e.y-t.y)%n.innerHeight}(t,i,s),r.innerWidth*s.x,r.innerHeight*s.y,a0?(a=o.maxSceneBound-l,o.topLimit=!1):o.bottomLimit&&t<0?(a=o.minSceneBound+l,o.bottomLimit=!1):a=r.dot(worldUp);var c=s.dot(worldUp);return ao.maxSceneBound&&c>o.maxSceneBound&&(o.topLimit=!0,n=0),n}(r,e,o.m_amount),r}function z(e){var t=o.sceneFrontDirection.clone().cross(o.sceneUpDirection),i=Math.abs(Math.abs(e.dot(o.sceneUpDirection))-1),n=Math.abs(Math.abs(e.dot(o.sceneFrontDirection))-1),r=Math.abs(Math.abs(e.dot(t))-1);return i1e-4&&this.setWorldUpVector(i),p&&!this.navApi.getTransitionActive()&&(p=!1,this.setCurrentViewAsHome(!1)),this.cube&&requestAnimationFrame(this.cube.render)},this.refresh=function(){this.cube&&this.cube.refreshCube()},n.Matrix3.prototype.makeRotationFromQuaternion=function(e){var t=this.elements,i=e.x,n=e.y,r=e.z,o=e.w,s=i+i,a=n+n,l=r+r,c=i*s,h=i*a,u=i*l,d=n*a,f=n*l,p=r*l,m=o*s,g=o*a,v=o*l;return t[0]=1-(d+p),t[3]=h-v,t[6]=u+g,t[1]=h+v,t[4]=1-(c+p),t[7]=f-m,t[2]=u-g,t[5]=f+m,t[8]=1-(c+d),this},n.Quaternion.prototype.setFromRotationMatrix3=function(e){var t,i=e.elements,n=i[0],r=i[3],o=i[6],s=i[1],a=i[4],l=i[7],c=i[2],h=i[5],u=i[8],d=n+a+u;return d>0?(t=.5/Math.sqrt(d+1),this.w=.25/t,this.x=(h-l)*t,this.y=(o-c)*t,this.z=(s-r)*t):n>a&&n>u?(t=2*Math.sqrt(1+n-a-u),this.w=(h-l)/t,this.x=.25*t,this.y=(r+s)/t,this.z=(o+c)/t):a>u?(t=2*Math.sqrt(1+a-n-u),this.w=(o-c)/t,this.x=(r+s)/t,this.y=.25*t,this.z=(l+h)/t):(t=2*Math.sqrt(1+u-n-a),this.w=(s-r)/t,this.x=(o+c)/t,this.y=(l+h)/t,this.z=.25*t),this},n.Quaternion.prototype.rotate=function(e){var t=(new n.Matrix4).makeRotationFromQuaternion(this).elements,i=(new n.Matrix3).set(t[0],t[1],t[2],t[4],t[5],t[6],t[8],t[9],t[10]);return e.applyMatrix3(i)},this.animateTransition=function(t){if(g(t,e.globalOffset),t){var i=!1,n=0;if(this.setCameraOrtho(t.isOrtho),o.elapsedTime>=I.duration)return n=1,o.center.copy(t.center),o.pivot.copy(t.pivot),e.position.copy(t.position),e.up.copy(t.up),e.target.copy(t.center),t.isOrtho||(e.fov=t.fov),e.dirty=!0,(i=!t.worldUp.equals(this.sceneUpDirection))&&this.setWorldUpVector(t.worldUp),this.currentlyAnimating=!1,m(i),this.showPivot(!1),this.cube&&requestAnimationFrame(this.cube.render),this.navApi.setTransitionActive(!1),void this.transitionCompletedCallback();this.currentlyAnimating=!0,this.showPivot(!0),this.navApi.setTransitionActive(!0);var r=I.destinationPercent,s=1-(n=O(o.elapsedTime/I.duration,0,r));o.elapsedTime+=d/500;var a=o.center.clone().multiplyScalar(s).add(t.center.clone().multiplyScalar(n)),l=e.position.clone().multiplyScalar(s).add(t.position.clone().multiplyScalar(n)),c=e.up.clone().multiplyScalar(s).add(t.up.clone().multiplyScalar(n)),h=e.pivot.clone().multiplyScalar(s).add(t.pivot.clone().multiplyScalar(n)),u=this.sceneUpDirection.clone().multiplyScalar(s).add(t.worldUp.clone().multiplyScalar(n)),f=e.fov*s+t.fov*n;o.center.copy(a),o.pivot.copy(h),e.position.copy(l),e.up.copy(c),e.target.copy(a),t.isOrtho||(e.fov=f),e.dirty=!0,(i=u.distanceToSquared(this.sceneUpDirection)>1e-4)&&this.setWorldUpVector(u),e.lookAt(o.center),m(i),this.cube&&requestAnimationFrame(this.cube.render),o.afAnimateTransition=requestAnimationFrame((function(){o.animateTransition(t)}))}},this.sphericallyInterpolateTransition=function(t){var i,r,s,a,l=0;if(this.currentlyAnimating=!0,this.navApi.setTransitionActive(!0),o.elapsedTime>=I.duration)l=1,this.currentlyAnimating=!1;else{var c=I.destinationPercent;l=O(o.elapsedTime/I.duration,0,c),o.elapsedTime+=d/500}if(1===l)r=L.position,i=L.center,s=L.up;else{var h=new n.Matrix3,u=T.clone();u.slerp(M,l),h.makeRotationFromQuaternion(u);var f=A*(1-(a=l))+w*a,p=h.elements;r=(i=D.center.clone().multiplyScalar(1-l).add(L.center.clone().multiplyScalar(l))).clone().sub(new n.Vector3(p[0],p[1],p[2]).multiplyScalar(f)),s=new n.Vector3(p[3],p[4],p[5])}o.center.copy(i),e.position.copy(r),e.up.copy(s),o.navApi.getUsePivotAlways()||o.pivot.copy(i),e.lookAt(o.center),!0===this.currentlyAnimating?(this.showPivot(!0),requestAnimationFrame((function(){o.sphericallyInterpolateTransition(t)}))):(this.navApi.setTransitionActive(!1),this.showPivot(!1),this.orthographicFaces&&this.isFaceView()&&this.setCameraOrtho(!0),t&&t()),m(!1),this.cube&&requestAnimationFrame(this.cube.render)},this.getOrientation=function(){if(this.cube){var t=N(e.up.x),i=N(e.up.y),n=N(e.up.z),r=this.sceneFrontDirection.clone(),o=this.sceneUpDirection.clone(),s=this.sceneFrontDirection.clone().cross(this.sceneUpDirection).normalize();r.x=N(r.x),r.y=N(r.y),r.z=N(r.z),o.x=N(o.x),o.y=N(o.y),o.z=N(o.z),s.x=N(s.x),s.y=N(s.y),s.z=N(s.z);var a=s.clone().multiplyScalar(-1),l=o.clone().multiplyScalar(-1),c=r.clone().multiplyScalar(-1);switch(this.cube.currentFace){case"front":if(o.x==t&&o.y==i&&o.z==n)return"up";if(l.x==t&&l.y==i&&l.z==n)return"down";if(s.x==t&&s.y==i&&s.z==n)return"right";if(a.x==t&&a.y==i&&a.z==n)return"left";break;case"right":if(o.x==t&&o.y==i&&o.z==n)return"up";if(l.x==t&&l.y==i&&l.z==n)return"down";if(c.x==t&&c.y==i&&c.z==n)return"left";if(r.x==t&&r.y==i&&r.z==n)return"right";break;case"left":if(o.x==t&&o.y==i&&o.z==n)return"up";if(l.x==t&&l.y==i&&l.z==n)return"down";if(r.x==t&&r.y==i&&r.z==n)return"left";if(c.x==t&&c.y==i&&c.z==n)return"right";break;case"back":if(o.x==t&&o.y==i&&o.z==n)return"up";if(l.x==t&&l.y==i&&l.z==n)return"down";if(a.x==t&&a.y==i&&a.z==n)return"right";if(s.x==t&&s.y==i&&s.z==n)return"left";break;case"top":if(c.x==t&&c.y==i&&c.z==n)return"down";if(r.x==t&&r.y==i&&r.z==n)return"up";if(s.x==t&&s.y==i&&s.z==n)return"right";if(a.x==t&&a.y==i&&a.z==n)return"left";break;case"bottom":if(r.x==t&&r.y==i&&r.z==n)return"down";if(c.x==t&&c.y==i&&c.z==n)return"up";if(s.x==t&&s.y==i&&s.z==n)return"right";if(a.x==t&&a.y==i&&a.z==n)return"left"}}},this.setCameraOrtho=function(t){t&&e.isPerspective&&e.toOrthographic(),t||e.isPerspective||e.toPerspective()},this.resetOrientation=function(){this.cube&&this.cube.showCompass(this.cube.prevRenderCompass),this.setCameraOrtho(this.originalHomeVector.isOrtho),this.sceneUpDirection.copy(this.originalHomeVector.worldUp),this.sceneFrontDirection.copy(this.originalHomeVector.worldFront),this.cubeFront.copy(this.sceneFrontDirection).cross(this.sceneUpDirection).normalize(),this.setCameraUp(this.sceneUpDirection),m(!0)},this.setCurrentViewAsFront=function(){this.cube&&(this.cube.currentFace="front",this.cube.showCompass(!1)),this.sceneUpDirection.copy(e.up.clone()),c(this.sceneUpDirection),this.sceneFrontDirection.copy(this.getView()).normalize(),c(this.sceneFrontDirection),this.cubeFront.copy(this.sceneFrontDirection).cross(this.sceneUpDirection).normalize(),c(this.cubeFront),this.orthographicFaces&&this.setCameraOrtho(!0),m(!0)},this.setCurrentViewAsTop=function(){this.cube&&(this.cube.currentFace="top",this.cube.showCompass(!1)),this.sceneUpDirection.copy(this.getView()).multiplyScalar(-1).normalize(),c(this.sceneUpDirection),this.sceneFrontDirection.copy(e.up),c(this.sceneFrontDirection),this.cubeFront.copy(this.sceneFrontDirection).cross(this.sceneUpDirection).normalize(),c(this.cubeFront),m(!0)},this.calculateCubeTransform=function(t){var i=this.sceneUpDirection.clone(),r=this.sceneFrontDirection.clone(),s=this.sceneFrontDirection.clone().cross(this.sceneUpDirection).normalize();(D=e.clone()).center=o.center.clone(),D.pivot=o.pivot.clone(),(L=e.clone()).center=o.center.clone(),L.pivot=o.pivot.clone();var l=new n.Vector3(0,0,0);t.indexOf("back")>=0&&(l=l.add(r)),t.indexOf("front")>=0&&(l=l.sub(r)),t.indexOf("top")>=0&&(l=l.add(i)),t.indexOf("bottom")>=0&&(l=l.sub(i)),t.indexOf("right")>=0&&(l=l.add(s)),t.indexOf("left")>=0&&(l=l.sub(s));var c=i,h=l.clone().normalize();if(1-Math.abs(h.dot(i))0?1:-1,p=u.clone().add(e.up.clone().multiplyScalar(f)).normalize(),m=-2,g=0;g<4;g++){var v=p.dot(d[g]);v>m&&(m=v,c=d[g].multiplyScalar(f))}w=A=this.getView().length(),L.position.copy(L.center.clone().add(l.multiplyScalar(w/l.length()))),L.up.copy(c);var y=D.center.clone().sub(D.position).normalize(),b=y.clone().cross(D.up).normalize(),x=b.clone().cross(y).normalize(),_=new n.Matrix3;_.set(y.x,x.x,b.x,y.y,x.y,b.y,y.z,x.z,b.z),T.setFromRotationMatrix3(_),x=(b=(y=L.center.clone().sub(L.position).normalize()).clone().cross(L.up).normalize()).clone().cross(y).normalize(),_.set(y.x,x.x,b.x,y.y,x.y,b.y,y.z,x.z,b.z),C.setFromAxisAngle(y,0),P.setFromAxisAngle(x,0),M.setFromRotationMatrix3(_),M.multiply(C).multiply(P).normalize()},this.drawDropdownMenu=function(e,t,i,n,o,s,a){var l=0,c=this.getDocument();if(h)s.appendChild(h);else{(h=c.createElement("div")).className="dropDownMenu",h.style.top="100px",h.style.left="-400px";for(var u=0,d=0,f=0;fd?m.length:d,i[f]){p=c.createElement("div");var g=c.createElement("input"),v=c.createElement("label");g.type="radio",g.className="dropDownMenuCheck",v.innerHTML=m,v.className="dropDownMenuCheckText",p.appendChild(g),p.appendChild(v),p.className="dropDownMenuCheckbox"}else(p=c.createElement("li")).textContent=m,p.className=t[f]?"dropDownMenuItem":"dropDownMenuItemDisabled";p.id="menuItem"+l,l++,u+=25,p.setAttribute("data-i18n",e[f])}h.appendChild(p)}s.appendChild(h),h.style.minWidth=Math.max(256,7.4*d)+"px";var y=h.getBoundingClientRect().width;this.menuSize.x=y,this.menuSize.y=u}l=0;for(f=0;fS.right&&(E=n-this.menuSize.x-1),_+this.menuSize.y>S.bottom&&(_=S.bottom-this.menuSize.y),_-=a.y,E-=a.x,h.style.top=_+"px",h.style.left=E+"px",this.menuOrigin.x=E,this.menuOrigin.y=_},this.removeDropdownMenu=function(e){e.removeChild(h)},this.isFaceView=function(){return z(this.center.clone().sub(e.position).normalize())&&z(e.up)},this.startInteraction=function(e,t){this.startCursor=new n.Vector2(e,t),this.startState={saveCenter:this.center.clone(),saveEye:this.camera.position.clone(),savePivot:this.pivot.clone(),saveUp:this.camera.up.clone()},this.lockDeltaX=0,this.lockedX=!1,this.lastSnapRotateX=0,this.lockDeltaY=0,this.lockedY=!1,this.lastSnapRotateY=0,this.lastSnapDir=new n.Vector3(0,0,0),this.navApi.setTransitionActive(!0)},this.orbit=function(t,i,r,s){if(this.navApi.isActionEnabled("orbit")&&!0!==this.currentlyAnimating){var a="wheel";if(o.orthographicFaces&&!e.isPerspective&&(e.toPerspective(),s&&s.saveEye.copy(this.camera.position)),s&&(a="cube"),"cube"==a?(this.saveCenter.copy(s.saveCenter),this.saveEye.copy(s.saveEye),this.savePivot.copy(s.savePivot),this.saveUp.copy(s.saveUp),this.useSnap=!0,this.doCustomOrbit=!0):(this.saveCenter.copy(this.center),this.savePivot.copy(this.pivot),this.saveEye.copy(e.position),this.saveUp.copy(e.up),this.useSnap=!1,this.doCustomOrbit=!1),B()&&null==b&&(b=this.saveCenter.clone(),v=this.saveEye.clone(),E=this.savePivot.clone(),_=this.saveUp.clone()),this.preserveOrbitUpDirection){var l=F(t.x-i.x,t.y-i.y),c=F(r.x,r.y),h=this.sceneUpDirection.clone(),u=this.sceneFrontDirection.clone(),d=this.sceneFrontDirection.clone().cross(this.sceneUpDirection).normalize(),f=B()?E:this.savePivot,p=B()?v:this.saveEye,g=B()?b:this.saveCenter,y=B()?_:this.saveUp,x=f.clone().sub(p).normalize(),S=g.clone().sub(p).normalize(),A=S.clone().cross(y),w=p.clone().sub(f).length(),T=p.clone().sub(g).length(),M=x.clone().multiplyScalar(-1),C=S.clone().multiplyScalar(-1),P=A,D=y.clone();if(!this.constrainOrbitHorizontal){h.dot(this.saveUp)<-.009&&(l.x=-l.x,c.x=-c.x);var L=0;L=B()?c.x*this.orbitMultiplier:this.useSnap?this.lastSnapRotateX+U("h",0,-c.x):l.x*this.orbitMultiplier,this.lastSnapRotateX=L;var I=(new n.Quaternion).setFromAxisAngle(h,-L);M.applyQuaternion(I),C.applyQuaternion(I),P.applyQuaternion(I),D.applyQuaternion(I)}if(!this.constrainOrbitVertical){var R=u.clone().multiplyScalar(u.dot(P)),O=d.clone().multiplyScalar(d.dot(P)),N=R.clone().add(O);N.clone().normalize();var k=0;if(B())k=c.y*this.orbitMultiplier;else{var V=U("v",0,c.y);k=this.useSnap?this.lastSnapRotateY+V:l.y*this.orbitMultiplier}var G=(new n.Quaternion).setFromAxisAngle(N,-k);if(this.navApi.getOrbitPastWorldPoles())M.applyQuaternion(G).normalize(),C.applyQuaternion(G).normalize(),D.applyQuaternion(G).normalize();else{var z=D.clone();if(z.applyQuaternion(G).normalize(),h.dot(z)<0){var H=C.clone();H.applyQuaternion(G).normalize();var W=H.angleTo(h);Math.abs(W)>.5*Math.PI&&(W-=W>0?Math.PI:-Math.PI),k-=W,G.setFromAxisAngle(N,-k),M.applyQuaternion(G).normalize(),C.applyQuaternion(G).normalize(),D.applyQuaternion(G).normalize()}else M.applyQuaternion(G).normalize(),C.applyQuaternion(G).normalize(),D.applyQuaternion(G).normalize()}this.lastSnapRotateY=k}var j=M.multiplyScalar(w).add(f);e.position.copy(j),e.up.copy(D),this.center.copy(j),this.center.sub(C.multiplyScalar(T)),B()&&(b.copy(this.center),v.copy(e.position),E.copy(this.pivot),_.copy(e.up))}e.lookAt(this.center),m(!1)}},this.endInteraction=function(){this.navApi.setTransitionActive(!1)},this.look=function(t){if(this.navApi.isActionEnabled("walk")){var i=F(t.x,t.y),r=this.userLookSpeed,o=this.getView(),s=e.up,a=o.clone().cross(s).normalize(),l=this.sceneUpDirection.clone(),c=i.clone();c.x*=Math.PI,c.y*=Math.PI/e.aspect,c.multiplyScalar(r);var h=(new n.Quaternion).setFromAxisAngle(a,-c.y);if(e.keepSceneUpright&&!this.navApi.getOrbitPastWorldPoles()){var u=s.clone();if(u.applyQuaternion(h).normalize(),u.dot(l)<0){var d=o.clone();d.applyQuaternion(h);var f=d.angleTo(l);Math.abs(f)>.5*Math.PI&&(f-=f>0?Math.PI:-Math.PI),c.y-=f,h.setFromAxisAngle(a,-c.y)}}o=h.clone().rotate(o),(s=h.clone().rotate(s)).normalize();var p=e.keepSceneUpright?l:s,g=(new n.Quaternion).setFromAxisAngle(p,-c.x);o=g.clone().rotate(o),s=g.clone().rotate(s),this.center.copy(o.add(e.position)),e.up.copy(s),e.lookAt(this.center),m(!1)}},this.pan=function(t){if(this.navApi.isActionEnabled("pan")){t=F(t.x,t.y);var i=this.getView(),r=e.up.clone().cross(i),o=i.clone().cross(r);r.normalize(),o.normalize(),i.normalize();var s=this.pivot.clone().sub(e.position),a=i.clone().dot(s),l=a*(Math.tan(n.Math.degToRad(e.leftFov))+Math.tan(n.Math.degToRad(e.rightFov))),c=a*(Math.tan(n.Math.degToRad(e.topFov))+Math.tan(n.Math.degToRad(e.bottomFov))),h=t.x*Math.abs(l),u=t.y*Math.abs(c),d=new n.Vector3,f=r.clone().multiplyScalar(h),p=o.clone().multiplyScalar(u);d=f.clone().add(p).clone().multiplyScalar(this.userPanSpeed),e.position.add(d),this.center.add(d),e.lookAt(this.center),m(!1)}},this.zoom=function(t){if(this.navApi.isActionEnabled("zoom")){var i=this.userZoomSpeed,n=Number.MAX_VALUE,r=t.x+t.y,s=Math.pow(i,r),a=this.pivot.clone().sub(this.pivot.clone().sub(this.saveEye).clone().multiplyScalar(s)),l=a.clone().add(o.D.clone().multiplyScalar(o.D.clone().dot(this.pivot.clone().sub(a).clone())));if(!(s>=n)){if(r>0){Math.pow(i,r-0);if(r<0)return void 0;e.position.copy(a),this.center.copy(l);var c=a.clone().sub(this.saveEye).dot(o.D);c>n?(e.position.copy(this.saveEye.sub(o.D).clone().multiplyScalar(n)),n>0?-1:0):-c/n}else e.position.copy(a),this.center.copy(l);e.lookAt(this.center),m(!1)}}},this.walk=function(t,i,r,o,s){if(this.navApi.isActionEnabled("walk")){var l=this.sceneUpDirection.clone(),c=this.sceneFrontDirection.clone(),h=this.sceneFrontDirection.clone().cross(this.sceneUpDirection);k(t,i)?(wheel.cursorImage("SWWalk"),V(!0,t,i),x=i.x,y=i.y):V(!1,t,i),x=t.x,y=t.y;var u=F(x-i.x,y-i.y),d=-u.x,f=-u.y,p=d<0?-1:1,g=f<0?-1:1,v=Math.abs(d),b=Math.abs(f),_=new n.Vector2(30,30);_=F(_.x,_.y),v=k(t,i)?0:Math.abs(d)-_.x,b=k(t,i)?0:Math.abs(f)-_.y;b/=.25;var E=(v=(v/=.25)<1?O(v,0,1):Math.pow(v,1))>0?v*p:0,S=(b=b<1?O(b,0,1):Math.pow(b,1))>0?b*g:0,A=this.getView(),w=A.length();A.normalize(),A.clone().cross(e.up).normalize();var T=h.clone().multiplyScalar(h.clone().dot(A)),M=c.clone().multiplyScalar(c.clone().dot(A)).clone().add(T);M=M.clone().length()>a?M.normalize():e.up;var C=S*(1*this.walkMultiplier),P=M,D=Math.cos(.65);1!=D&&(l.clone().dot(e.up)<-a&&l.clone().dot(A)<-D||l.clone().dot(e.up)>a&&l.clone().dot(A)>D)&&(P=-P);var L=-E*this.walkMultiplier*.05,I=e.up;(l.clone().dot(e.up)<-a||Math.abs(l.clone().dot(e.up))a)&&(L=-L),I=l;var R=(new n.Quaternion).setFromAxisAngle(I,L);R.normalize(),(A=R.clone().rotate(A)).normalize(),e.up.copy(R.clone().rotate(e.up)),e.up.normalize(),e.position.add(P.clone().multiplyScalar(C)),this.center.copy(e.position.clone().add(A.clone().multiplyScalar(w))),(P=l).normalize(),0===C&&(C=.01),e.lookAt(this.center),m(!1)}},this.updown=function(t){if(!this.navApi.getIsLocked()){var i=G(t);o.m_amount+=i;var r=new n.Vector3(0,1,0),s=o.saveEye.clone().sub(r.clone().multiplyScalar(o.m_amount)),a=s.clone().dot(r);e.position.copy(s),ao.maxSceneBound&&e.position.add(r.clone().multiplyScalar(o.maxSceneBound-a)),this.center.copy(e.position.clone().add(o.saveCenter.clone().sub(o.saveEye))),e.lookAt(this.center),m(!1)}}}o.GlobalManagerMixin.call(h.prototype)},2312:(e,t,i)=>{"use strict";const{getGlobal:n}=i(55280),r=n();function o(){this.stop=null,this.isRunning=!0}function s(e,t,i,n,s){var a=performance.now(),l=1e3*i,c=0,h=new o;h.stop=function(){c&&r.cancelAnimationFrame(c),h.isRunning=!1},h.skip=function(){h.isRunning&&(n(t),h.stop(),s&&s())};var u=function(i){var o=(i-a)/l;o=Math.max(o,0),o=Math.min(o,1),n(e+o*(t-e)),o<1?c=r.requestAnimationFrame(u):(h.isRunning=!1,s&&s())};return u(a),h}function a(e,t,i){return(1-i)*e+i*t}function l(e){return THREE.Math.smootherstep(e,0,1)}function c(e){var t=new THREE.Vector3,i=new THREE.Vector3,n=new THREE.Vector3,r=new THREE.Vector3,o=new THREE.Vector3,s=new THREE.Vector3,c=0,h=0,u=new THREE.Quaternion,d=new THREE.Quaternion,f=new THREE.Vector3,p=new THREE.Quaternion,m=new THREE.Object3D;new THREE.Matrix4;function g(e,t,i,n){Autodesk.Viewing.Navigation.prototype.orient(m,i,t,n),e.copy(m.quaternion)}this.init=function(e,a,l,f){let p=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];t.copy(e.position),i.copy(e.target),n.copy(p?e.worldup:e.up),r.copy(a),o.copy(l),s.copy(p?e.worldup:f),c=t.distanceTo(i),h=r.distanceTo(o),g(u,t,i,n),g(d,r,o,s)},this.updateCamera=function(e,i){var n=l(e);i.position.lerpVectors(t,r,n),p.slerpQuaternions(u,d,n),p.normalize();var o=a(c,h,n);!function(e,t,i){f.set(0,0,-i).applyQuaternion(t),e.target.addVectors(e.position,f),f.set(0,1,0).applyQuaternion(t),e.up.copy(f)}(i,p,o),i.dirty=!0},this.updateViewerCamera=function(e,t){this.updateCamera(e,t.impl.camera),t.impl.syncCamera(),t.impl.invalidate(!0,!0)}}var h;e.exports={flyToView:function(e,t,i,n){let r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];h||(h=new c),i=i||2;var o=e.impl.camera;return h.init(o,t.position,t.target,t.up,r),s(0,1,i,(function(t){h.updateViewerCamera(t,e)}),n)},ShadowFader:function(e,t,i){var n=1,r=null,o=t,a=void 0,l=i;function c(t){n=t,e.impl.setGroundShadowAlpha(t)}function h(){r=null,l&&l(a)}this.shadowOn=function(){r&&a||(r&&!a&&(r.stop(),r=null),n>=1||(r=s(n,1,o*(1-n),c,h),a=!0))},this.shadowOff=function(){r&&!a||(r&&a&&(r.stop(),r=null),n<=0||(r=s(n,0,o*n,c,h),a=!1))},this.isFading=function(){return r&&r.isRunning}},lerp:a,smootherStep:l,fadeValue:s,AnimatedParam:class{constructor(e,t,i){this.setValueCb=t,this.animTime=i,this.fadeAnim=null,this.targetValue=e,this.curValue=e,t(e),this.pendingFinishedCallbacks=[]}stopAnim(){this.fadeAnim&&(this.fadeAnim.stop(),this.fadeAnim=null)}_onAnimEnded(){this.pendingFinishedCallbacks.forEach((e=>e())),this.pendingFinishedCallbacks.length=0}fadeTo(e,t){const i=this.fadeAnim&&this.fadeAnim.isRunning;if(!i&&this.curValue==e)return void(t&&t());if(t&&this.pendingFinishedCallbacks.push(t),i&&e===this.targetValue)return;this.stopAnim();this.targetValue=e,this.fadeAnim=s(this.curValue,this.targetValue,this.animTime,(e=>{e=l(e),this.curValue=e,this.setValueCb(e)}),(()=>this._onAnimEnded()))}skipAnim(){this.fadeAnim&&this.fadeAnim.skip()}setValue(e){this.stopAnim(),this.curValue=e,this.setValueCb(e)}}}},16613:(e,t,i)=>{"use strict";function n(e,t){try{WebAssembly.instantiateStreaming||(WebAssembly.instantiateStreaming=async(e,t)=>{const i=await(await e).arrayBuffer();return await WebAssembly.instantiate(i,t)})}catch(e){throw new Error("WebAssembly is not supported for the current browser.")}if(!e)throw new Error("Expecting a wasm file path.");let i=256,n=256;t&&t.memory&&(i=t.memory.initial,n=t.memory.maximum),this._wasmPath=e,this._memory=new WebAssembly.Memory({initial:i,maximum:n})}i.r(t),i.d(t,{Wasm:()=>n}),n.prototype.constructor=n,n.prototype.instantiate=function(){const e={env:{abortStackOverflow:e=>{throw new Error("overflow")},table:new WebAssembly.Table({initial:0,maximum:0,element:"anyfunc"}),__table_base:0,memory:this._memory,__memory_base:1024,STACKTOP:0,STACK_MAX:this.getBuffer().byteLength}};return new Promise(((t,i)=>{try{WebAssembly.instantiateStreaming(fetch(this._wasmPath),e).then((e=>{const i=e.instance.exports;this.proxy=i,t(i)}))}catch(e){i(e)}}))},n.prototype.getBuffer=function(){return this._memory.buffer}},57872:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CONSOLIDATION_MEMORY_LIMIT:()=>a,DEPTH_EPSILON:()=>M,ENABLE_PIXEL_CULLING:()=>f,GEOMETRY_OVERHEAD:()=>u,GPU_MEMORY_LIMIT:()=>o,GPU_OBJECT_LIMIT:()=>s,INDEX_BUFFER_REGION_SIZE:()=>x,IsUsingWebGPU:()=>T,MODEL_MEMORY_LIMIT:()=>l,PER_FRAME_CONSOLIDATION_TIME_BUDGET:()=>p,PIXEL_CULLING_THRESHOLD:()=>d,USE_BUFFER_MANAGER:()=>v,USE_DEFERRED_CONSOLIDATION:()=>g,USE_HLOD:()=>y,USE_OUT_OF_CORE_TILE_MANAGER:()=>m,USE_VAO:()=>h,VERTEX_BUFFER_REGION_SIZE:()=>b,disableGpuObjectLimit:()=>c,enableOutOfCoreTileManager:()=>A,useBufferManager:()=>_,useHLOD:()=>S,useWebGPU:()=>w});var n=i(55280),r=i(40508);let o=1024*((0,n.isMobileDevice)()?64:256)*1024,s=(0,n.isMobileDevice)()?2500:1e4,a=o/2,l=1048576e3;const c=function(){s=4294967295};let h=!(0,n.isMobileDevice)();const u=336,d=.75;let f=!0;const p=10;let m=!1,g=!1,v=!1,y=!1;const b=1048576,x=1048576;function _(){v=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],h=!v}const E={gpu_memory:2147483648,gpu_objects:512e3,model_memory:4294967296,consolidation_memory:1073741824};function S(){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:E;(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&e&&((0,n.isMobileDevice)()?console.warn("HLOD is not supported on mobile devices"):(y=!0,_(!0),g=!0,f=!1,o=e.gpu_memory,s=e.gpu_objects,l=e.model_memory,a=e.consolidation_memory,console.log(`Using HLOD settings. Memory: ${o}, Object Limit: ${s}, Consolidation Memory: ${a}`)))}function A(){y&&(m=!0,console.log("Using dynamic GPU Memory Management"))}async function w(e){await(0,r.f6)(e)}function T(){return null!==(0,r.cS)()}const M=2*Math.pow(2,-24)},21968:(e,t,i)=>{"use strict";i.d(t,{_:()=>l});var n=i(72091),r=i(8071),o=i.n(r),s=i(70984),a=i.n(s);let l={uniforms:{color1:{type:"v3",value:new n.Vector3(41/255,76/255,120/255)},color2:{type:"v3",value:new n.Vector3(1/255,2/255,3/255)},opacity:{type:"f",value:1},envMap:{type:"t",value:null},envRotationSin:{type:"f",value:0},envRotationCos:{type:"f",value:1},exposureBias:{type:"f",value:1},envMapExposure:{type:"f",value:1},uCamDir:{type:"v3",value:new n.Vector3},uCamUp:{type:"v3",value:new n.Vector3},uResolution:{type:"v2",value:new n.Vector2(600,400)},uHalfFovTan:{type:"f",value:.5},envMapBackground:{type:"i",value:0},backgroundTexture:{type:"t",value:null}},vertexShader:o(),fragmentShader:a()}},25618:(e,t,i)=>{"use strict";i.r(t),i.d(t,{BasicShader:()=>c});var n=i(72091),r=i(30130),o=i(21175),s=i.n(o),a=i(27608),l=i.n(a);let c={uniforms:n.UniformsUtils.merge([n.UniformsLib.common,n.UniformsLib.fog,n.UniformsLib.shadowmap,r.ShaderChunks.CutPlanesUniforms,r.ShaderChunks.IdUniforms,r.ShaderChunks.ThemingUniform,r.ShaderChunks.PointSizeUniforms,r.ShaderChunks.WideLinesUniforms,r.ShaderChunks.DepthTextureTestUniforms]),vertexShader:s(),fragmentShader:l()};n.ShaderLib.firefly_basic=c},31320:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CelShader:()=>c});var n=i(72091),r=i(30130),o=i(44203),s=i.n(o),a=i(91342),l=i.n(a);let c={uniforms:n.UniformsUtils.merge([r.ShaderChunks.DepthTextureUniforms,{tDiffuse:{type:"t",value:null},tID:{type:"t",value:null},resolution:{type:"v2",value:new n.Vector2(1/1024,1/512)},cameraNear:{type:"f",value:1},cameraFar:{type:"f",value:100},tFill:{type:"t",value:null},tPaper:{type:"t",value:null},style:{type:"i",value:0},idEdges:{type:"i",value:1},normalEdges:{type:"i",value:1},depthEdges:{type:"i",value:1},brightness:{type:"f",value:0},contrast:{type:"f",value:0},grayscale:{type:"i",value:0},preserveColor:{type:"i",value:0},levels:{type:"f",value:6},repeats:{type:"f",value:3},rotation:{type:"f",value:0},outlineRadius:{type:"f",value:1},outlineNoise:{type:"i",value:0},tGraphite1:{type:"t",value:null},tGraphite2:{type:"t",value:null},tGraphite3:{type:"t",value:null},tGraphite4:{type:"t",value:null},tGraphite5:{type:"t",value:null},tGraphite6:{type:"t",value:null},tGraphite7:{type:"t",value:null},tGraphite8:{type:"t",value:null}}]),vertexShader:s(),fragmentShader:l()}},48717:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CopyShader:()=>a});var n=i(44203),r=i.n(n),o=i(78551),s=i.n(o);let a={uniforms:{tDiffuse:{type:"t",value:null}},vertexShader:r(),fragmentShader:s()}},12360:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CreateCubeMapFromColors:()=>s,DecodeEnvMap:()=>f});var n=i(72091),r=i(89024),o=i(83081);function s(e,t){for(var i=255*e.x,r=255*e.y,o=255*e.z,s=255*t.x,a=255*t.y,l=255*t.z,c=new Uint8Array(16),h=new Uint8Array(16),u=new Uint8Array(16),d=0;d<4;d++)c[4*d]=i,c[4*d+1]=r,c[4*d+2]=o,c[4*d+3]=255,h[4*d]=s,h[4*d+1]=a,h[4*d+2]=l,h[4*d+3]=255,d>1?(u[4*d]=i,u[4*d+1]=r,u[4*d+2]=o,u[4*d+3]=255):(u[4*d]=s,u[4*d+1]=a,u[4*d+2]=l,u[4*d+3]=255);var f=new n.DataTexture(u,2,2,n.RGBAFormat),p=new n.DataTexture(u,2,2,n.RGBAFormat),m=new n.DataTexture(h,2,2,n.RGBAFormat),g=new n.DataTexture(c,2,2,n.RGBAFormat),v=new n.DataTexture(u,2,2,n.RGBAFormat),y=new n.DataTexture(u,2,2,n.RGBAFormat),b=new n.Texture(null,n.CubeReflectionMapping,n.RepeatWrapping,n.RepeatWrapping,n.LinearFilter,n.LinearFilter,n.RGBAFormat);return b.image=[p,f,g,m,y,v],b.needsUpdate=!0,b}var a=[6.0014,-2.7008,-1.7996,-1.332,3.1029,-5.7721,.3008,-1.0882,5.6268];function l(e,t){var i=255*t[2]+t[3],n=Math.pow(2,(i-127)/2),r=n/t[1],o=t[0]*r,s=a[0]*o+a[3]*n+a[6]*r,l=a[1]*o+a[4]*n+a[7]*r,c=a[2]*o+a[5]*n+a[8]*r;s<0&&(s=0),l<0&&(l=0),c<0&&(c=0),e[0]=s,e[1]=l,e[2]=c}function c(e,t,i){var n=.0625*Math.sqrt(t[0]*i),r=.0625*Math.sqrt(t[1]*i),o=.0625*Math.sqrt(t[2]*i),s=Math.max(Math.max(n,r),Math.max(o,1e-6));s>1&&(s=1);var a=Math.ceil(255*s)/255;n>1&&(n=1),r>1&&(r=1),o>1&&(o=1),e[3]=a;var l=1/a;e[0]=n*l,e[1]=r*l,e[2]=o*l}function h(e,t,i){var n=Math.sqrt(t[0]*i),r=Math.sqrt(t[1]*i),o=Math.sqrt(t[2]*i),s=65504;n>s&&(n=s),r>s&&(r=s),o>s&&(o=s),e[0]=n,e[1]=r,e[2]=o}var u=new Float32Array(4),d=new Float32Array(4);function f(e,t,i,s){if(e.LogLuv){for(var a=Math.pow(2,t),f=Array.isArray(e.image)?e.image:[e.image],p=0;p{"use strict";i.d(t,{b:()=>h});var n=i(72091),r=i(8102),o=i.n(r),s=i(15201),a=i.n(s),l=i(68449),c={uniforms:{tDiffuse:{type:"t",value:null},uColor:{type:"v4",value:new n.Vector4(1,1,1,1)}},vertexShader:o(),fragmentShader:a()};let h=function(e,t,i,r,o){var s,a,h,u=e,d=t,f=i||3,p=r||1,m=o.hasAlpha||!1,g=o.blending||!1,v=o.flipUV||!1;this.render=function(e,t,i){s.render(e,h,i),a.render(e,t,h)},this.setSize=function(e,t){this.cleanup(),u=e,d=t,(h=new n.WebGLRenderTarget(e,t,{minFilter:n.LinearFilter,magFilter:n.LinearFilter,format:void 0!==o.format?o.format:n.RGBAFormat,type:void 0!==o.type?o.type:n.UnsignedByteType,stencilBuffer:!1})).texture.generateMipmaps=!1,s.material.defines.KERNEL_SCALE_H=a.material.defines.KERNEL_SCALE_H=(p/u).toFixed(4),s.material.defines.KERNEL_SCALE_V=a.material.defines.KERNEL_SCALE_V=(p/d).toFixed(4),s.material.needsUpdate=a.material.needsUpdate=!0},this.cleanup=function(){h&&h.dispose()},this.setColor=function(e){a.material.uniforms.uColor.value.x=e.r,a.material.uniforms.uColor.value.y=e.g,a.material.uniforms.uColor.value.z=e.b},this.setAlpha=function(e){a.material.uniforms.uColor.value.w=e},s=new l.ShaderPass(c),a=new l.ShaderPass(c),this.setSize(e,t),s.material.blending=a.material.blending=n.NoBlending,s.material.depthWrite=a.material.depthWrite=!1,s.material.depthTest=a.material.depthTest=!1,s.material.defines.HORIZONTAL=1,s.material.defines.KERNEL_RADIUS=a.material.defines.KERNEL_RADIUS=f.toFixed(1),g&&(a.material.transparent=!0,a.material.blending=n.NormalBlending),m&&(s.material.defines.HAS_ALPHA=a.material.defines.HAS_ALPHA=""),v&&(s.material.defines.FLIP_UV="")}},74139:(e,t,i)=>{"use strict";i.d(t,{r:()=>n});class n{needsClear(e,t){if(e.length!==t.length)return!0;for(let i=0;i{"use strict";i.r(t),i.d(t,{GroundFlags:()=>n});var n={GROUND_UNFINISHED:0,GROUND_FINISHED:1,GROUND_RENDERED:2}},14859:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GroundReflection:()=>m});var n=i(68449),r=i(39147),o=i(21968),s=i(44203),a=i.n(s),l=i(99885),c=i.n(l),h=i(74139),u=i(15371),d=i(57872),f=i(72091),p={uniforms:{tDiffuse:{type:"t",value:null}},vertexShader:a(),fragmentShader:c()};let m=function(e,t,i,s){var a,l,c,h,m,g,v=e,y=v.getContext(),b=t||512,x=i||512,_=!1,E=new f.Color(0,0,0),S=!1,A=!1;this.inTarget=void 0,this.outTarget=void 0;var w,T,M,C,P,D=!0,L=u.GroundFlags.GROUND_UNFINISHED,I={color:new f.Color(1,1,1),alpha:.3,texScale:.5,blurRadius:2,blurTexScale:.5,fadeAngle:Math.PI/18};if(this.setTransform=function(e,t,i){h=e,c.normal=t,c.constant=-e.dot(t)},this.cleanup=function(){a&&a.cleanup(),this.inTarget&&this.inTarget.dispose(),this.outTarget&&this.outTarget.dispose()},this.setSize=function(e,t){b=e,x=t,this.cleanup(),this.inTarget=new f.WebGLRenderTarget(b*I.texScale,x*I.texScale,{magFilter:f.LinearFilter,minFilter:f.LinearFilter,format:f.RGBAFormat,stencilBuffer:!1}),this.inTarget.texture.generateMipmaps=!1,this.inTarget.name="GroundReflection inTarget",this.outTarget=new f.WebGLRenderTarget(b*I.texScale,x*I.texScale,{magFilter:f.LinearFilter,minFilter:f.LinearFilter,format:f.RGBAFormat,stencilBuffer:!1}),this.outTarget.texture.generateMipmaps=!1,this.outTarget.name="GroundReflection outTarget",a?a.setSize(b*I.texScale*I.blurTexScale,x*I.texScale*I.blurTexScale):a=new r.b(b*I.texScale*I.blurTexScale,x*I.texScale*I.blurTexScale,I.blurRadius,1,{hasAlpha:!0,blending:!0,flipUV:!0})},this.updateCamera=function(e){var t;t=e.isPerspective?h.clone():e.target.clone();var i=e.position.clone().sub(t).normalize(),n=Math.PI/2-i.angleTo(c.normal);if(!(_=n<0)){if(I.fadeAngle>0){var r=Math.min(I.fadeAngle,n)/I.fadeAngle;a.setAlpha(r*I.alpha)}var o,s,l,u=(s=(o=c).normal,l=o.constant,(new f.Matrix4).set(1-2*s.x*s.x,-2*s.y*s.x,-2*s.x*s.z,-2*l*s.x,-2*s.x*s.y,1-2*s.y*s.y,-2*s.y*s.z,-2*l*s.y,-2*s.x*s.z,-2*s.y*s.z,1-2*s.z*s.z,-2*l*s.z,0,0,0,1));(m=e.clone()).applyMatrix4(u),m.projectionMatrix.elements[5]*=-1,m.matrixWorldNeedsUpdate=!0,e.worldUpTransform?m.worldUpTransform=e.worldUpTransform.clone():m.worldUpTransform=new f.Matrix4}},this.renderIntoReflection=function(e){_||(v.setRenderTarget(this.inTarget),v.render(e,m))},this.prepareGroundReflection=(T=[],M=0,C=0,P=0,function(e,t,i,n,r,o){var s=t.modelQueue();if(L!==u.GroundFlags.GROUND_UNFINISHED||s.isEmpty())return L=u.GroundFlags.GROUND_FINISHED,r;const a=s.getGeomScenesPerModel();if(D=this.needsClear(T,a)||D){if(D=!1,this.updateCamera(t.camera),this.isGroundCulled())return L=u.GroundFlags.GROUND_FINISHED,r;this.clear(),T=a,w=s.getGeomScenes(),M=w.length,C=0,P=n?Math.max(Math.ceil(M/100),n):M,L=u.GroundFlags.GROUND_UNFINISHED}else{if(L!==u.GroundFlags.GROUND_UNFINISHED)return L=u.GroundFlags.GROUND_FINISHED,r;0===n&&(P=M)}var l,c,h;r&&(l=performance.now(),c=(o=void 0===o?1:o)*r);for(var d=0;d{"use strict";i.r(t),i.d(t,{GroundShadow:()=>N,createGroundShape:()=>R,setGroundShapeTransform:()=>O});var n=i(2179),r=i(68449),o=i(67312),s=i.n(o),a=i(2647),l=i.n(a),c=i(44203),h=i.n(c),u=i(63694),d=i.n(u),f=i(12065),p=i.n(f),m=i(17797),g=i.n(m),v=i(74139),y=i(15371),b=i(57872),x=i(4897),_=i(21706),E=i(68747),S=i(72091);const A=2;var w={uniforms:{cutplanes:{type:"v4v",value:[]}},vertexShader:s(),fragmentShader:l()},T={uniforms:{tDepth:{type:"t",value:null},worldSize:{type:"v3",value:new S.Vector3(1,1,1)}},defines:{},vertexShader:h(),fragmentShader:d()},M={uniforms:{tDepth:{type:"t",value:null}},defines:{},vertexShader:h(),fragmentShader:p()},C={uniforms:{tDepth:{type:"t",value:null},uShadowColor:{type:"v4",value:new S.Vector4(0,0,0,1)}},vertexShader:h(),fragmentShader:g()};let P,D,L,I=new _.LmvBox3;function R(e){var t=new S.PlaneBufferGeometry(1,1);return t.index.array.reverse(),new S.Mesh(t,e)}function O(e,t,i,n,r){P||(P=new S.Matrix4),D||(D=new S.Vector3),L||(L=new S.Vector3),D.subVectors(t,n),P.lookAt(D,t,r),L.copy(n).multiplyScalar(-.5*i.y).add(t),e.position.copy(L),e.rotation.setFromRotationMatrix(P),e.scale.set(i.z,i.x,i.y)}function N(e,t){var i,o=e;const s=new x.FrustumIntersector;var a,l,c,h,u,d,f,p,m,g,v,_,P,D,L,N,F,U,B,k=!1,V=!0,G=y.GroundFlags.GROUND_FINISHED,z={texSize:64,pixScale:1,blurRadius:7,debug:!1};if(this.setTransform=(v=new S.Vector3(0,0,0),_=new S.Vector3(0,0,0),P=new S.Vector3(0,0,0),D=new S.Vector3(0,0,0),function(e,t,n,r){e.equals(v)&&t.equals(_)&&n.equals(P)&&r.equals(D)||(v.copy(e),_.copy(t),P.copy(n),D.copy(r),this.setDirty(),i.left=-t.z/2,i.right=t.z/2,i.top=t.x/2,i.bottom=-t.x/2,i.near=1,i.far=t.y+i.near,i.updateProjectionMatrix(),O(l,e,t,n,r),i.position.addVectors(e,n.clone().multiplyScalar(-t.y/2-i.near)),r&&i.up.set(r.x,r.y,r.z),i.lookAt(e),z.debug&&(g.position.set(e.x,e.y,e.z),g.rotation.set(i.rotation.x,i.rotation.y,i.rotation.z),g.scale.set(t.z,t.x,t.y)),m.uniforms.worldSize.value.copy(t),i.orthoScale=t.x,i.clientHeight=z.texSize,s.reset(i),s.areaCullThreshold=A)}),this.renderIntoShadow=function(e){if(!e.overrideMaterial||!e.overrideMaterial.transparent){e.forEachNoMesh&&(b.ENABLE_PIXEL_CULLING||b.USE_HLOD)&&(e.forEachNoMesh((t=>{e.frags.getWorldBounds(t,I);const i=e.frags.vizflags[t]&E.MeshFlags.MESH_VISIBLE,n=s.estimateProjectedDiameter(I){"use strict";i.r(t),i.d(t,{FloatToHalf:()=>a,HALF_INT_MAX:()=>c,HalfTest:()=>d,HalfToFloat:()=>l,HalfToInt:()=>u,IntToHalf:()=>h});var n=new Float32Array(1),r=new Uint32Array(n.buffer),o=new Uint16Array(1),s=new Uint16Array(1);let a=function(e){n[0]=e;var t=r[0],i=0;if(2147483647&t){var a=2147483648&t,l=2139095040&t,c=8388607&t;if(0===l)s[i++]=a>>16;else if(2139095040==l)s[i++]=0===c?a>>16|31744:65024;else{var h,u,d=a>>16,f=(l>>23)-127+15;f>=31?s[i++]=a>>16|31744:f<=0?(14-f>24?h=0:(h=(c|=8388608)>>14-f,o[0]=h,h=o[0],c>>13-f&1&&(h+=1)),s[i++]=d|h):(u=f<<10,o[0]=u,u=o[0],h=c>>13,o[0]=h,h=o[0],s[i++]=4096&c?1+(d|u|h):d|u|h)}}else s[i++]=t>>16;return s[0]},l=function(e){var t,i=65535&e;if(32767&i){var o=32768&i,s=31744&i,a=1023&i;if(0===s){var l=-1;do{l++,a<<=1}while(!(1024&a));var c=o<<16,h=(s<<16>>26)-15+127-l,u=h<<23,d=(1023&a)<<13;t=c|u|d}else t=31744==s?0===a?o<<16|2139095040:4290772992:(c=o<<16)|(u=(h=(s<<16>>26)-15+127)<<23)|(d=a<<13)}else t=i<<16;return r[0]=t,n[0]},c=59390,h=function(e){if(e>c-1||e<0)return console.log("out of range"),a(NaN);if(0===e)return 0;var t=!1;e>c/2-1&&(t=!0,e-=c/2-1);var i=0|Math.abs(e/1024),n=Math.pow(2,i-13),r=n+(e-1024*i)*n/1024;return t&&(r=-r),a(r)},u=function(e){if(0===e)return 0;var t=l(e),i=!1;t<0&&(i=!0,t=-t);var n=0|Math.floor(Math.log(t)/Math.log(2)),r=Math.pow(2,n),o=(t-r)/r*1024+1024*(n+13);return i&&(o+=c/2-1),o},d=function(){for(var e=[-1/255,-.17,-75,-1789,-.005],t=0;t{"use strict";i.r(t),i.d(t,{LineStyleDefs:()=>r,createLinePatternForDef:()=>l,createLinePatternTexture:()=>a,createLinePatternTextureData:()=>o,createLinePatternTextureFromDefs:()=>s});var n=i(72091);let r=[{id:"SOLID",name:"Solid",ascii_art:"_______________________________________",def:[1]},{id:"BORDER",name:"Border",ascii_art:"__ __ . __ __ . __ __ . __ __ . __ __ .",def:[.5,-.25,.5,-.25,0,-.25]},{id:"BORDER2",name:"Border (.5x)",ascii_art:"__ __ . __ __ . __ __ . __ __ . __ __ .",def:[.25,-.125,.25,-.125,0,-.125]},{id:"BORDERX2",name:"Border (2x)",ascii_art:"____ ____ . ____ ____ . ___",def:[1,-.5,1,-.5,0,-.5]},{id:"CENTER",name:"Center",ascii_art:"____ _ ____ _ ____ _ ____ _ ____ _ ____",def:[1.25,-.25,.25,-.25]},{id:"CENTER2",name:"Center (.5x)",ascii_art:"___ _ ___ _ ___ _ ___ _ ___ _ ___",def:[.75,-.125,.125,-.125]},{id:"CENTERX2",name:"Center (2x)",ascii_art:"________ __ ________ __ _____",def:[2.5,-.5,.5,-.5]},{id:"DASHDOT",name:"Dash dot",ascii_art:"__ . __ . __ . __ . __ . __ . __ . __",def:[.5,-.25,0,-.25]},{id:"DASHDOT2",name:"Dash dot (.5x)",ascii_art:"_._._._._._._._._._._._._._._.",def:[.25,-.125,0,-.125]},{id:"DASHDOTX2",name:"Dash dot (2x)",ascii_art:"____ . ____ . ____ . ___",def:[1,-.5,0,-.5]},{id:"DASHED",name:"Dashed",ascii_art:"__ __ __ __ __ __ __ __ __ __ __ __ __ _",def:[.5,-.25]},{id:"DASHED2",name:"Dashed (.5x)",ascii_art:"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _",def:[.25,-.125]},{id:"DASHEDX2",name:"Dashed (2x)",ascii_art:"____ ____ ____ ____ ____ ___",def:[1,-.5]},{id:"DIVIDE",name:"Divide",ascii_art:"____ . . ____ . . ____ . . ____ . . ____",def:[.5,-.25,0,-.25,0,-.25]},{id:"DIVIDE2",name:"Divide (.5x)",ascii_art:"__..__..__..__..__..__..__..__.._",def:[.25,-.125,0,-.125,0,-.125]},{id:"DIVIDEX2",name:"Divide (2x)",ascii_art:"________ . . ________ . . _",def:[1,-.5,0,-.5,0,-.5]},{id:"DOT",name:"Dot",ascii_art:". . . . . . . . . . . . . . . . . . . . . . . .",def:[0,-.25]},{id:"DOT2",name:"Dot (.5x)",ascii_art:"........................................",def:[0,-.125]},{id:"DOTX2",name:"Dot (2x)",ascii_art:". . . . . . . . . . . . . .",def:[0,-.5]},{id:"HIDDEN",name:"Hidden",ascii_art:"__ __ __ __ __ __ __ __ __ __ __ __ __ __",def:[.25,-.125]},{id:"HIDDEN2",name:"Hidden (.5x)",ascii_art:"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _",def:[.125,-.0625]},{id:"HIDDENX2",name:"Hidden (2x)",ascii_art:"____ ____ ____ ____ ____ ____ ____",def:[.5,-.25]},{id:"PHANTOM",name:"Phantom",ascii_art:"______ __ __ ______ __ __ ______",def:[1.25,-.25,.25,-.25,.25,-.25]},{id:"PHANTOM2",name:"Phantom (.5x)",ascii_art:"___ _ _ ___ _ _ ___ _ _ ___ _ _",def:[.625,-.125,.125,-.125,.125,-.125]},{id:"PHANTOMX2",name:"Phantom (2x)",ascii_art:"____________ ____ ____ _",def:[2.5,-.5,.5,-.5,.5,-.5]},{id:"ACAD_ISO02W100",name:"ISO dash",ascii_art:"__ __ __ __ __ __ __ __ __ __ __ __ __",def:[12,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO03W100",name:"ISO dash space",ascii_art:"__ __ __ __ __ __",def:[12,-18],pen_width:1,unit:"mm"},{id:"ACAD_ISO04W100",name:"ISO long-dash dot",ascii_art:"____ . ____ . ____ . ____ . _",def:[24,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO05W100",name:"ISO long-dash double-dot",ascii_art:"____ .. ____ .. ____ .",def:[24,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO06W100",name:"ISO long-dash triple-dot",ascii_art:"____ ... ____ ... ____",def:[24,-3,.5,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO07W100",name:"ISO dot",ascii_art:". . . . . . . . . . . . . . . . . . . .",def:[.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO08W100",name:"ISO long-dash short-dash",ascii_art:"____ __ ____ __ ____ _",def:[24,-3,6,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO09W100",name:"ISO long-dash double-short-dash",ascii_art:"____ __ __ ____",def:[24,-3,6,-3,6,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO10W100",name:"ISO dash dot",ascii_art:"__ . __ . __ . __ . __ . __ . __ . ",def:[12,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO11W100",name:"ISO double-dash dot",ascii_art:"__ __ . __ __ . __ __ . __ _",def:[12,-3,12,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO12W100",name:"ISO dash double-dot",ascii_art:"__ . . __ . . __ . . __ . .",def:[12,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO13W100",name:"ISO double-dash double-dot",ascii_art:"__ __ . . __ __ . . _",def:[12,-3,12,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO14W100",name:"ISO dash triple-dot",ascii_art:"__ . . . __ . . . __ . . . _",def:[12,-3,.5,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO15W100",name:"ISO double-dash triple-dot",ascii_art:"__ __ . . . __ __ . .",def:[12,-3,12,-3,.5,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"FENCELINE1",name:"Fenceline circle",ascii_art:"----0-----0----0-----0----0-----0--",def:[.25,-.1,["CIRC1","ltypeshp.shx","x=-.1","s=.1"],-.1,1]},{id:"FENCELINE2",name:"Fenceline square",ascii_art:"----[]-----[]----[]-----[]----[]---",def:[.25,-.1,["BOX","ltypeshp.shx","x=-.1","s=.1"],-.1,1]},{id:"TRACKS",name:"Tracks",ascii_art:"-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-",def:[.15,["TRACK1","ltypeshp.shx","s=.25"],.15]},{id:"BATTING",name:"Batting",ascii_art:"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS",def:[1e-4,-.1,["BAT","ltypeshp.shx","x=-.1","s=.1"],-.2,["BAT","ltypeshp.shx","r=180","x=.1","s=.1"],-.1]},{id:"HOT_WATER_SUPPLY",name:"Hot water supply",ascii_art:"---- HW ---- HW ---- HW ----",def:[.5,-.2,["HW","STANDARD","S=.1","R=0.0","X=-0.1","Y=-.05"],-.2]},{id:"GAS_LINE",name:"Gas line",ascii_art:"----GAS----GAS----GAS----GAS----GAS----GAS--",def:[.5,-.2,["GAS","STANDARD","S=.1","R=0.0","X=-0.1","Y=-.05"],-.25]},{id:"ZIGZAG",name:"Zig zag",ascii_art:"/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/",def:[1e-4,-.2,["ZIG","ltypeshp.shx","x=-.2","s=.2"],-.4,["ZIG","ltypeshp.shx","r=180","x=.2","s=.2"],-.2]}],o=function(e,t){for(var i=e+3,r=t,o=1;oi&&(i=r.def.length)}let{tex:s,pw:a,lineStyleTex:c}=o(i,t);for(var h=0;h4&&void 0!==arguments[4]?arguments[4]:96;for(var o=i*n,s=e.unit&&"mm"==e.unit?1/25.4:1,a=e.pen_width||0,l=e.def,c=0,h=0;h{"use strict";i.d(t,{Ay:()=>r,fX:()=>o,v8:()=>s});var n=i(33472);class r{constructor(){this.webglContextId=1}onContextRestored(){this.webglContextId++}refreshTargetIfNeeded(e){this.refreshIfNeeded(e);const t=null==e?void 0:e.shareDepthFrom;this.refreshIfNeeded(t)}refreshTargetsIfNeeded(e){if(Array.isArray(e))for(var t=0;t{const t={};return e.getAllModels().forEach((e=>{e.isConsolidated()&&(e.unconsolidate(),t[e.id]=!0)})),t},s=async(e,t)=>{for(const i of e.getAllModels())t[i.id]&&await e.impl.consolidateModel(i)}},68630:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MaterialConverter:()=>s});var n=i(72091),r=i(36771);const o=Autodesk.Viewing;let s={convertMaterial:async function(e,t,i,o){if(c(e))return await a(),i=s.convertPrismMaterial(e,t,i,o),e.transparent=i.transparent,i;o=o||e.userassets;var h,u,d=e.materials,f=d[o],p=f.properties;if(i){if(!(i instanceof n.MeshPhongMaterial))return null;i.needsUpdate=!0}else i=new n.MeshPhongMaterial;if(i.proteinMat=e,i.proteinCategories=f.categories,i.packedNormals=!0,f&&"SimplePhong"===f.definition){i.tag=f.tag,i.proteinType=f.proteinType,void 0===i.proteinType&&(i.proteinType=null);var m=(0,r.parseMaterialBoolean)(p,"generic_baked_lighting",!1);i.disableEnvMap=m;var g=i.ambient=(0,r.parseMaterialColor)(p,"generic_ambient"),v=i.color=(0,r.parseMaterialColor)(p,"generic_diffuse"),y=i.specular=(0,r.parseMaterialColor)(p,"generic_specular"),b=i.emissive=(0,r.parseMaterialColor)(p,"generic_emissive");i.shininess=(0,r.parseMaterialScalar)(p,"generic_glossiness",30),i.opacity=1-(0,r.parseMaterialScalar)(p,"generic_transparency",0),i.reflectivity=(0,r.parseMaterialScalar)(p,"generic_reflectivity_at_0deg",0);var x=(0,r.parseMaterialBoolean)(p,"generic_bump_is_normal"),_=(0,r.parseMaterialScalar)(p,"generic_bump_amount",0);null==_&&(_=1),x?(_>1&&(_=1),i.normalScale=new n.Vector2(_,_)):(_>=1&&(_=.03),i.bumpScale=_);var E=(0,r.parseMaterialBoolean)(p,"generic_is_metal");void 0!==E&&(i.metal=E);var S=(0,r.parseMaterialBoolean)(p,"generic_backface_cull");void 0===S||S||(i.side=n.DoubleSide),i.transparent=f.transparent,i.textureMaps={};var A=f.textures;for(var w in A)if((h={}).textureObj=d[A[w].connections[0]],u=h.textureObj.properties,h.textureObj.matrix=l(h.textureObj),h.uriPointer=u.uris.unifiedbitmap_Bitmap.values,h.uri=h.uriPointer[0],h.uri){if("generic_diffuse"==w)h.mapName="map",(!i.color||0===i.color.r&&0===i.color.g&&0===i.color.b)&&i.color.setRGB(1,1,1);else if("generic_bump"==w)h.mapName=x?"normalMap":"bumpMap";else if("generic_specular"==w)h.mapName="specularMap";else{if("generic_alpha"!=w)continue;h.mapName="alphaMap",i.side=n.DoubleSide,i.transparent=!0}i.textureMaps[h.mapName]=h}0===v.r&&0===v.g&&0===v.b&&0===y.r&&0===y.g&&0===y.b&&0===g.r&&0===g.g&&0===g.b&&0===b.r&&0===b.g&&0===b.b&&(v.r=v.g=v.b=.4),i.extraDepthOffset=(0,r.parseMaterialScalar)(p,"generic_depth_offset"),i.extraDepthOffset&&(i.polygonOffset=!0,i.polygonOffsetFactor=i.extraDepthOffset,i.polygonOffsetUnits=0)}else i.ambient=new n.Color(197379),i.color=new n.Color(7829367),i.specular=new n.Color(3355443),i.shininess=30,i.shading=n.SmoothShading;return e.transparent=i.transparent,i},convertTexture:function(e,t,i,o){"bumpMap"==e.mapName||"normalMap"==e.mapName?t.anisotropy=0:t.anisotropy=o||0;t.flipY=void 0===e.flipY||e.flipY,t.invert=!1,t.wrapS=n.RepeatWrapping,t.wrapT=n.RepeatWrapping,t.offset=e.offset??t.offset,t.rotation=e.rotation??t.rotation??0,t.repeat=e.repeat??t.repeat,e.isPrism?s.convertPrismTexture(e.textureObj,t,i):function(e,t){if(!e)return;var i=e.properties;t.invert=(0,r.parseMaterialBoolean)(i,"unifiedbitmap_Invert"),t.clampS=!(0,r.parseMaterialBoolean)(i,"texture_URepeat",!0),t.clampT=!(0,r.parseMaterialBoolean)(i,"texture_VRepeat",!0),t.wrapS=t.clampS?n.ClampToEdgeWrapping:n.RepeatWrapping,t.wrapT=t.clampT?n.ClampToEdgeWrapping:n.RepeatWrapping,t.matrix=e.matrix||(e.matrix=(0,r.Get2DSimpleMapTransform)(i))}(e.textureObj,t)},isPrismMaterial:c,convertMaterialGltf:function(e,t){var i=new n.MeshPhongMaterial({name:e.name??""});i.packedNormals=!0,i.textureMaps={},i.reflectivity=0;var r=e.pbrMetallicRoughness||{},o=r.baseColorTexture||r.baseColorFactor;if(o)if(Array.isArray(o))i.color=new n.Color(o[0],o[1],o[2]),i.opacity=o[3];else if("object"==typeof o){i.color=new n.Color(1,1,1);var s={mapName:"map"},a=t.gltf.textures[o.index];s.uri=t.gltf.images[a.source].uri,s.flipY=!1,i.textureMaps[s.mapName]=s,u(o,s)}var l=r.metallicRoughnessTexture;if(l){s={mapName:"metallicRoughnessTexture"},a=t.gltf.textures[l.index];s.uri=t.gltf.images[a.source].uri,s.flipY=!1,i.textureMaps[s.mapName]=s,u(l,s)}else i.metalness=void 0!==r.metallicFactor?r.metallicFactor:1,i.roughness=void 0!==r.roughnessFactor?r.roughnessFactor:1;!0===e.doubleSided&&(i.side=n.DoubleSide);var c=e.alphaMode||h.OPAQUE;c===h.BLEND?(i.transparent=!0,i.depthWrite=!1):(i.transparent=!1,c===h.MASK&&(i.alphaTest=void 0!==e.alphaCutoff?e.alphaCutoff:.5));if(void 0!==e.normalTexture){s={mapName:"normalTexture"},a=t.gltf.textures[e.normalTexture.index];s.uri=a.source,s.flipY=!1,s.uri=t.gltf.images[a.source].uri,u(e.normalTexture,s),i.normalScale=s.repeat,void 0!==e.normalTexture.scale&&i.normalScale.set(e.normalTexture.scale,e.normalTexture.scale)}if(void 0!==e.occlusionTexture){s={mapName:"occlusionTexture"},a=t.gltf.textures[e.occlusionTexture.index];s.uri=t.gltf.images[a.source].uri,s.flipY=!1,i.textureMaps[s.mapName]=s,void 0!==e.occlusionTexture.strength&&(i.aoMapIntensity=e.occlusionTexture.strength),u(e.occlusionTexture,s)}void 0!==e.emissiveFactor&&(i.emissive=(new n.Color).fromArray(e.emissiveFactor));if(void 0!==e.emissiveTexture){s={mapName:"emissiveTexture"},a=t.gltf.textures[e.emissiveTexture.index];s.uri=t.gltf.images[a.source].uri,s.flipY=!1,i.textureMaps[s.mapName]=s,u(e.emissiveTexture,s)}return i},applyAppearanceHeuristics:function(e,t,i){var r=e.proteinMat?e.proteinMat:null,o=e.prismType&&-1!==e.prismType.indexOf("Prism");o&&e.transparent&&(e.side===n.FrontSide&&"PrismGlazing"!==e.prismType&&(e.side=n.DoubleSide),e.side===n.DoubleSide&&e.depthTest&&(e.twoPassTransparency=!0));var s=e.textureMaps||{};if(!t){var a,l=e.proteinType&&-1!==e.proteinType.indexOf("Prism");if(e.metal)e.reflectivity||(e.reflectivity=d(e.specular)),r&&(1===e.reflectivity&&(e.reflectivity=d(e.specular)),0===e.color.r&&0===e.color.g&&0===e.color.b||(e.color.r*=.1,e.color.g*=.1,e.color.b*=.1));else if(l){var c=!1;if("PrismLayered"===e.proteinType){e.clearcoat=!0,e.reflectivity=.06;var h=e.proteinCategories;h&&h.length&&-1!=h[0].indexOf("Metal")&&(c=!0)}e.reflectivity=Math.sqrt(e.reflectivity),c?e.specular.copy(e.color):(e.specular.r=e.reflectivity,e.specular.g=e.reflectivity,e.specular.b=e.reflectivity)}else e.reflectivity?e.reflectivity>.3?(e.metal=!0,e.specular.r=e.color.r,e.specular.g=e.color.g,e.specular.b=e.color.b,e.color.r*=.1,e.color.g*=.1,e.color.b*=.1):(e.specular.r*=e.reflectivity,e.specular.g*=e.reflectivity,e.specular.b*=e.reflectivity):1!==e.color.r||1!==e.color.g||1!==e.color.b||1!==e.specular.r||1!==e.specular.g||1!==e.specular.b||s.map||s.specularMap?(e.reflectivity=.01+.06*d(e.specular),e.specular.r*=e.reflectivity,e.specular.g*=e.reflectivity,e.specular.b*=e.reflectivity):(e.metal=!0,e.reflectivity=.7,e.color.r*=.1,e.color.g*=.1,e.color.b*=.1),e.opacity<1&&(e.reflectivity=1);(e.transparent||-1!==(null===(a=s.map)||void 0===a||null===(a=a.uri)||void 0===a?void 0:a.toLowerCase().indexOf(".png"))||s.alphaMap)&&(e.alphaTest=.01)}if(s.normalMap){var u=e.bumpScale;(void 0===u||u>=1)&&(u=1),e.normalScale=new n.Vector2(u,u)}else(void 0===e.bumpScale&&(s.map||s.bumpMap)||e.bumpScale>=1)&&(e.bumpScale=.03);if((!t||o)&&e.transparent){if(o)e.lmv_depthWriteTransparent=!0,e.depthWrite=!!i;else if(e.opacity>=1)s.alphaMap||(e.transparency=!1);else e.lmv_depthWriteTransparent=!0,e.depthWrite=!!i}void 0!==e.shininess&&(e.shininess*=.25)},applyGeometryFlagsToMaterial:function(e,t){t.attributes.color&&(e.vertexColors=n.VertexColors,e.needsUpdate=!0);if(!e.proteinType&&t.attributes.uv&&t.attributes.uv.isPattern){var i=!1;e.map&&!e.bumpMap&&(e.bumpMap=e.map,e.needsUpdate=!0,i=!0),e.textureMaps&&e.textureMaps.map&&!e.textureMaps.bumpMap&&(e.textureMaps.bumpMap=e.textureMaps.map,e.needsUpdate=!0,i=!0),i&&void 0===e.bumpScale&&(e.bumpScale=.03)}},hasTiling:function(e){var t=e.materials[e.userassets[0]];if(t){if("TilingPattern"===t.definition)return!0}return!1},loadMaterialConverterPrismLibrary:a};async function a(){if(o.MaterialConverterPrism&&o.MaterialConverterPrism.convertPrismMaterial||await o.theExtensionManager.downloadExtension("Autodesk.Viewing.MaterialConverterPrism"),!s.convertPrismMaterial)for(let e in o.MaterialConverterPrism)s[e]=o.MaterialConverterPrism[e]}function l(e){return e.matrix||(e.matrix=(0,r.Get2DSimpleMapTransform)(e.properties)),e.matrix}function c(e){var t=e.materials,i=t[e.userassets[0]];if(i){var n=i.definition;if("TilingPattern"===n)(i=t[i.properties.references.grout_material.connections[0]])&&(n=i.definition);return"PrismLayered"===n||"PrismMetal"===n||"PrismOpaque"===n||"PrismTransparent"===n||"PrismGlazing"===n||"PrismWood"===n}return!1}var h={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function u(e,t){var i;t.offset=new n.Vector2(0,0),t.repeat=new n.Vector2(1,1),t.rotation=0;const r=null===(i=e.extensions)||void 0===i?void 0:i.KHR_texture_transform;if(r&&"object"==typeof r){const{scale:e,offset:i,rotation:o}=r;i&&(t.offset=new n.Vector2(i[0],i[1])),e&&(t.repeat=new n.Vector2(e[0],e[1])),o&&(t.rotation=o)}}function d(e){return.299*e.r+.587*e.g+.114*e.b}},36771:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Get2DSimpleMapTransform:()=>h,MaterialConverterCommon:()=>u,SRGBToLinear:()=>c,SRGBToLinearFloat:()=>l,parseMaterialBoolean:()=>s,parseMaterialColor:()=>r,parseMaterialGeneric:()=>a,parseMaterialScalar:()=>o});var n=i(72091);function r(e,t,i){if(!e||!e.colors)return new n.Color(1,0,0);var r=e.colors[t];if(!r)return new n.Color(0,0,0);var o=r.values;if(!o||!o.length)return new n.Color(1,0,0);var s=o[0];return new n.Color(s.r,s.g,s.b)}function o(e,t,i){if(!e||!e.scalars)return i;var n=e.scalars[t];return n?n.values[0]:i}function s(e,t,i){if(!e||!e.booleans)return i;var n=e.booleans[t];return void 0===n?i:n}function a(e,t,i,n){if(!e||!e[t])return n;var r=e[t][i];return r?r.values[0]:n}function l(e){var t=e;return t<=.04045?t/=12.92:t=Math.pow((t+.055)/1.055,2.4),t}function c(e){var t,i,r;return t=l(e.r),i=l(e.g),r=l(e.b),new n.Color(t,i,r)}function h(e){var t=o(e,"texture_UScale",1),i=o(e,"texture_VScale",1),n=o(e,"texture_UOffset",0),r=o(e,"texture_VOffset",0),s=o(e,"texture_WAngle",0);return{elements:[Math.cos(s)*t,Math.sin(s)*i,0,-Math.sin(s)*t,Math.cos(s)*i,0,n,r,1]}}let u={parseMaterialColor:r,parseMaterialScalar:o,parseMaterialBoolean:s,parseMaterialGeneric:a,SRGBToLinearFloat:l,SRGBToLinear:c,Get2DSimpleMapTransform:h}},62612:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MATERIAL_VARIANT:()=>A,MaterialManager:()=>T});var n=i(72091),r=i(90255),o=i(83081),s=i(49965),a=i.n(s),l=i(24314),c=i.n(l),h=i(30130);let u={uniforms:n.UniformsUtils.merge([h.ShaderChunks.CutPlanesUniforms,{pixelsPerUnit:{type:"f",value:1},aaRange:{type:"f",value:.5},tLayerMask:{type:"t",value:null},tLineStyle:{type:"t",value:null},vLineStyleTexSize:{type:"v2",value:new n.Vector2(13,70)},tRaster:{type:"t",value:null},tSelectionTexture:{type:"t",value:null},vSelTexSize:{type:"v2",value:new n.Vector2(4096,1)},displayPixelRatio:{type:"f",value:1},opacity:{type:"f",value:1},selectionColor:{type:"v4",value:new n.Vector4(0,0,1,1)},modelId:{type:"v3",value:new n.Vector3(0,0,0)},viewportId:{type:"f",value:0},swap:{type:"f",value:0},grayscale:{type:"f",value:0},viewportBounds:{type:"v4",value:new n.Vector4(0,0,1,1)},unpackXform:{type:"v4",value:new n.Vector4(1,1,0,0),perObject:!0},tIdColor:{type:"t",value:null,perObject:!0},vIdColorTexSize:{type:"v2",value:new n.Vector2(256,1),perObject:!0},meshAnimTime:{type:"f",value:0,perObject:!0}}]),vertexShader:a(),fragmentShader:c()};var d=i(97431),f=i.n(d),p=i(65144),m=i.n(p),g=i(30514);let v={uniforms:n.UniformsUtils.merge([u.uniforms,{aaRange:{type:"f",value:1},size:{type:"v2",value:new n.Vector2(1024,768)},cameraPos:{type:"v3",value:new n.Vector3},tanHalfFov:{type:"f",value:0},miterLimit:{type:"f",value:g.VBB_MITER_SEGMENT_LIMIT},miterScaleFactor:{type:"f",value:g.VBB_MITER_SEGMENT_SCALE_FACTOR},miterCP:{type:"f",value:g.VBB_MITER_SEGMENT_CP}}]),vertexShader:f(),fragmentShader:m()};class y extends n.ShaderMaterial{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(e.isScreenSpace?{uniforms:n.UniformsUtils.clone(v.uniforms),vertexShader:v.vertexShader,fragmentShader:v.fragmentShader}:{uniforms:n.UniformsUtils.clone(u.uniforms),vertexShader:u.vertexShader,fragmentShader:u.fragmentShader}),this.isScreenSpace=!!e.isScreenSpace,e.hasLineStyles&&(this.hasLineStyles=!0),this.is2d=!0,this.supportsViewportBounds=!0,this.depthWrite=!1,this.depthTest=!1,this.side=n.DoubleSide,this.transparent=!0,this.blending=n.NormalBlending,this.type="LMVLineMaterial"+(this.isScreenSpace?"SS":""),"multiply"==e.compositeOperation?this.blending=n.MultiplyBlending:"min"==e.compositeOperation||"darken"==e.compositeOperation?(this.blending=n.CustomBlending,this.blendEquation=n.MinEquation,this.blendEquationAlpha=n.AddEquation,this.blendSrcAlpha=n.SrcAlphaFactor,this.blendDstAlpha=n.DstAlphaFactor):"max"!=e.compositeOperation&&"lighten"!=e.compositeOperation||(this.blending=n.CustomBlending,this.blendEquation=n.MaxEquation,this.blendEquationAlpha=n.AddEquation,this.blendSrcAlpha=n.SrcAlphaFactor,this.blendDstAlpha=n.DstAlphaFactor)}}var b=i(97011),x=i(68630);function _(e,t,i){e.x=t.r,e.y=t.g,e.z=t.b,e.w=i}var E=new n.Color("#0000FF"),S=.6;const A={INSTANCED:0,VERTEX_IDS:1},w=(e,t,i)=>{e[t]=i,e.needsUpdate=!0};function T(e){this._renderer=e,this._textures={},this._texturesToUpdate=[],this._materials={},this._materialsNonHDR={},this._exposureBias=0,this._tonemapMethod=0,this._envMapExposure=1,this._envRotationSin=0,this._envRotationCos=1,this._reflectionMap=null,this._irradianceMap=null,this._cutplanes=[],this.cutplanesHideInterior=0,this._mrtNormals=!1,this._mrtIdBuffer=void 0,this._polygonOffsetOn=!1,this._pixelsPerUnit=1,this._lineStyleTex=null,this._swapBlackAndWhite=0,this._grayscaleLines=0,this._depthWriteTransparent=!0,this._needsTwoSided=!1,this._hasTransparentMaterial=!1,this.hasPrism=!1,this._forceDoubleSided=!1,this._layerMaskTextures={},this._layerMaps={},this._selectionTextures={},this._prismWoodTextures=void 0,this.defaultMaterial=new n.MeshPhongMaterial({color:7829367,specular:3355443,shininess:30,reflectivity:0}),this.addMaterial("__defaultMaterial__",this.defaultMaterial),this.initLineStyleTexture(),this.refCount=0}T.prototype.dtor=function(){this.cleanup(),n.Cache.clear(),this._renderer=null},T.prototype._getModelHash=function(e){const t=e&&("number"==typeof e?e:e.id);return"model:"+(t||"")+"|"},T.prototype._getMaterialHash=function(e,t){return e&&e.isOTG()?t:this._getModelHash(e)+"mat:"+t},T.prototype._getTextureHash=function(e,t,i,n){return`${this._getModelHash(e)}mat:${n}|tex:${t}|map:${i}`},T.prototype.addNonHDRMaterial=function(e,t){t.doNotCut||(t.cutplanes=this._cutplanes),this._applyMRTFlags(t),this._materialsNonHDR[e]=t},T.prototype.removeNonHDRMaterial=function(e){delete this._materialsNonHDR[e]},T.prototype.addMaterialNonHDR=function(e,t){this.addNonHDRMaterial(e,t)},T.prototype.addHDRMaterial=function(e,t){this._reflectionMap&&!t.disableEnvMap&&(t.envMap=this._reflectionMap),this._irradianceMap&&(t.irradianceMap=this._irradianceMap),t.exposureBias=Math.pow(2,this._exposureBias),t.tonemapOutput=this._tonemapMethod,t.envMapExposure=this._envMapExposure,t.envRotationSin=this._envRotationSin,t.envRotationCos=this._envRotationCos,this._applyCutPlanes(t),this._applyMRTFlags(t),this._applyPolygonOffset(t,this._polygonOffsetOn),this._materials[e]=t},T.prototype._applyCutPlanes=function(e){e.doNotCut?e.cutplanes=null:(e.cutplanes=this._cutplanes,e.cutplanesHideInterior=this.cutplanesHideInterior,e.needsUpdate=!0,this._cutplanes&&this._cutplanes.length>0?e.side=n.DoubleSide:this._needsTwoSided||e.is2d||this._forceDoubleSided||(e.side=n.FrontSide))},T.prototype.addMaterial=function(e,t,i){var r=t.prismType&&-1!==t.prismType.indexOf("Prism");this.hasPrism=r||this.hasPrism,x.MaterialConverter.applyAppearanceHeuristics(t,r||i,this.isDepthWriteTransparentEnabled()),t.side===n.DoubleSide&&(this._needsTwoSided=!0),this.addHDRMaterial(e,t)},T.prototype.addLineMaterial=function(e,t,i){var n=i&&this._layerMaskTextures[i];n&&(t.defines.HAS_LAYERS=1,t.uniforms.tLayerMask.value=n),t.hasLineStyles&&(t.defines.HAS_LINESTYLES=1,t.defines.MAX_LINESTYLE_LENGTH=this._lineStyleTex.image.width,t.uniforms.tLineStyle.value=this._lineStyleTex,t.uniforms.vLineStyleTexSize.value.set(this._lineStyleTex.image.width,this._lineStyleTex.image.height)),t.uniforms.swap.value=this._swapBlackAndWhite,t.uniforms.grayscale.value=this._grayscaleLines,t.doNotCut||(t.cutplanes=this._cutplanes),this._updatePixelScaleForMaterial(t),this._materials[e]=t,this._applyMRTFlags(t)},T.prototype.addOverrideMaterial=function(e,t){if(this.addNonHDRMaterial(e,t),t.variants)for(var i=0;i0)return this.variants[t-1]}return null}},T.prototype.removeMaterial=function(e){delete this._materials[e]},T.prototype.findMaterial=function(e,t){var i=this._getMaterialHash(e,t);return this._materials[i]},T.prototype.convertSharedMaterial=async function(e,t,i){var n=this.findMaterial(e,i);return n||((n=await this.convertOneMaterial(e,t,i)).hash=i),this._addMaterialRef(n,e.id),n},T.prototype.convertOneMaterial=async function(e,t,i){var r=x.MaterialConverter.isPrismMaterial(t);r&&await x.MaterialConverter.loadMaterialConverterPrismLibrary();var s=e.getData(),a=s&&s.materials?s.materials.scene.SceneUnit:"inch",l=r&&x.MaterialConverter.swapPrismWoodTextures(this._prismWoodTextures);l&&o.logger.warn("Unexpected wood textures converting a material");var c=await x.MaterialConverter.convertMaterial(t,a);if(s.doubleSided&&(c.side=n.DoubleSide),this.addMaterial(i,c),this._hasTransparentMaterial=this._hasTransparentMaterial||c.transparent,x.MaterialConverter.hasTiling(t)){c.decals=[];var h=t.materials,u=h[t.userassets[0]];let e=u.properties.references.base_materials.connections,n=u.properties.references.tiles.connections,r=[];for(let o=0;o{-1!==t.indexOf(n)&&i(e)};this.forEach(r,!1,t),this.forEach(r,!1,t,this._materialsNonHDR)};var M={needsClear:!1,needsRender:!1,overlayDirty:!1};function C(e,t,i){let n=e.slots[i];n?-1==n.indexOf(t)&&n.push(t):e.slots[i]=[t]}T.prototype.updateMaterials=function(){for(M.needsRender=!1;this._texturesToUpdate.length;){var e=this._texturesToUpdate.pop();for(let i in e.slots){let n=e.slots[i];for(var t=0;t{const i=t.indexOf(e);if(-1!==i)return{hash:e,idx:i};const n=e+"|"+A.INSTANCED,r=t.indexOf(n);if(-1!==r)return{hash:n,idx:r};const o=e+"|"+A.VERTEX_IDS,s=t.indexOf(o);return-1!==s?{hash:o,idx:s}:void 0};let i={};const n=e.getData(),r=n.fragments.materials,o=Object.keys(this._materials);for(let e=0;e{var i=this._selectionTextures[e];i&&(i.dispose(),i.needsUpdate=!0,t&&delete this._selectionTextures[e])},p=(e,t)=>{const i=this._layerMaskTextures[e];void 0!==i&&(i.dispose(),i.needsUpdate=!0,t&&delete this._layerMaskTextures[e])};if(this._prismWoodTextures&&x.MaterialConverter.disposePrismWoodTextures(this._prismWoodTextures),this._prismWoodTextures=void 0,e)f(e.id,!0),p(e.id,!0),delete this._layerMaps[e.id];else{for(var m in this._selectionTextures)this._selectionTextures.hasOwnProperty(m)&&f(m,!1);for(var m in this._selectionTextures={},this._layerMaskTextures)this._layerMaskTextures.hasOwnProperty(m)&&p(m,!1);this._layerMaskTextures={},this._layerMaps={},this._reflectionMap=null,this._irradianceMap=null}},T.prototype.toggleDepthWriteTransparent=function(e){this._depthWriteTransparent!=e&&(this._depthWriteTransparent=e,this.forEach((function(t){t.lmv_depthWriteTransparent&&(t.depthWrite=e)}),!1,!0))},T.prototype.isDepthWriteTransparentEnabled=function(){return this._depthWriteTransparent},T.prototype.hasTwoSidedMaterials=function(){return this._needsTwoSided},T.prototype.hasTransparentMaterial=function(){return this._hasTransparentMaterial},T.prototype.texturesLoaded=function(){return 0===this._texturesToUpdate.length},T.prototype.renderer=function(){return this._renderer},T.prototype.setTonemapExposureBias=function(e){this._exposureBias=e;var t=Math.pow(2,e);this.forEach((function(e){w(e,"exposureBias",t)}),!0,!0)},T.prototype.setTonemapMethod=function(e){this._tonemapMethod=e,this.forEach((function(t){t.tonemapOutput=e,t.needsUpdate=!0}),!0,!0)},T.prototype.setEnvExposure=function(e){var t=Math.pow(2,e);this._envMapExposure=t,this.forEach((function(e){w(e,"envMapExposure",t)}),!0,!0)},T.prototype.setEnvRotation=function(e){var t=this._envRotationSin=Math.sin(e),i=this._envRotationCos=Math.cos(e);this.forEach((function(e){e.envRotationSin=t,e.envRotationCos=i,e.needsUpdate=!0}),!0,!0)},T.prototype.setReflectionMap=function(e){this._reflectionMap=e,this.forEach((function(t){t.disableEnvMap||w(t,"envMap",e)}),!0,!0)},T.prototype.setIrradianceMap=function(e){this._irradianceMap=e,this.forEach((function(t){w(t,"irradianceMap",e)}),!0,!0)},T.prototype.setDoubleSided=function(e,t){this._forceDoubleSided=e;let i={};i=t?this.getModelMaterials(t,!0).mats:this._materials,this.forEach((function(t){t.side=e?n.DoubleSide:n.FrontSide,t.needsUpdate=!0}),!0,!0,i)},T.prototype.setCutPlanes=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;var i=!1;const r=this._cutplanes.length!==(e&&e.length||0),o=t!==this.cutplanesHideInterior,s=r||o;for(;this._cutplanes.length>0;)this._cutplanes.pop();if(this.cutplanesHideInterior=t,e)for(var a=0;a{this._applyCutPlanes(e),i=i||e.side==n.DoubleSide}),!1,!0),this._materialsNonHDR)this._materialsNonHDR[l].doNotCut||(this._materialsNonHDR[l].needsUpdate=!0);return i||this._needsTwoSided},T.prototype.getCutPlanes=function(){return this._cutplanes.slice()},T.prototype.getCutPlanesRaw=function(){return this._cutplanes},T.prototype._applyPolygonOffset=function(e){(e instanceof n.MeshPhongMaterial||e.isPrismMaterial)&&(e.polygonOffset=this._polygonOffsetOn,e.polygonOffsetFactor=this._polygonOffsetFactor,e.polygonOffsetUnits=this._polygonOffsetUnits,e.extraDepthOffset&&(e.polygonOffsetFactor+=e.extraDepthOffset),e.needsUpdate=!0)},T.prototype.getPolygonOffsetOn=function(){return this._polygonOffsetOn},T.prototype.getPolygonOffsetFactor=function(){return this._polygonOffsetFactor},T.prototype.getPolygonOffsetUnits=function(){return this._polygonOffsetUnits},T.prototype.togglePolygonOffset=function(e,t,i){this._polygonOffsetOn=e,this._polygonOffsetFactor=e?t||1:0,this._polygonOffsetUnits=e?i||.1:0;var n=this;this.forEach((function(e){n._applyPolygonOffset(e)}),!1,!0)},T.prototype._applyMRTFlags=function(e){var t=e.supportsMrtNormals||e instanceof n.MeshPhongMaterial||e.isPrismMaterial||e instanceof n.MeshBasicMaterial||e instanceof n.LineBasicMaterial||e instanceof n.PointCloudMaterial||e instanceof n.PointsMaterial,i=e.mrtNormals,r=e.mrtIdBuffer;e.skipMrtNormals||(e.mrtNormals=t&&this._mrtNormals),e.mrtIdBuffer=this._mrtIdBuffer,e.mrtNormals===i&&e.mrtIdBuffer===r||(e.needsUpdate=!0)},T.prototype.toggleMRTSetting=function(e){this._mrtNormals=e.mrtNormals,this._mrtIdBuffer=e.mrtIdBuffer;var t=this;function i(e){t._applyMRTFlags(e)}this.forEach(i,!1,!0),this.forEach(i,!1,!0,this._materialsNonHDR)},T.prototype.adjustMaterialMRTSetting=function(e){this._applyMRTFlags(e)},T.prototype.initLineStyleTexture=function(){this._lineStyleTex=(0,b.createLinePatternTexture)()},T.prototype.setLineStyleTexture=function(e){this._lineStyleTex=e},T.prototype.initLayersTexture=function(e,t,i){for(var r=this._layerMaskTextures[i],o=r?r.image.data:new Uint8Array(65536),s=0,a=e;s1&&void 0!==arguments[1]?arguments[1]:this._camera,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this._deviceWidth,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this._deviceHeight,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this._pixelsPerUnit,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;if(e.is2d){if(e.isScreenSpace)if(e.uniforms.size.value.set(i,n),e.uniforms.aaRange.value=.5,null!=t&&t.isPerspective){e.uniforms.cameraPos.value.copy(t.position);const i=t.fov*Math.PI/180;e.uniforms.tanHalfFov.value=Math.tan(.5*i)}else e.uniforms.tanHalfFov.value=0;else e.uniforms.aaRange.value=.5/(r*e.modelScale*o);e.uniforms.pixelsPerUnit.value=r*e.modelScale*o}},T.prototype.updatePixelScale=function(e,t,i,n){this._pixelsPerUnit=e,this._deviceWidth=t,this._deviceHeight=i,this._camera=n,this.forEach((r=>this._updatePixelScaleForMaterial(r,n,t,i,e)))},T.prototype.updatePixelScaleForModel=function(e,t,i,n,r,o){const s=this.getModelMaterials(e),a=e=>this._updatePixelScaleForMaterial(e,o,i,n,t,r);Object.values(s.mats).forEach(a),Object.values(s.matsNonHDR).forEach(a),Object.values(s.selectionMats).forEach(a)},T.prototype.updateSwapBlackAndWhite=function(e){var t=this._swapBlackAndWhite=e?1:0;this.forEach((function(e){e.is2d&&(e.uniforms.swap.value=t)}))},T.prototype.setGrayscale=function(e){var t=this._grayscaleLines=e?1:0;this.forEach((function(e){e.is2d&&(e.uniforms.grayscale.value=t)}))},T.prototype.updateViewportId=function(e){this.forEach((function(t){t.is2d&&(t.uniforms.viewportId.value=e,t.needsUpdate=!0)}))},T.prototype.create2DMaterial=function(e,t,i,o,s){var a=e?e.getData():null,l="__lineMaterial__";t.image&&(l+="|image:"+t.image.name),t.clip&&(l+="|clip:"+JSON.stringify(t.clip)),i&&(l+="|id"),o&&(l+="|selection"),t.skipEllipticals&&(l+="|skipEllipticals"),t.skipCircles&&(l+="|skipCircles"),t.skipTriangleGeoms&&(l+="|skipTriangleGeoms"),t.skipMiterLines&&(l+="|skipMiterLines"),t.useInstancing&&(l+="|useInstancing"),t.isScreenSpace&&(l+="|isScreenSpace"),t.unpackPositions&&(l+="|unpackPositions"),t.hasLineStyles&&(l+="|hasLineStyles"),t.compositeOperation&&(l+="|"+t.compositeOperation),t.hasOpacity&&(l+="|hasOpacity"),t.noIdOutput&&(l+="|noIdOutput");var c=this._getMaterialHash(e,l);if(!this._materials.hasOwnProperty(c)){var h=new y(t);if(i?(h.defines.ID_COLOR=1,h.blending=n.NoBlending):o?(h.uniforms.tSelectionTexture.value=o,h.uniforms.vSelTexSize.value.set(o.image.width,o.image.height),h.defines.SELECTION_RENDERER=1,this.get2dSelectionColor(h.uniforms.selectionColor)):(this.get2dSelectionColor(h.uniforms.selectionColor),h.mrtIdBuffer=this._mrtIdBuffer),t.skipEllipticals||(h.defines.HAS_ELLIPTICALS=1),t.skipCircles||(h.defines.HAS_CIRCLES=1),t.skipTriangleGeoms||(h.defines.HAS_TRIANGLE_GEOMS=1),t.skipMiterLines||(h.defines.HAS_MITER_LINES=1),t.noIdOutput&&(h.defines.NO_ID_OUTPUT=1),t.useInstancing&&(h.defines.USE_INSTANCING=1),t.unpackPositions&&!i&&(h.defines.UNPACK_POSITIONS=1),t.msdfFontTexture&&(h.defines.MSDF_TEXTURE_FONT=1),t.imageUVTexture&&(h.defines.IMAGE_UV_TEXTURE=1),t.viewportBounds&&(h.uniforms.viewportBounds.value=t.viewportBounds.clone(),h.defines.VIEWPORT_CLIPPING=1),"number"==typeof t.opacity&&(h.uniforms.opacity.value=t.opacity),t.image){var u=function(i,r){i?(i.wrapS=n.ClampToEdgeWrapping,i.wrapT=n.ClampToEdgeWrapping,i.minFilter=r?n.LinearFilter:n.LinearMipMapLinearFilter,i.magFilter=n.LinearFilter,i.anisotropy=1,i.flipY=!0,i.generateMipmaps=!0,i.needsUpdate=!0,t.msdfFontTexture||t.imageUVTexture||(h.defines.HAS_RASTER_QUADS=1),h.uniforms.tRaster.value=i,h.needsUpdate=!0,s&&s(i,e)):s&&s(i,e,t)};if("undefined"!=typeof HTMLCanvasElement&&t.image instanceof HTMLCanvasElement||"undefined"!=typeof HTMLImageElement&&t.image instanceof HTMLImageElement)u(new n.Texture(r.TextureLoader.imageToCanvas(t.image,"multiply"==t.compositeOperation,t.compositeCanvasColor),n.UVMapping),!0);else r.TextureLoader.loadTextureWithSecurity(t.image.dataURI,n.UVMapping,u,null,a.acmSessionId)}h.modelScale=t.modelScale||1,t.doNotCut&&(h.doNotCut=!0),h.textureMaps={},this.addLineMaterial(c,h,e&&e.id),(i||o)&&this.addCompactLayoutSupport(h)}return l},T.prototype.set2dSelectionColor=function(e,t){E=new n.Color(e),S=null==t?S:t,this.forEach((function(e){if(e.is2d&&e.uniforms){var t=e.uniforms.selectionColor;t&&(_(t.value,E,S),e.needsUpdate=!0)}}))},T.prototype.get2dSelectionColor=function(e){return e&&_(e.value,E,S),E},T.prototype.get2dSelectionOpacity=function(){return S},T.prototype.setMaterialViewportBounds=function(e,t){e.supportsViewportBounds&&(t?e.defines.VIEWPORT_CLIPPING?e.uniforms.viewportBounds.value.set(t.min.x,t.min.y,t.max.x,t.max.y):(e.uniforms.viewportBounds.value=new n.Vector4(t.min.x,t.min.y,t.max.x,t.max.y),e.defines.VIEWPORT_CLIPPING=1,e.needsUpdate=!0):e.defines.VIEWPORT_CLIPPING&&(delete e.defines.VIEWPORT_CLIPPING,e.needsUpdate=!0))},T.prototype.setViewportBoundsForModel=function(e,t){this.forEachInModel(e,!1,(e=>{this.setMaterialViewportBounds(e,t)}))}},94998:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PhongShader:()=>c});var n=i(72091),r=i(30130),o=i(77431),s=i.n(o),a=i(73560),l=i.n(a);let c={uniforms:n.UniformsUtils.merge([n.UniformsLib.common,n.UniformsLib.bump,n.UniformsLib.normalmap,n.UniformsLib.lights,n.UniformsLib.fog,r.ShaderChunks.CutPlanesUniforms,r.ShaderChunks.IdUniforms,r.ShaderChunks.ThemingUniform,r.ShaderChunks.ShadowMapUniforms,r.ShaderChunks.WideLinesUniforms,{emissive:{type:"c",value:new n.Color(0)},specular:{type:"c",value:new n.Color(1118481)},shininess:{type:"f",value:30},reflMipIndex:{type:"f",value:0},texMatrix:{type:"m3",value:new n.Matrix3},texMatrixBump:{type:"m3",value:new n.Matrix3},texMatrixAlpha:{type:"m3",value:new n.Matrix3},irradianceMap:{type:"t",value:null},exposureBias:{type:"f",value:1},envMapExposure:{type:"f",value:1},envRotationSin:{type:"f",value:0},envRotationCos:{type:"f",value:1}}]),vertexShader:s(),fragmentShader:l()};n.ShaderLib.firefly_phong=c},60012:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GetPrismMapUniforms:()=>r,PrismUtil:()=>o});var n=i(72091);function r(e){var t=e+"_texMatrix",i=e+"_invert",r={};return r[e]={type:"t",value:null},r[t]={type:"m3",value:new n.Matrix3},r[i]={type:"i",value:0},r}let o={GetPrismMapUniforms:r}},88190:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderContext:()=>te});var n=i(72091),r=i(55280),o=i(57480),s=i(83081),a=i(21968),l=i(30130),c=i(44203),h=i.n(c),u=i(66299),d=i.n(u);let f={uniforms:n.UniformsUtils.merge([l.ShaderChunks.DepthTextureUniforms,{tDiffuse:{type:"t",value:null},tAO:{type:"t",value:null},useAO:{type:"i",value:0},aoOpacity:{type:"f",value:.625},tOverlay:{type:"t",value:null},useOverlay:{type:"i",value:0},useOverlayAlpha:{type:"i",value:1},tID:{type:"t",value:null},tID2:{type:"t",value:null},objIDv4:{type:"v4",value:new n.Vector4(0,0,0,0)},modelIDv2:{type:"v2",value:new n.Vector2(0,0)},modelIDsv2v:{type:"v2v",value:[]},edgeObjIDv4:{type:"v4",value:new n.Vector4(0,0,0,0)},edgeModelIDv2:{type:"v2",value:new n.Vector2(0,0)},highlightIntensity:{type:"f",value:1},highlightColor:{type:"c",value:new n.Color(1,1,1)},resolution:{type:"v2",value:new n.Vector2(1/1024,1/512)},selectionColor:{type:"c",value:new n.Color(0,0,0)},expand2dSelection:{type:"f",value:.5},tCrossFadeTex0:{type:"t",value:null},tCrossFadeTex1:{type:"t",value:null},crossFadeOpacity0:{type:"f",value:0},crossFadeOpacity1:{type:"f",value:0},highlightFullModel:{type:"f",value:0}}]),vertexShader:h(),fragmentShader:d()};var p=i(48717),m=i(2303),g=i.n(m),v=i(49248),y=i.n(v);let b={uniforms:{tDiffuse:{type:"t",value:null},uResolution:{type:"v2",value:new n.Vector2(1/1024,1/512)}},vertexShader:g(),fragmentShader:y()};var x=i(9696),_=i.n(x),E=i(94727),S=i.n(E);let A={uniforms:{color:{type:"v4",value:new n.Vector4(0,0,0,.3)},cutplanes:{type:"v4v",value:[]}},vertexShader:_(),fragmentShader:S()};var w=i(47697),T=i.n(w),M=i(29126),C=i.n(M);let P={uniforms:{cutplanes:{type:"v4v",value:[]}},vertexShader:T(),fragmentShader:C()};var D=i(2179);const L={Color:1,Depth:2,ModelId:3,Overlay:4,Post1:5,Post2:6,SSAO:7,PostDisplay:8};function I(e,t,i,r,o){var s=new n.WebGLRenderTarget(e,t,{minFilter:n.NearestFilter,magFilter:n.NearestFilter,format:i,type:r,stencilBuffer:!1});return o&&(s.shareDepthFrom=o),s.name="depthTarget",s}const R=new n.Vector4(1,1,1,.5),O=new n.Vector4(1,1,1,1);function N(e,t){var i=new n.WebGLRenderTarget(e,t,{minFilter:n.NearestFilter,magFilter:n.NearestFilter,format:n.RGBAFormat,type:n.UnsignedByteType,stencilBuffer:!1});return i.texture.generateMipmaps=!1,i.canReadPixels=!0,i}function F(e){e.material.blending=n.NoBlending,e.material.depthWrite=!1,e.material.depthTest=!1}function U(e,t){if(e&&t){t.length=0;for(let i=0;i>8&255)/255),t}function Ve(e,t,i){t=t||0;const n=function(e){return e!==Te&&(Te=e,-1===e&&(e=0),_.uniforms.objIDv4.value.set((255&e)/255,(e>>8&255)/255,(e>>16&255)/255,(e>>24&255)/255),!0)}(e),r=function(e){if(Array.isArray(e)&&1==e.length&&(e=e[0]),e===Me)return!1;const t=Array.isArray(Me)?Me.length:1,i=Array.isArray(e)?e.length:1;return!(i>1&&(e.sort(),i==t&&!Me.some(((t,i)=>t!==e[i])))||(i!=t&&(1==i?delete _.material.defines.HIGHLIGHT_MODEL_ID_COUNT:_.material.defines.HIGHLIGHT_MODEL_ID_COUNT=i.toString(),_.material.needsUpdate=!0),Me=e,1==i?ke(e=Array.isArray(e)?e[0]:e,_.uniforms.modelIDv2.value):_.uniforms.modelIDsv2v.value=e.map((e=>ke(e))),0))}(t);if(n||r)return _.uniforms.highlightIntensity.value=0,we=performance.now(),_.uniforms.highlightFullModel.value=i?1:0,!0}this.settings=De,this.depthTargetSupported=function(){return Ae},this.isWeakDevice=function(){return xe},this.init=function(l,c,h){let u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const S=u.offscreen,w=void 0!==u.useIdBufferSelection&&u.useIdBufferSelection;var T;(t=function(){var e=P;const t=(0,D.createShaderMaterial)(e);t.blending=n.NoBlending,t.packedNormals=!0,t.depthWrite=!1;var i=1,r=2,o=4,s=8,a=[];a[0]=null;for(var l=1;le.needSeparateDepth==t.needSeparateDepth?0:1==e.needSeparateDepth?1:1==t.needSeparateDepth?-1:void 0));for(let t=0;t"lmvInternal"!==e.name)).length){let e=W;if(p.setRenderTarget(e),s||(s=1,o||(p.setClearColor(ee,0),p.clear(!0,!1,!1))),u.materialPre&&(d.overrideMaterial=u.materialPre),u.needSeparateDepth&&!l?(e=W,e.shareDepthFrom=null,p.setRenderTarget(e),p.clear(!1,!0,!1),l=!0):e.shareDepthFrom=H,u.needIdTarget&&Ue(L.ModelId)){re||((re=N(e.width,e.height)).shareDepthFrom=H,re.name="overlayId"),0==a&&(p.setRenderTarget(re),p.clear(!0,!1,!1),a=!0);var m=[e];u.needIdTarget&&m.push(re),this._render(p,m,d,f,r)}else this._render(p,e,d,f,r),u.needIdTarget&&(re||((re=N(e.width,e.height)).shareDepthFrom=H,re.name="overlayId"),p.setProgramPrefix(1,"#define ID_COLOR","#define ID_COLOR"),this._render(p,re,d,f,r),p.setProgramPrefix(0,"",""));u.materialPost&&(_e.isRenderingHidden=!0,p.getContext().depthFunc(p.getContext().GREATER),u.materialPost.depthFunc=n.GreaterDepth,De.renderEdges&&(i.depthWrite=!1,i.depthTest=!1,d.overrideMaterial=i,this._render(p,e,d,f)),d.overrideMaterial=u.materialPost,this._render(p,e,d,f,r),p.getContext().depthFunc(p.getContext().LEQUAL),u.materialPost.depthFunc=n.LessEqualDepth,_e.isRenderingHidden=!1),De.renderEdges&&u.materialPre&&(i.depthWrite=!1,i.depthTest=!0,d.overrideMaterial=i,this._render(p,e,d,f)),d.overrideMaterial=null}}_e.isRenderingOverlays=!1,i.depthWrite=!0,i.depthTest=!0,_.uniforms.useOverlay.value=s,s&&(_.uniforms.useOverlayAlpha.value=be)},this.computeSSAO=function(t){if(!t&&De.sao){if(!S){if(z&&z.length){var i=z[0];y.uniforms.resolution.value.set(1/i.width,1/i.height),y.render(e,i,M);for(var n=1;ne.dispose())),z=void 0);for(var t=0;t0,g.material.defines.MAX_MIP_LEVEL=i,g.material.needsUpdate=!0;for(let e=1;e<=i;++e){const t=d>>e,i=f>>e,r=new n.WebGLRenderTarget(t,i,{minFilter:n.NearestFilter,magFilter:n.NearestFilter,format:n.RGBAFormat,depthBuffer:!1,stencilBuffer:!1});r.texture.generateMipmaps=!1,r.name=`depthTarget_mipmap ${e}`,z[e-1]=r,g.uniforms[`tDepth_mip${e}`].value=r.texture}for(let t=i+1;t<=e;++t)g.uniforms[`tDepth_mip${t}`].value=null}g.uniforms.size.value.set(d,f),g.uniforms.resolution.value.set(b,E),g.uniforms.tDepth.value=M.texture,m.uniforms.size.value.set(d,f),m.uniforms.resolution.value.set(b,E),w.updateUniformValue("tDepth",M),_.uniforms.tDepth.value=M.texture}if(Ue(L.ModelId)){if(r||!ne[0]||ne[0].width!=d||ne[0].height!=f){for(p=0;p2||e<1)&&e!==De.numIdTargets&&(De.numIdTargets=e,0!==ne.length&&2===e&&1===ne.length)){var t=N(ne[0].width,ne[0].height);return t.shareDepthFrom=H,t.name="id "+ne.length,ne.push(t),_.uniforms.tID2.value=t,_.material.defines.USE_MODEL_ID="1",_.material.needsUpdate=!0,!0}},this.getAntialiasing=function(){return De.antialias},this.initPostPipeline=function(e,t){De.sao=e&&Ae,De.antialias=t,De.haveTwoSided&&Fe((function(e){e.side=n.DoubleSide})),Fe((function(e){e.needsUpdate=!0})),g.material.needsUpdate=!0,m.material.needsUpdate=!0,y.material.needsUpdate=!0,v.material.needsUpdate=!0,x.material.needsUpdate=!0,w.setMaterialNeedsUpdate(),_.material.needsUpdate=!0,d.material.needsUpdate=!0,E.material.needsUpdate=!0,this.setSize(C,k)},this.setClearColors=function(e,t){e instanceof n.Color?ve=e.clone():!t||e.equals(t)?ve=new n.Color(e.x,e.y,e.z):xe?ve=new n.Color(.5*(e.x+t.x),.5*(e.y+t.y),.5*(e.z+t.z)):(ve=void 0,d.uniforms.color1.value.copy(e),d.uniforms.color2.value.copy(t))},this.useOverlayAlpha=function(e){be=e},this.setClearAlpha=function(e){ye=e},this.setAOEnabled=function(e){De.sao=e&&Ae,Le.sao=De.sao,this.setSize(C,k,!1,!0)},this.setAOOptions=function(e,t,i){void 0!==e&&(g.uniforms.radius.value=e,g.uniforms.bias.value=(0,r.isMobileDevice)()?.1:.01,m.uniforms.radius.value=e),void 0!==t&&(g.uniforms.intensity.value=t),_.uniforms.aoOpacity.value=void 0!==i?i:1,S=!1},this.getAOEnabled=function(){return De.sao},this.getAORadius=function(){return g.uniforms.radius.value},this.getAOIntensity=function(){return g.uniforms.intensity.value},this.setCubeMap=function(e){d.material.envMap=e,e||this.toggleEnvMapBackground(!1),e&&De.envMapBg&&(d.uniforms.envMapBackground.value=!0)},this.setBackgroundTexture=function(e){const t=d.material.useBackgroundTexture;d.uniforms.backgroundTexture.value=e,d.material.useBackgroundTexture=!!e,!!e!==t&&(d.material.needsUpdate=!0)},this.getCubeMap=function(){return d.material.envMap},this.setEnvRotation=function(e){ae=e,d.material.envRotationSin=Math.sin(e),d.material.envRotationCos=Math.cos(e)},this.getEnvRotation=function(){return ae},this.setEnvExposure=function(e){const t=d.material.envMapExposure,i=Math.pow(2,e);d.uniforms.envMapExposure.value=i,d.material.envMapExposure=i,i!==t&&(d.material.needsUpdate=!0),oe=e},this.setTonemapExposureBias=function(e){se=e,d.uniforms.exposureBias.value=Math.pow(2,e)},this.getExposureBias=function(){return se},this.setCamera=function(e){c=e},this.setTonemapMethod=function(t){const i=le;le=t,e.gammaInput=0!==t,d.material.tonemapOutput=le,t!==i&&(d.material.needsUpdate=!0)},this.getToneMapMethod=function(){return le},this.toggleTwoSided=function(e){De.haveTwoSided!=e&&t&&Fe((function(t){t.side=e?n.DoubleSide:n.FrontSide,t.needsUpdate=!0})),De.haveTwoSided=e},this.toggleEdges=function(e){De.renderEdges=e,Le.renderEdges=e},this.getRenderEdges=function(){return De.renderEdges},this.toggleEnvMapBackground=function(e){De.envMapBg=e,d.uniforms.envMapBackground.value=e&&!!d.material.envMap},this.enter2DMode=function(e,t){l=e,Le.sao=De.sao,Le.antialias=De.antialias,Le.idbuffer=De.idbuffer,Le.renderEdges=De.renderEdges,Le.useIdBufferSelection=De.useIdBufferSelection,t&&(Le.selectionColor=De.selectionColor,this.setSelectionColor(t)),De.idbuffer=!0,De.renderEdges=!1,_.material.defines.IS_2D="",Ne(De.idbuffer),this.initPostPipeline(!1,!1)},this.exit2DMode=function(){l=null,De.idbuffer=Le.idbuffer,De.renderEdges=Le.renderEdges,Le.selectionColor&&this.setSelectionColor(Le.selectionColor),delete _.material.defines.IS_2D,Ne(Le.idbuffer),this.initPostPipeline(Le.sao,Le.antialias)},this.idAtPixel=function(e,t,i,n){return this.idAtPixels(e,t,1,i,n)},this.idAtPixels=function(t,i,n,r,o){if(o&&o[0]||(o=ne),!o[0])return 0;n%2==0&&(n+=1);const s=.5*(t+1)*o[0].width-.5*(n-1),a=.5*(i+1)*o[0].height-.5*(n-1);if(V[n]&&s===V[n][4]&&a===V[n][5]&&V[n][6]==o[0].name)return U(V[n],r),V[n][0];const l=4*n*n;fe[l]||(fe[l]=new Uint8Array(l));const c=fe[l];let h;return e.readRenderTargetPixels(o[0],s,a,n,n,c),o[1]&&(pe[l]||(pe[l]=new Uint8Array(l)),h=pe[l],e.readRenderTargetPixels(o[1],s,a,n,n,h)),function(e,t,i,n,r,o,s){let a;s=s||ne;let l=0,c=0,h=0,u=-1;V[i]=[-1,-1,null,null,e,t,s[0].name];for(let o=0;o=0&&o<=i&&f>=0&&f<=i){const l=o+f*i;if(a=n[4*l+2]<<16|n[4*l+1]<<8|n[4*l],a=a<<8>>8,V[i][0]=a,r){var d=r[4*l+1]<<8|r[4*l];V[i][1]=d<<16>>16}if(V[i][2]=2*(e+o)/s[0].width-1,V[i][3]=2*(t+f)/s[0].height-1,-1!==a)break}if(l==c||l<0&&l==-c||l>0&&l==1-c){const e=h;h=-u,u=e}l+=h,c+=u}return U(V[i],o),a}(s,a,n,c,h,r,o)},this.idsAtPixelsBox=function(t,i,n,r,o,s){if((s=s||ne)[0]){var a=n*s[0].width,l=r*s[0].height,c=0|.5*(t+1)*s[0].width,h=0|.5*(i+1)*s[0].height,u=new Uint8Array(4*a*l);e.readRenderTargetPixels(s[0],c,h,a,l,u);var d=void 0;o&&s[1]&&(d=new Uint8Array(4*a*l),e.readRenderTargetPixels(s[1],c,h,a,l,d));var f={};for(let e=0;e>8)>0){var m=0;d&&(m=(m=d[4*e+1]<<8|d[4*e])<<16>>16);var g=p+"-"+m;f[g]||(f[g]=!0,o.push([p,m]))}}}},this.readbackTargetId=function(){if(!ne[0])return null;var t=new Uint8Array(4*ne[0].width*ne[0].height);return e.readRenderTargetPixels(ne[0],0,0,ne[0].width,ne[0].height,t),{buffer:t,width:ne[0].width,height:ne[0].height}},this.rolloverObjectViewport=function(e,t){me[1]=0;var i=this.idAtPixel(e,t,me);return this.rolloverObjectId(i,null,me[1])},this.rolloverObjectId=function(e,t,i){return Ve(e,i,!1)},this.getRollOverDbId=function(){return Te},this.getRollOverModelId=function(){return Me},this.rollOverModelId=function(e){return Ve(1,e,!0)},this.setRollOverHighlightColor=function(e){e?_.uniforms.highlightColor.value.copy(e):_.uniforms.highlightColor.value.setRGB(1,1,1)},this.setDbIdForEdgeDetection=function(e,t){_.uniforms.edgeObjIDv4.value.set((255&e)/255,(e>>8&255)/255,(e>>16&255)/255,(e>>24&255)/255),_.uniforms.edgeModelIDv2.value.set((255&t)/255,(t>>8&255)/255)},this.setSpatialFilterForRollOver=function(e){if(!e||this.spatialFilterForRollOverSupported()){var t="SPATIAL_FILTER";_.material.defines[t]!==e&&(e&&""!==e?_.material.defines[t]=e:delete _.material.defines[t],_.material.needsUpdate=!0,_.uniforms.highlightIntensity.value=0,we=performance.now())}else s.logger.warn("Spatial filter for mouse-over can only be used with depth target")},this.spatialFilterForRollOverSupported=function(){return Ue(L.Depth)},this.setEdgeColor=function(e){ge.copy(e)},this.setSelectionColor=function(e){var t=new n.Color(e);t.r=Math.pow(t.r,2),t.g=Math.pow(t.g,2),t.b=Math.pow(t.b,2),_.uniforms.selectionColor.value.set(t),_.material.needsUpdate=!0,De.selectionColor=e},this.setUnitScale=function(e){ce=e},this.getUnitScale=function(){return ce},this.getBlendPass=function(){return _},this.getClearPass=function(){return d},this.getColorTarget=function(){return H},this.getIDTargets=function(){return ne},this.getDepthTarget=function(){return M},this.getIdTarget=function(){return ne[0]},this.getOverlayIdTarget=function(){return re},this.getDepthMaterial=function(){return t},this.getPostTarget=function(){return q},this.getEdgeMaterial=function(){return i},this.setCrossFade=function(e){Ie=e},this.getCrossFade=function(){return Ie},this.setOffscreenTarget=function(e){Re=e},this.getOffscreenTarget=function(){return Re},this.getNamedTarget=function(e){switch(e){case"color":return H;case"overlay":return W;case"id":return ne[0];case"post1":return q;case"post2":return ie;case"postdisplay":return X;case"ssao":return te;case"depth":return M}return null},this.getCurrentFramebuffer=function(){return e.getCurrentFramebuffer()},this.getConfig=function(){return{renderEdges:De.renderEdges,envMapBackground:De.envMapBg,envMap:d.material.envMap,envExposure:oe,toneMapExposureBias:se,envRotation:this.getEnvRotation(),tonemapMethod:le,clearColor:ve&&ve.clone(),clearColorTop:!ve&&d.uniforms.color1.value.clone(),clearColorBottom:!ve&&d.uniforms.color2.value.clone(),clearAlpha:ye,useOverlayAlpha:be,aoEnabled:this.getAOEnabled(),aoRadius:this.getAORadius(),aoIntensity:this.getAOIntensity(),twoSided:De.haveTwoSided,edgeColor:ge.clone(),unitScale:this.getUnitScale(),is2D:!!_.material.defines.IS_2D,antialias:this.getAntialiasing(),idMaterial:l,selectionColor:De.selectionColor}},this.applyConfig=function(e){this.toggleEdges(e.renderEdges),this.toggleEnvMapBackground(e.envMapBackground),this.setCubeMap(e.envMap),this.setEnvExposure(e.envExposure),this.setTonemapExposureBias(e.toneMapExposureBias),this.setEnvRotation(e.envRotation),this.setTonemapMethod(e.tonemapMethod),this.toggleTwoSided(e.twoSided),this.setEdgeColor(e.edgeColor),this.setUnitScale(e.unitScale),e.clearColor?this.setClearColors(e.clearColor):this.setClearColors(e.clearColorTop,e.clearColorBottom),this.setClearAlpha(e.clearAlpha),this.useOverlayAlpha(e.useOverlayAlpha);var t=!!_.material.defines.IS_2D;e.is2D&&!t?this.enter2DMode(e.idMaterial,e.selectionColor):!e.is2D&&t&&(this.setSelectionColor(e.selectionColor),this.exit2DMode());var i=e.aoEnabled!=this.getAOEnabled(),n=e.antialias!=this.getAntialiasing();(i||n)&&this.initPostPipeline(e.aoEnabled,e.antialias)},this.targetToCanvas=function(t){var i=t.width,n=t.height,r=new Uint8Array(i*n*4);e.readRenderTargetPixels(t,0,0,i,n,r);var o=$.createElement("canvas");o.width=i,o.height=n;var s,a=o.getContext("2d"),l=new Uint8ClampedArray(r);return s=new ImageData(l,i,n),a.putImageData(s,0,0),a.globalCompositeOperation="copy",a.translate(0,n),a.scale(1,-1),a.drawImage(o,0,0,i,n),a.globalCompositeOperation="source-over",{canvas:o,ctx:a}},this.resetRenderStats=function(){e.info.reset()},this.getRenderStats=function(){return Object.assign({},e.info.render)}}},34423:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderContextPostProcessExtension:()=>n,RenderContextPostProcessManager:()=>r});class n{constructor(e,t){this.viewer=t,this.renderContext=e,this.postProcPass=null,this.postProcShaded=!1,this.setGlobalManager(t.globalManager)}load(){}unload(){this.viewer=null,this.renderContext=null,this.postProcPass=null}enable(){this.setPostProcShaded(!0);const e=this.renderContext.settings;this.renderContext.initPostPipeline(e.sao,e.antialias),this.viewer.impl.fireRenderOptionChanged(),this.viewer.impl.invalidate(!0,!0,!0)}disable(){this.setPostProcShaded(!1),this.viewer.impl.invalidate(!1,!1,!0)}shouldRenderAfterOverlays(){return!1}render(e,t,i,n){const r=void 0===n||n===this.shouldRenderAfterOverlays();return!(!this.isPostProcShaded()||!r)&&(this.postProcPass.render(e,t,i),!0)}updateUniformValue(e,t,i){this.postProcPass.uniforms[e]&&(i?this.postProcPass.uniforms[e].value.copy(t):this.postProcPass.uniforms[e].value=t,this.viewer.impl.invalidate(!1,!1,!0))}updateDefineValue(e,t){this.postProcPass.material.defines[e]!==t&&(null!==t?this.postProcPass.material.defines[e]=t:delete this.postProcPass.material.defines[e],this.setMaterialNeedsUpdate())}getUniformValue(e){return this.postProcPass.uniforms[e].value}getDefineValue(e){return this.postProcPass.material.defines[e]}changeResolution(e,t){this.postProcPass.uniforms.resolution.value.set(e,t)}setMaterialNeedsUpdate(){this.postProcPass.material.needsUpdate=!0,this.viewer.impl.invalidate(!1,!1,!0)}postProcessEdgesOn(){return!1}setPostProcShaded(e){this.postProcShaded=e}isPostProcShaded(){return this.postProcShaded}getOrder(){return 0}}class r{constructor(){this.rcExtensions=[]}registerPostProcessingExtension(e){this.rcExtensions.push(e),this.rcExtensions.sort(((e,t)=>t.getOrder()-e.getOrder()))}removePostProcessingExtension(e){const t=this.rcExtensions.indexOf(e);-1!==t&&(e.unload(),this.rcExtensions.splice(t,1))}render(e,t,i,n,r){for(let o=0;oe.postProcessEdgesOn()))}isPostProcShaded(){return this.rcExtensions.some((e=>e.isPostProcShaded()))}}},26217:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SAOShader:()=>c});var n=i(72091),r=i(30130),o=i(44203),s=i.n(o),a=i(78101),l=i.n(a);let c={uniforms:n.UniformsUtils.merge([r.ShaderChunks.DepthTextureUniforms,{size:{type:"v2",value:new n.Vector2(512,512)},resolution:{type:"v2",value:new n.Vector2(1/512,1/512)},cameraNear:{type:"f",value:1},cameraFar:{type:"f",value:100},radius:{type:"f",value:12},bias:{type:"f",value:.1},projScale:{type:"f",value:500},intensity:{type:"f",value:1},tDepth_mip1:{type:"t",value:null},tDepth_mip2:{type:"t",value:null},tDepth_mip3:{type:"t",value:null},tDepth_mip4:{type:"t",value:null},tDepth_mip5:{type:"t",value:null}}]),vertexShader:s(),fragmentShader:l()}},30130:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CutPlanesShaderChunk:()=>ke,CutPlanesUniforms:()=>Ee,DepthTextureTestUniforms:()=>De,DepthTextureUniforms:()=>Pe,EnvSamplingShaderChunk:()=>ze,FinalOutputShaderChunk:()=>Xe,HatchPatternShaderChunk:()=>Ge,IdFragmentDeclaration:()=>je,IdOutputShaderChunk:()=>qe,IdUniforms:()=>Se,IdVertexDeclaration:()=>He,IdVertexShaderChunk:()=>We,InstancingVertexDeclaration:()=>Qe,OrderedDitheringShaderChunk:()=>Be,PackDepthShaderChunk:()=>Fe,PackNormalsShaderChunk:()=>Ve,PointSizeDeclaration:()=>tt,PointSizeShaderChunk:()=>it,PointSizeUniforms:()=>Me,ShaderChunks:()=>nt,ShadowMapCommonUniforms:()=>we,ShadowMapDeclareCommonUniforms:()=>Ze,ShadowMapFragmentDeclaration:()=>et,ShadowMapUniforms:()=>Te,ShadowMapVertexDeclaration:()=>$e,ShadowMapVertexShaderChunk:()=>Je,ThemingFragmentDeclaration:()=>Ye,ThemingFragmentShaderChunk:()=>Ke,ThemingUniform:()=>Ae,TonemapShaderChunk:()=>Ue,WideLinesUniforms:()=>Ce,resolve:()=>Ne});var n=i(72091),r=i(35496),o=i.n(r),s=i(96900),a=i.n(s),l=i(99607),c=i.n(l),h=i(1221),u=i.n(h),d=i(90002),f=i.n(d),p=i(9641),m=i.n(p),g=i(22826),v=i.n(g),y=i(1081),b=i.n(y),x=i(31371),_=i.n(x),E=i(91952),S=i.n(E),A=i(14804),w=i.n(A),T=i(11255),M=i.n(T),C=i(26750),P=i.n(C),D=i(15373),L=i.n(D),I=i(78148),R=i.n(I),O=i(74490),N=i.n(O),F=i(25424),U=i.n(F),B=i(30133),k=i.n(B),V=i(40947),G=i.n(V),z=i(79317),H=i.n(z),W=i(40304),j=i.n(W),q=i(53634),X=i.n(q),Y=i(76332),K=i.n(Y),Q=i(6147),Z=i.n(Q),$=i(77019),J=i.n($),ee=i(72373),te=i.n(ee),ie=i(92070),ne=i.n(ie),re=i(50433),oe=i.n(re),se=i(97713),ae=i.n(se),le=i(80862),ce=i.n(le),he=i(17028),ue=i.n(he),de=i(45631),fe=i.n(de),pe=i(1179),me=i.n(pe),ge=i(20990),ve=i.n(ge),ye=i(40444),be=i.n(ye),xe=i(13353),_e=i.n(xe);let Ee={cutplanes:{type:"v4v",value:[]},cutplanesHideInterior:{type:"i",value:0},hatchParams:{type:"v2",value:new n.Vector2(1,10)},hatchTintColor:{type:"c",value:new n.Color(16777215)},hatchTintIntensity:{type:"f",value:1}},Se={dbId:{type:"v3",value:new n.Vector3(0,0,0)},modelId:{type:"v3",value:new n.Vector3(0,0,0)}},Ae={themingColor:{type:"v4",value:new n.Vector4(0,0,0,0)}},we={shadowESMConstant:{type:"f",value:0}},Te=n.UniformsUtils.merge([{shadowMap:{type:"t",value:null},shadowMapSize:{type:"v2",value:new n.Vector2(0,0)},shadowBias:{type:"f",value:0},shadowDarkness:{type:"f",value:0},shadowMatrix:{type:"m4",value:new n.Matrix4},shadowLightDir:{type:"v3",value:new n.Vector3}},we]),Me={point_size:{type:"f",value:1}},Ce={view_size:{type:"v2",value:new n.Vector2(640,480)}},Pe={tDepth:{type:"t",value:null},projInfo:{type:"v4",value:new n.Vector4},isOrtho:{type:"f",value:0},worldMatrix_mainPass:{type:"m4",value:new n.Matrix4}},De={tDepthTest:{type:"t",value:null},tDepthResolution:{type:"v2",value:new n.Vector2(1/1024,1/1024)}};var Le={};for(var Ie in n.ShaderChunk)Le[Ie]=n.ShaderChunk[Ie];Le.pack_depth=o(),Le.depth_texture=a(),Le.tonemap=c(),Le.ordered_dither=u(),Le.cutplanes=f(),Le.pack_normals=m(),Le.hatch_pattern=v(),Le.env_sample=b(),Le.id_decl_vert=_(),Le.id_vert=S(),Le.id_decl_frag=w(),Le.id_frag=M(),Le.final_frag=P(),Le.theming_decl_frag=L(),Le.theming_frag=R(),Le.instancing_decl_vert=N(),Le.shadowmap_decl_common=U(),Le.shadowmap_decl_vert=k(),Le.shadowmap_vert=G(),Le.shadowmap_decl_frag=H(),Le.float3_average=j(),Le.line_decl_common=X(),Le.prism_wood=K(),Le.prism_glazing=Z(),Le.prism_transparency=J(),Le.normal_map=te(),Le.decl_point_size=ne(),Le.point_size=oe(),Le.wide_lines_decl=ae(),Le.wide_lines_vert=ce(),Le.hsv=ue(),Le.importance_sampling=fe(),Le.logdepthbuf_decl_frag=me(),Le.logdepthbuf_frag=ve(),Le.logdepthbuf_decl_vert=be(),Le.logdepthbuf_vert=_e();var Re={},Oe={};for(Ie in Re)Oe[Ie]=new RegExp("#"+Ie+" *<([\\w\\d., ]*)>","g");let Ne=function(e){for(var t in Re){var i=Oe[t];e=e.replace(i,(function(e,i){var n=i.split(",").map((function(e){return e.trim()}));return Re[t].apply(null,n)}))}return e.replace(/#include *<([\w\d.]+)>/g,(function(e,t){if(!Le[t])throw new Error("Cannot resolve #include<"+t+">");return Ne(Le[t])}))},Fe=Le.pack_depth,Ue=Le.tonemap,Be=Le.ordered_dither,ke=Le.cutplanes,Ve=Le.pack_normals,Ge=Le.hatch_pattern,ze=Le.env_sample,He=Le.id_decl_vert,We=Le.id_vert,je=Le.id_decl_frag,qe=Le.id_frag,Xe=Le.final_frag,Ye=Le.theming_decl_frag,Ke=Le.theming_frag,Qe=Le.instancing_decl_vert,Ze=Le.shadowmap_decl_common,$e=Le.shadowmap_decl_vert,Je=Le.shadowmap_vert,et=Le.shadowmap_decl_frag,tt=Le.decl_point_size,it=Le.point_size,nt={IdUniforms:Se,ThemingUniform:Ae,CutPlanesUniforms:Ee,ShadowMapCommonUniforms:we,ShadowMapUniforms:Te,PointSizeUniforms:Me,WideLinesUniforms:Ce,DepthTextureUniforms:Pe,DepthTextureTestUniforms:De,PackDepthShaderChunk:Fe,TonemapShaderChunk:Ue,OrderedDitheringShaderChunk:Be,CutPlanesShaderChunk:ke,PackNormalsShaderChunk:Ve,HatchPatternShaderChunk:Ge,EnvSamplingShaderChunk:ze,IdVertexDeclaration:He,IdVertexShaderChunk:We,IdFragmentDeclaration:je,IdOutputShaderChunk:qe,FinalOutputShaderChunk:Xe,ThemingFragmentDeclaration:Ye,ThemingFragmentShaderChunk:Ke,InstancingVertexDeclaration:Qe,ShadowMapDeclareCommonUniforms:Ze,ShadowMapVertexDeclaration:$e,ShadowMapVertexShaderChunk:Je,ShadowMapFragmentDeclaration:et,PointSizeDeclaration:tt,PointSizeShaderChunk:it,...Le,resolve:Ne}},68449:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ShaderPass:()=>o});var n=i(2179),r=i(72091);let o=function(e,t){this.textureID=void 0!==t?t:"tDiffuse",this.material=(0,n.createShaderMaterial)(e),this.uniforms=this.material.uniforms,this.renderToScreen=!1,this.enabled=!0,this.clear=!1,this.camera=new r.OrthographicCamera(-1,1,1,-1,0,1);var i=new r.BufferGeometry,o=new Float32Array(9);o[0]=-1,o[1]=-1,o[2]=0,o[3]=3,o[4]=-1,o[5]=0,o[6]=-1,o[7]=3,o[8]=0;var s=new Float32Array(6);s[0]=0,s[1]=0,s[2]=2,s[3]=0,s[4]=0,s[5]=2;var a=new Float32Array(9);a[0]=0,a[1]=0,a[2]=1,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=1,i.setAttribute("position",new r.BufferAttribute(o,3)),i.setAttribute("normal",new r.BufferAttribute(a,3)),i.setAttribute("uv",new r.BufferAttribute(s,2)),this.quad=new r.Mesh(i,this.material),this.scene=new r.Scene,this.scene.add(this.quad)};o.prototype={render:function(e,t,i,n){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=i),e.setRenderTarget(t),!this.renderToScreen&&this.clear&&e.clear(),e.render(this.scene,this.camera)}}},2179:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ShaderUtils:()=>a,createShaderMaterial:()=>r,removeMacro:()=>s,setMacro:()=>o});var n=i(72091);let r=function(e){let t={vertexShader:e.vertexShader,fragmentShader:e.fragmentShader};return e.uniforms&&(t.uniforms=n.UniformsUtils.clone(e.uniforms)),e.defines&&(t.defines=Object.assign({},e.defines)),e.extensions&&(t.extensions=Object.assign({},e.extensions)),e.attributes&&(t.attributes=e.attributes),new n.ShaderMaterial(t)},o=function(e,t,i){i=i||"",e.defines||(e.defines={}),e.defines[t]!=i&&(e.defines[t]=i,e.needsUpdate=!0)},s=function(e,t){(e.defines||e.defines[t])&&(delete e.defines[t],e.needsUpdate=!0)};const a={createShaderMaterial:r,setMacro:o,removeMacro:s}},22267:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GroundShadowShader:()=>x,SHADOWMAP_INCOMPLETE:()=>A,SHADOWMAP_NEEDS_UPDATE:()=>S,SHADOWMAP_VALID:()=>w,ShadowConfig:()=>E,ShadowMapOverrideMaterials:()=>_,ShadowMapShader:()=>b,ShadowMaps:()=>C,ShadowRender:()=>P});var n=i(30130),r=i(2179),o=i(60012),s=i(65802),a=i(39147),l=i(24528),c=i(72091),h=i(9063),u=i.n(h),d=i(32968),f=i.n(d),p=i(54707),m=i.n(p),g=i(77500),v=i.n(g);let y=function(e,t,i){var n="uv_"+e+"_map",r="";return t&&i?r="if ("+n+".x < 0.0 || "+n+".x > 1.0 || "+n+".y < 0.0 || "+n+".y > 1.0) { discard; }":t?r="if ("+n+".x < 0.0 || "+n+".x > 1.0) { discard; }":i&&(r="if ("+n+".y < 0.0 || "+n+".y > 1.0) { discard; }"),"#define "+e.toUpperCase()+"_CLAMP_TEST "+r},b={uniforms:c.UniformsUtils.merge([n.ShaderChunks.ShadowMapCommonUniforms,{shadowMapRangeMin:{type:"f",value:0},shadowMapRangeSize:{type:"f",value:0},shadowMinOpacity:{type:"f",value:0},map:{type:"t",value:null},alphaMap:{type:"t",value:null},texMatrix:{type:"m3",value:new c.Matrix3},texMatrixAlpha:{type:"m3",value:new c.Matrix3}},(0,o.GetPrismMapUniforms)("surface_cutout_map")]),vertexShader:u(),fragmentShader:f()},x={uniforms:n.ShaderChunks.ShadowMapUniforms,vertexShader:m(),fragmentShader:v()};function _(){var e=[],t=(0,r.createShaderMaterial)(b),i=new c.Material;i.visible=!1;var n=[];var o=new function(){this.init=function(){this.isPrism=!1,this.alphaMap=!1,this.alphaClampS=!1,this.alphaClampT=!1,this.alphaInvert=!1,this.rgbaMap=!1,this.rgbaClampS=!1,this.rgbaClampT=!1,this.rgbaInvert=!1,this.instanced=!1,this.decalIndex=-1},this.init(),this.getMaterialIndex=function(){return(this.isPrism?1:0)|(this.alphaMap?2:0)|(this.alphaClampS?4:0)|(this.alphaClampT?8:0)|(this.alphaInvert?16:0)|(this.rgbaMap?32:0)|(this.rgbaClampS?64:0)|(this.rgbaClampT?128:0)|(this.rgbaInvert?256:0)|(this.instanced?512:0)|1024*(this.decalIndex+1)}};function s(n,s){if((a=n)instanceof c.MeshPhongMaterial?a.opacity=s||V.expandByPoint(l))}e.union(V)}),this.getShadowParams=function(){return t},this.getShadowCamera=function(){return n}}const P=function(){};P.RefreshUniformsShadow=function(e,t){e.shadowMap&&(e.shadowMap.value=t.shadowMap),e.shadowMatrix&&(e.shadowMatrix.value=t.shadowMatrix),e.shadowLightDir&&(e.shadowLightDir.value=t.shadowLightDir),e.shadowESMConstant&&(e.shadowESMConstant.value=E.ShadowESMConstant),e.shadowBias&&(e.shadowBias.value=E.ShadowBias),e.shadowMapSize&&(e.shadowMapSize.value=E.ShadowMapSize),e.shadowDarkness&&(e.shadowDarkness.value=E.ShadowDarkness)}},71211:(e,t,i)=>{"use strict";i.d(t,{A:()=>a});var n=i(38383),r=i.n(n),o=i(88368),s=i.n(o);class a{constructor(e,t,i,n){this.viewerImpl=e,this.renderContext=t,this.glRenderer=i,this.materialManager=n,this.materialName="__material_2Don3D__",this.tmpVec=new THREE.Vector3,this.tmpBox=new THREE.Box3}createContext(){this.sheetContext=new Autodesk.Viewing.Private.RenderContext,this.sheetContext.init(this.glRenderer,this.renderContext.settings.logicalWidth,this.renderContext.settings.logicalHeight,{offscreen:!0});const e=this.renderContext.getConfig();e.antialias=!1,e.renderEdges=!1,e.clearAlpha=0,e.clearColor?e.clearColor.set(1,1,1):(e.clearColorBottom.set(1,1,1),e.clearColorTop.set(1,1,1)),this.sheetContext.applyConfig(e),this.prototypeScene=new THREE.Scene}setSize(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.renderContext;this.sheetContext&&(this.sheetContext.setSize(e.settings.logicalWidth,e.settings.logicalHeight),this.updateMaterial())}createScene(){this.setSize(),this.scene=new THREE.Scene,this.planeGeometry=new THREE.PlaneBufferGeometry(1,1),this.material=new THREE.ShaderMaterial({uniforms:{sheetMap:{type:"t",value:this.sheetContext.getColorTarget()},idMap:{type:"t",value:this.sheetContext.getIDTargets()[0]},modelIDv2:{type:"v3",value:new THREE.Vector3},resolution:{type:"v2",value:new THREE.Vector2},alphaTest:{type:"f",value:0}},vertexShader:r(),fragmentShader:s(),side:THREE.DoubleSide,transparent:!0}),this.scene.skipDepthTarget=!0,this.updateMaterial(),this.materialManager.addMaterialNonHDR(this.materialName,this.material),this.mesh=new THREE.Mesh(this.planeGeometry,this.material),this.mesh.matrixAutoUpdate=!1,this.scene.add(this.mesh)}updateMaterial(){if(this.material){const e=this.sheetContext.getColorTarget();this.material.uniforms.sheetMap.value=e,this.material.uniforms.idMap.value=this.sheetContext.getIDTargets()[0],this.material.uniforms.resolution.value.set(1/(e.width||1),1/(e.height||1))}}renderScenePart(e,t,i,n){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.renderContext;if(!e.frags||!e.frags.is2d)return;this.sheetContext||this.createContext(),this.scene||this.createScene(),this.material.uniforms.alphaTest.value=!e.needsTwoPasses||e.isSecondPass?0:.9;const o=e.modelId,s=this.viewerImpl.modelQueue().findModel(o),a=this.tmpBox.copy(s.getBoundingBox(!0)),l=s.getViewportBounds();l&&a.intersect(l);const c=s.getModelToViewerTransform();this.material.uniforms.modelIDv2.value.set((255&o)/255,(o>>8&255)/255,(o>>16&255)/255),r.getAOEnabled()!==this.sheetContext.getAOEnabled()&&this.sheetContext.initPostPipeline(r.getAOEnabled(),!1),n=n&&s.areAllVisible(),i=!1;this.lastRenderedModel===s&&e.isSecondPass||(this.sheetContext.beginScene(this.prototypeScene,this.viewerImpl.camera,this.viewerImpl.noLights,!0),this.sheetContext.renderScenePart(e,t,i,n,!1),this.sheetContext.presentBuffer());const h=a.getSize(new THREE.Vector3);this.mesh.matrix.makeScale(h.x,h.y,1),a.getCenter(this.tmpVec),this.mesh.matrix.setPosition(this.tmpVec),c&&this.mesh.matrix.multiplyMatrices(c,this.mesh.matrix),this.mesh.matrixWorld.copy(this.mesh.matrix),this.scene.modelId=o,r.renderScenePart(this.scene,t,i,n),this.lastRenderedModel=s}destroy(){this.material&&(this.material.dispose(),this.materialManager.removeNonHDRMaterial(this.materialName),this.material=null),this.planeGeometry&&(this.planeGeometry.dispose(),this.planeGeometry=null),this.sheetContext&&(this.sheetContext.cleanup(),this.context=null),this.renderContext=null,this.glRenderer=null}}},46890:(e,t,i)=>{"use strict";i.r(t),i.d(t,{WebGLProgram:()=>l});var n=i(61453),r=i(30130),o=i(72091);const s="#version 300 es\n #define texture2D texture\n #define textureCube texture\n #define attribute in\n #define varying out\n",a="#version 300 es\n #define texture2D texture\n #define textureCube texture\n #define textureCubeLodEXT textureLod\n #define gl_FragColor outFragColor\n #define varying in\n";let l=(c=0,h=function(e){return""!==e},u=function(e,t,i,n,r){var o=n?"1.0-":"",s="texture2D("+e+", (UV))",a="";return r=r||"vec4(0.0)",t&&i?a="((UV).x < 0.0 || (UV).x > 1.0 || (UV).y < 0.0 || (UV).y > 1.0) ? "+r+" : ":t?a="((UV).x < 0.0 || (UV).x > 1.0) ? "+r+" : ":i&&(a="((UV).y < 0.0 || (UV).y > 1.0) ? "+r+" : "),"#define GET_"+e.toUpperCase()+"(UV) ("+a+o+s+")"},function(e,t,i,l,d){var f=e,p=f.context,m=i.defines,g=i.__webglShader.uniforms;let v={};v={...i.attributes,...d.attributes};var y=(0,r.resolve)(l.vertexShader),b=(0,r.resolve)(l.fragmentShader),x=i.index0AttributeName;void 0===x&&!0===l.morphTargets&&(x="position");var _,E,S="ENVMAP_MODE_REFLECTION",A=e.gammaFactor>0?e.gammaFactor:1,w=function(e){var t,i,n=[];for(var r in e)!1!==(t=e[r])&&(i="#define "+r+" "+t,n.push(i));return n.join("\n")}(m),T=p.createProgram();i instanceof o.RawShaderMaterial?((_=[s,w].filter(h).join("\n")).length>0&&(_+="\n"),(E=[a,"precision "+l.precisionFragment+" float;",w,"out vec4 outFragColor;"].filter(h).join("\n")).length>0&&(E+="\n")):(_=[s,"precision "+l.precision+" float;","precision "+l.precision+" int;",w,l.vertexPrefix,l.supportsVertexTextures?"#define VERTEX_TEXTURES":"",f.gammaInput?"#define GAMMA_INPUT":"",f.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+A,l.mrtNormals?"#define MRT_NORMALS":"",l.mrtIdBuffer?"#define MRT_ID_BUFFER":"","#define MAX_DIR_LIGHTS "+l.maxDirLights,"#define MAX_POINT_LIGHTS "+l.maxPointLights,"#define MAX_SPOT_LIGHTS "+l.maxSpotLights,"#define MAX_HEMI_LIGHTS "+l.maxHemiLights,"#define MAX_BONES "+l.maxBones,"#define NUM_CUTPLANES "+l.numCutplanes,l.loadingAnimationDuration>0?"#define LOADING_ANIMATION":"",l.map?"#define USE_MAP":"",l.envMap?"#define USE_ENVMAP":"",l.envMap?"#define "+S:"",l.irradianceMap?"#define USE_IRRADIANCEMAP":"",l.lightMap?"#define USE_LIGHTMAP":"",l.bumpMap?"#define USE_BUMPMAP":"",l.normalMap?"#define USE_NORMALMAP":"",l.specularMap?"#define USE_SPECULARMAP":"",l.alphaMap?"#define USE_ALPHAMAP":"",l.vertexColors?"#define USE_COLOR":"",l.vertexIds?"#define USE_VERTEX_ID":"",l.useTiling?"#define USE_TILING":"",l.useInstancing?"#define USE_INSTANCING":"",l.wideLines?"#define WIDE_LINES":"",l.skinning?"#define USE_SKINNING":"",l.useVertexTexture?"#define BONE_TEXTURE":"",l.morphTargets?"#define USE_MORPHTARGETS":"",l.morphNormals?"#define USE_MORPHNORMALS":"",l.wrapAround?"#define WRAP_AROUND":"",l.doubleSided?"#define DOUBLE_SIDED":"",l.flipSided?"#define FLIP_SIDED":"",l.sizeAttenuation?"#define USE_SIZEATTENUATION":"",l.packedNormals?"#define UNPACK_NORMALS":"",l.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",l.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","#ifdef UNPACK_NORMALS","attribute vec2 normal;","#else","attribute vec3 normal;","#endif","attribute vec2 uv;","attribute vec2 uv2;","#ifdef USE_COLOR"," attribute vec3 color;","#endif",""].join("\n"),E=[a,w,l.fragmentPrefix,"#define MAX_DIR_LIGHTS "+l.maxDirLights,"#define MAX_POINT_LIGHTS "+l.maxPointLights,"#define MAX_SPOT_LIGHTS "+l.maxSpotLights,"#define MAX_HEMI_LIGHTS "+l.maxHemiLights,"#define NUM_CUTPLANES "+l.numCutplanes,l.loadingAnimationDuration>0?"#define LOADING_ANIMATION":"",l.alphaTest?"#define ALPHATEST "+l.alphaTest:"",f.gammaInput?"#define GAMMA_INPUT":"",f.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+A,l.mrtNormals?"#define MRT_NORMALS":"",l.mrtIdBuffer?"#define MRT_ID_BUFFER":"",l.mrtIdBuffer>1?"#define MODEL_COLOR":"","#define TONEMAP_OUTPUT "+(l.tonemapOutput||0),l.useBackgroundTexture?"#define USE_BACKGROUND_TEXTURE":"",l.useFog&&l.fog?"#define USE_FOG":"",l.useFog&&l.fogExp?"#define FOG_EXP2":"",l.map?"#define USE_MAP":"",l.envMap?"#define USE_ENVMAP":"",l.envMap?"#define ENVMAP_TYPE_CUBE":"",l.envMap?"#define "+S:"",l.envMap?"#define ENVMAP_BLENDING_MULTIPLY":"",l.irradianceMap?"#define USE_IRRADIANCEMAP":"",l.envGammaEncoded?"#define ENV_GAMMA":"",l.irrGammaEncoded?"#define IRR_GAMMA":"",l.envRGBM?"#define ENV_RGBM":"",l.irrRGBM?"#define IRR_RGBM":"",l.lightMap?"#define USE_LIGHTMAP":"",l.bumpMap?"#define USE_BUMPMAP":"",l.normalMap?"#define USE_NORMALMAP":"",l.specularMap?"#define USE_SPECULARMAP":"",l.alphaMap?"#define USE_ALPHAMAP":"",l.vertexColors?"#define USE_COLOR":"",l.vertexIds?"#define USE_VERTEX_ID":"",l.metal?"#define METAL":"",l.clearcoat?"#define CLEARCOAT":"",l.wrapAround?"#define WRAP_AROUND":"",l.doubleSided?"#define DOUBLE_SIDED":"",l.flipSided?"#define FLIP_SIDED":"",l.hatchPattern?"#define HATCH_PATTERN":"",l.useTheming?"#define USE_THEMING":"",l.mapInvert?"#define MAP_INVERT":"",l.useTiling?"#define USE_TILING":"",l.useTiling?"#define TILE_RANGE_X_MIN "+l.tilingRepeatRange[0]:"",l.useTiling?"#define TILE_RANGE_Y_MIN "+l.tilingRepeatRange[1]:"",l.useTiling?"#define TILE_RANGE_X_MAX "+l.tilingRepeatRange[2]:"",l.useTiling?"#define TILE_RANGE_Y_MAX "+l.tilingRepeatRange[3]:"",l.hasRoundCorner?"#define USE_TILING_NORMAL":"",l.useRandomOffset?"#define USE_TILING_RANDOM":"",u("map",l.mapClampS,l.mapClampT),u("bumpMap",l.bumpMapClampS,l.bumpMapClampT),u("normalMap",l.normalMapClampS,l.normalMapClampT),u("specularMap",l.specularMapClampS,l.specularMapClampT),u("alphaMap",l.alphaMapClampS,l.alphaMapClampT,l.alphaMapInvert),l.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",l.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF_EXT":"",l.logarithmicDepthBuffer&&l.polygonOffset?"#define POLYGON_OFFSET":"","precision "+l.precisionFragment+" float;","precision "+l.precisionFragment+" int;","layout(location = 0) out vec4 outFragColor;","uniform highp mat4 viewMatrix;","uniform highp mat4 projectionMatrix;","uniform highp vec3 cameraPosition;","#if defined(USE_ENVMAP) || defined(USE_IRRADIANCEMAP)","uniform mat4 viewMatrixInverse;","#endif",""].join("\n"));var M=new n.WebGLShader(p,p.VERTEX_SHADER,_+y),C=new n.WebGLShader(p,p.FRAGMENT_SHADER,E+b);p.attachShader(T,M),p.attachShader(T,C),void 0!==x&&p.bindAttribLocation(T,0,x),p.linkProgram(T),"undefined"!=typeof DEBUG_SHADERS&&DEBUG_SHADERS&&(!1===p.getProgramParameter(T,p.LINK_STATUS)&&(console.error("THREE.WebGLProgram: Could not initialise shader."),console.error("gl.VALIDATE_STATUS",p.getProgramParameter(T,p.VALIDATE_STATUS)),console.error("gl.getError()",p.getError())),""!==p.getProgramInfoLog(T)&&console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",p.getProgramInfoLog(T))),p.deleteShader(M),p.deleteShader(C);var P=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","modelMatrix","cameraPosition","viewMatrixInverse","mvpMatrix","dbId"];for(var D in g)P.push(D);for(var L in P.push("logDepthBufFC","polygonOffset"),this.uniforms=function(e,t,i){for(var n={},r=0,o=i.length;r{"use strict";i.r(t),i.d(t,{DEBUG_TEXTURE_LOAD:()=>p,WebGLRenderer:()=>v});var n=i(46890),r=i(22267),o=i(45383),s=i(8879),a=i(55280),l=i(72091),c=i(57872);class h{constructor(e,t,i){this.bufferRegion=e,this.offset=t,this.size=i}getGlBuffer(){return this.bufferRegion._buffer}getStride(){return this.bufferRegion._stride}}class u{constructor(e,t,i,n){this._buffer=e.createBuffer(),this._size=t,this._subsets=[],this._freeSpace=t,this._isVertexBuffer=i===e.ARRAY_BUFFER,this._stride=n,e.bindBuffer(i,this._buffer),e.bufferData(i,t,e.STATIC_DRAW)}tryAllocateBufferSubset(e){if(e>this._freeSpace)return null;let t=0;for(let i=0;i=e){const n=new h(this,t,e);return this._subsets.splice(i,0,n),this._freeSpace-=e,n}t=n.offset+n.size}if(t+e>this._size)return null;const i=new h(this,t,e);return this._subsets.push(i),this._freeSpace-=e,i}destroy(e){e.deleteBuffer(this._buffer),this._buffer=null}}class d{constructor(e){this._gl=e,this._indexBuffers=[],this._vertexBuffers=[]}allocateNewBufferRegion(e,t,i){const n=e===this._gl.ARRAY_BUFFER,r=n?this._vertexBuffers:this._indexBuffers,o=Math.max(t,n?c.VERTEX_BUFFER_REGION_SIZE:c.INDEX_BUFFER_REGION_SIZE);console.assert(o%4==0,"Buffer size must be a multiple of 4");const s=new u(this._gl,o,e,i);return r.push(s),s}allocateBufferSubset(e,t,i){const n=t===this._gl.ARRAY_BUFFER?this._vertexBuffers:this._indexBuffers;for(let t=0;t{this._gl.bindBuffer(this._gl.ARRAY_BUFFER,t._buffer);return e+this._gl.getBufferParameter(this._gl.ARRAY_BUFFER,this._gl.BUFFER_SIZE)}),0)/1024),console.log("Actually allocated memory in Vertex Buffers: ",this._vertexBuffers.reduce(((e,t)=>e+t._size-t._freeSpace),0)),console.log("Index Buffer Count: ",this._indexBuffers.length),console.log("Memory in Index Buffers: ",this._indexBuffers.reduce(((e,t)=>{this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,t._buffer);return e+this._gl.getBufferParameter(this._gl.ELEMENT_ARRAY_BUFFER,this._gl.BUFFER_SIZE)}),0)/1024),console.log("Actually allocated memory in Index Buffers: ",this._indexBuffers.reduce(((e,t)=>e+t._size-t._freeSpace),0))}}var f=i(33472);let p=!1;const m=(0,a.getGlobal)(),g=m.document;let v=function(e){console.log("THREE.WebGLRenderer",l.REVISION);var t=void 0!==(e=e||{}).canvas?e.canvas:g.createElement("canvas"),i=null,a=void 0!==e.precision?e.precision:"highp",h=a,u=void 0!==e.alpha&&e.alpha,v=void 0===e.premultipliedAlpha||e.premultipliedAlpha,y=void 0!==e.antialias&&e.antialias,b=void 0===e.stencil||e.stencil,x=void 0===e.preserveDrawingBuffer||e.preserveDrawingBuffer,_=e.logarithmicDepthBuffer,E=new l.Color(0),S=0,A=[],w={},T=new l.Matrix4,M=new l.Matrix3;this.highResTimeStamp=0;var C=[],P=[];this.domElement=t,this.context=null,this.refCount=0,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.gammaInput=!1,this.gammaOutput=!1,this.maxMorphTargets=8,this.maxMorphNormals=4,this.autoScaleCubemaps=!0,this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0},reset:function(){this.render.calls=0}};var D,L,I,R,O=this,N=[],F=null,U=null,B=null,k=null,V=-1,G=null,z="",H=0,W="",j="",q=new Set,X=0,Y=0,K=0,Q=t.width,Z=t.height,$={},J=new l.Frustum,ee=new l.Matrix4,te=new l.Matrix4,ie=new l.Vector3,ne=new l.Vector3,re=!0,oe={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}};O.capabilities={};try{var se={alpha:u,premultipliedAlpha:v,antialias:y,stencil:b,powerPreference:"high-performance",preserveDrawingBuffer:x};if(D=t.getContext("webgl2",se),O.capabilities.isWebGL2=!0,null===D)throw null!==t.getContext("webgl2",se)?"Error creating WebGL context with your selected attributes.":"Error creating WebGL context.";!function(e){let t=e.colorMask.bind(e),i=e.getParameter(e.COLOR_WRITEMASK);e.colorMask=function(e,n,r,o){e===i[0]&&n===i[1]&&r===i[2]&&o===i[3]||(i[0]=e,i[1]=n,i[2]=r,i[3]=o,t(e,n,r,o))},e.getColorMask=function(){return i.slice()}}(D);const e=D.getExtension("WEBGL_debug_renderer_info");if(e){const t=D.getParameter(e.UNMASKED_VENDOR_WEBGL),i=D.getParameter(e.UNMASKED_RENDERER_WEBGL);console.log("WebGL Renderer: "+i),console.log("WebGL Vendor: "+t)}L=new d(D),I=c.USE_BUFFER_MANAGER?L.freeBufferSubset.bind(L):D.deleteBuffer.bind(D),R=c.USE_BUFFER_MANAGER?function(e){void 0===e.__webglInit&&(e.__webglInit=!0,e.addEventListener("dispose",Fe));if(e.streamingDraw&&!q.has(e)){if(e.streamingDraw===f.O){if(e.streamingDraw=!1,e.streamingIndex=!1,e.discardAfterUpload){e.ib&&(e.ibLength=e.ib.length,e.ibByteSize=e.ib instanceof Uint32Array?4:2,e.ib=null),e.vb&&(e.vbLength=e.vb.length,e.vb=null),e.iblines&&(e.iblinesLength=e.iblines.length,e.iblinesByteSize=e.iblines instanceof Uint32Array?4:2,e.iblines=null);const t=e.attributes,i=Object.keys(e.attributes);for(let e=0,n=i.length;e0,xe=D.getShaderPrecisionFormat(D.VERTEX_SHADER,D.HIGH_FLOAT),_e=D.getShaderPrecisionFormat(D.VERTEX_SHADER,D.MEDIUM_FLOAT),Ee=D.getShaderPrecisionFormat(D.FRAGMENT_SHADER,D.HIGH_FLOAT),Se=D.getShaderPrecisionFormat(D.FRAGMENT_SHADER,D.MEDIUM_FLOAT),Ae=new Uint8Array(16),we=0;we<4;we++)p?1===we||2===we?(Ae[4*we]=246,Ae[4*we+1]=140,Ae[4*we+2]=220):(Ae[4*we]=48,Ae[4*we+1]=195,Ae[4*we+2]=3):Ae[4*we]=Ae[4*we+1]=Ae[4*we+2]=0,Ae[4*we+3]=255;function Te(){(pe=new l.DataTexture(Ae,2,2,l.RGBAFormat,l.UnsignedByteType,l.UVMapping,l.RepeatWrapping,l.RepeatWrapping,l.NearestFilter,l.NearestFilter)).needsUpdate=!0}Te();var Me,Ce,Pe=function(){if(void 0!==Me)return Me;if(Me=[],ae.get("WEBGL_compressed_texture_pvrtc")||ae.get("WEBGL_compressed_texture_s3tc"))for(var e=D.getParameter(D.COMPRESSED_TEXTURE_FORMATS),t=0;t0,Le=_e.precision>0;"highp"!==a||De||(Le?(a="mediump",console.warn("WebGLRenderer: highp not supported, using mediump")):(a="lowp",console.warn("WebGLRenderer: highp and mediump not supported, using lowp"))),"mediump"!==a||Le||(a="lowp",console.warn("WebGLRenderer: mediump not supported, using lowp")),De=Ee.precision>0,Le=Se.precision>0,"highp"!==h||De||(Le?(h="mediump",console.warn("WebGLRenderer: highp not supported, using mediump")):(h="lowp",console.warn("WebGLRenderer: highp and mediump not supported, using lowp"))),"mediump"!==h||Le||(h="lowp",console.warn("WebGLRenderer: mediump not supported, using lowp")),this.getContext=function(){return D},this.isWebGL2=function(){return!0},this.forceContextLoss=function(){ae.get("WEBGL_lose_context").loseContext()},this.forceContextRestore=function(){ae.get("WEBGL_lose_context").restoreContext()},this.getMaxAnisotropy=function(){if(void 0!==Ce)return Ce;var e=ae.get("EXT_texture_filter_anisotropic");return Ce=null!==e?D.getParameter(e.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},this.getPixelRatio=function(){return i||m.devicePixelRatio||1},this.setPixelRatio=function(e){i=e},this.getCurrentFramebuffer=function(){return U},this.setSize=function(e,i,n){const r=this.getPixelRatio();t.width=e*r,t.height=i*r,!1!==n&&(t.style.width=e+"px",t.style.height=i+"px"),this.setViewport(0,0,e,i)},this.setViewport=function(e,t,i,n){const r=this.getPixelRatio();Y=e*r,K=t*r,Q=i*r,Z=n*r,D.viewport(Y,K,Q,Z)};var Ie=!1;this.enableViewportOnOffscreenTargets=function(e){Ie=e};var Re=[];function Oe(e){e.__webglVertexBuffer=D.createBuffer(),e.__webglNormalBuffer=D.createBuffer(),e.__webglTangentBuffer=D.createBuffer(),e.__webglColorBuffer=D.createBuffer(),e.__webglUVBuffer=D.createBuffer(),e.__webglUV2Buffer=D.createBuffer(),e.__webglSkinIndicesBuffer=D.createBuffer(),e.__webglSkinWeightsBuffer=D.createBuffer(),e.__webglFaceBuffer=D.createBuffer(),e.__webglLineBuffer=D.createBuffer(),O.info.memory.geometries++}this.pushViewport=function(){Re.push(Y),Re.push(K),Re.push(Q),Re.push(Z)},this.popViewport=function(){var e=Re.length-4;Y=Re[e],K=Re[e+1],Q=Re[e+2],Z=Re[e+3],D.viewport(Y,K,Q,Z),Re.length=e},this.setScissor=function(e,t,i,n){const r=this.getPixelRatio();D.scissor(e*r,t*r,i*r,n*r)},this.enableScissorTest=function(e){e?D.enable(D.SCISSOR_TEST):D.disable(D.SCISSOR_TEST)},this.getClearColor=function(e){return void 0===e&&(console.warn("WebGLRenderer: .getClearColor() now requires a Color as an argument"),e=new l.Color),e.copy(E)},this.setClearColor=function(e,t){E.set(e),S=void 0!==t?t:1,ue(E.r,E.g,E.b,S)},this.getClearAlpha=function(){return S},this.setClearAlpha=function(e){S=e,ue(E.r,E.g,E.b,S)},this.clear=function(e,t,i){var n=0;(void 0===e||e)&&(n|=D.COLOR_BUFFER_BIT),(void 0===t||t)&&(n|=D.DEPTH_BUFFER_BIT),(void 0===i||i)&&(n|=D.STENCIL_BUFFER_BIT),D.clear(n)},this.clearColor=function(){D.clear(D.COLOR_BUFFER_BIT)},this.clearDepth=function(){D.clear(D.DEPTH_BUFFER_BIT)},this.clearStencil=function(){D.clear(D.STENCIL_BUFFER_BIT)},this.clearTarget=function(e,t,i,n){this.setRenderTarget(e),this.clear(t,i,n)},this.resetGLState=fe;var Ne=function(e){e.target.traverse((function(e){e.removeEventListener("remove",Ne),function(e){(e instanceof l.Mesh||e instanceof l.PointCloud||e instanceof l.Line)&&delete w[e.id];delete e.__webglInit,delete e.__webglActive}(e)}))},Fe=function(e){var t=e.target;t.removeEventListener("dispose",Fe),Ge(t)},Ue=function(e){var t=e.target;t.removeEventListener("dispose",Ue),qe(t),O.info.memory.textures--},Be=function(e){var t=e.target;t.removeEventListener("dispose",Be),Xe(t),O.info.memory.textures--},ke=function(e){var t=e.target;t.removeEventListener("dispose",ke),Ye(t)},Ve=function(e){if(void 0!==e.__webglVertexBuffer&&(D.deleteBuffer(e.__webglVertexBuffer),e.__webglVertexBuffer=void 0),void 0!==e.__webglNormalBuffer&&(D.deleteBuffer(e.__webglNormalBuffer),e.__webglNormalBuffer=void 0),void 0!==e.__webglTangentBuffer&&(D.deleteBuffer(e.__webglTangentBuffer),e.__webglTangentBuffer=void 0),void 0!==e.__webglColorBuffer&&(D.deleteBuffer(e.__webglColorBuffer),e.__webglColorBuffer=void 0),void 0!==e.__webglUVBuffer&&(D.deleteBuffer(e.__webglUVBuffer),e.__webglUVBuffer=void 0),void 0!==e.__webglUV2Buffer&&(D.deleteBuffer(e.__webglUV2Buffer),e.__webglUV2Buffer=void 0),void 0!==e.__webglSkinIndicesBuffer&&(D.deleteBuffer(e.__webglSkinIndicesBuffer),e.__webglSkinIndicesBuffer=void 0),void 0!==e.__webglSkinWeightsBuffer&&(D.deleteBuffer(e.__webglSkinWeightsBuffer),e.__webglSkinWeightsBuffer=void 0),void 0!==e.__webglFaceBuffer&&(D.deleteBuffer(e.__webglFaceBuffer),e.__webglFaceBuffer=void 0),void 0!==e.__webglLineBuffer&&(D.deleteBuffer(e.__webglLineBuffer),e.__webglLineBuffer=void 0),void 0!==e.__webglLineDistanceBuffer&&(D.deleteBuffer(e.__webglLineDistanceBuffer),e.__webglLineDistanceBuffer=void 0),void 0!==e.__webglCustomAttributesList){for(var t in e.__webglCustomAttributesList)D.deleteBuffer(e.__webglCustomAttributesList[t].buffer);e.__webglCustomAttributesList=void 0}O.info.memory.geometries--},Ge=function(e){var t,i,n,r;if(e.__webglInit=void 0,e instanceof l.BufferGeometry){if(void 0!==e.vbbuffer&&(I(e.vbbuffer),e.vbbuffer=void 0),void 0!==e.ibbuffer&&(I(e.ibbuffer),e.ibbuffer=void 0),void 0!==e.iblinesbuffer&&(I(e.iblinesbuffer),e.iblinesbuffer=void 0),e.vaos){for(t=0;t0&&(e.__uvArray=new Float32Array(2*r)),i.faceVertexUvs.length>1&&(e.__uv2Array=new Float32Array(2*r))),t.geometry.skinWeights.length&&t.geometry.skinIndices.length&&(e.__skinIndexArray=new Float32Array(4*r),e.__skinWeightArray=new Float32Array(4*r));var u=o>21845?Uint32Array:Uint16Array;if(e.__typeArray=u,e.__faceArray=new u(3*o),e.__lineArray=new u(2*s),e.__webglFaceCount=3*o,e.__webglLineCount=2*s,a.attributes)for(var d in void 0===e.__webglCustomAttributesList&&(e.__webglCustomAttributesList=[]),a.attributes){var f=a.attributes[d],p={};for(var m in f)p[m]=f[m];if(!p.__webglInitialized||p.createUniqueBuffers){p.__webglInitialized=!0;var g=1;"v2"===p.type?g=2:"v3"===p.type?g=3:"v4"===p.type?g=4:"c"===p.type&&(g=3),p.size=g,p.array=new Float32Array(r*g),p.buffer=D.createBuffer(),p.buffer.belongsToAttribute=d,f.needsUpdate=!0,p.__original=f}e.__webglCustomAttributesList.push(p)}e.__inittedArrays=!0}function Ze(e,t){return e.material instanceof l.MeshFaceMaterial?e.material.materials[t.materialIndex]:e.material}function $e(e){return!(e instanceof l.MeshBasicMaterial&&!e.envMap||e instanceof l.MeshDepthMaterial)&&(function(e){return e&&(void 0!==e.shading&&e.shading===l.SmoothShading||void 0!==e.flatShading&&!1===e.flatShading)}(e)?l.SmoothShading:l.FlatShading)}function Je(e){return!!e.vertexColors&&e.vertexColors}function et(e){return!!(e.map||e.lightMap||e.bumpMap||e.normalMap||e.specularMap||e.alphaMap||e instanceof l.ShaderMaterial)}function tt(e){return!0===e.needsUpdate}function it(e){e.needsUpdate=!1}function nt(e,t,i,n,r){if(e.__inittedArrays){var o,s,a,c,h,u,d,f,p,m,g,v,y,b,x,_,E,S,A,w,T,M,C,P,L,I,R=$e(r),O=Je(r),N=et(r),F=R===l.SmoothShading,U=0,B=0,k=0,V=0,G=0,z=0,H=0,W=0,j=0,q=0,X=e.__vertexArray,Y=e.__uvArray,K=e.__uv2Array,Q=e.__normalArray,Z=e.__tangentArray,$=e.__colorArray,J=e.__webglCustomAttributesList,ee=e.__faceArray,te=e.__lineArray,ie=t.geometry,ne=ie.verticesNeedUpdate,re=ie.elementsNeedUpdate,oe=ie.uvsNeedUpdate,se=ie.normalsNeedUpdate,ae=ie.tangentsNeedUpdate,le=ie.colorsNeedUpdate,ce=ie.vertices,he=e.faces3,ue=ie.faces,de=ie.faceVertexUvs[0],fe=ie.faceVertexUvs[1];if(ne){for(o=0,s=he.length;o0&&(D.bindBuffer(D.ARRAY_BUFFER,e.__webglColorBuffer),D.bufferData(D.ARRAY_BUFFER,$,i))}if(ae&&ie.hasTangents){for(o=0,s=he.length;o0&&(D.bindBuffer(D.ARRAY_BUFFER,e.__webglUVBuffer),D.bufferData(D.ARRAY_BUFFER,Y,i))}if(oe&&fe&&N){for(o=0,s=he.length;o0&&(D.bindBuffer(D.ARRAY_BUFFER,e.__webglUV2Buffer),D.bufferData(D.ARRAY_BUFFER,K,i))}if(re){for(o=0,s=he.length;o=0){var b=i.attributes[v];if("uv"===v&&n&&(b=i.attributes["uv"+(n+1)]),!b){D.bindVertexArray(null);for(var x=0;x=0){var x=i.attributes[y];"uv"===y&&o&&(x=i.attributes["uv"+(o+1)]);var _=n;if(x){var E=D.FLOAT,S=x.bytesPerItem||4;1===S?E=D.UNSIGNED_BYTE:2===S&&(E=D.UNSIGNED_SHORT);var A,w,T=void 0!==x.itemOffset;T&&(S=4),T?(A=i.vbstride,w=x.itemOffset,u!==a&&(i.streamingDraw?u=ot("interleavedVB",i.vb):(u=i.vbbuffer.getGlBuffer?i.vbbuffer.getGlBuffer():i.vbbuffer,D.bindBuffer(D.ARRAY_BUFFER,u)),a=u)):(A=x.itemSize,w=0,i.streamingDraw?u=ot(y,x.array):x.buffer.getGlBuffer?(u=x.buffer.getGlBuffer(),D.bindBuffer(D.ARRAY_BUFFER,u),_+=x.buffer.offset/(A*S)):(u=x.buffer,D.bindBuffer(D.ARRAY_BUFFER,u))),ce.enableAttribute(b),T&&i.vbbuffer&&i.vbbuffer.getGlBuffer&&i.vbbuffer.getGlBuffer()===u&&(_+=i.vbbuffer.offset/(A*S)),x.divisor&&(_+=s),D.vertexAttribPointer(b,x.itemSize,E,x.normalized,A*S,(w+_*A)*S),D.vertexAttribDivisor(b,i.numInstances&&x.divisor||0)}else if(e.defaultAttributeValues){var M=e.defaultAttributeValues[y];M&&2===M.length?D.vertexAttrib2fv(b,e.defaultAttributeValues[y]):M&&3===M.length?D.vertexAttrib3fv(b,e.defaultAttributeValues[y]):M&&4===M.length&&D.vertexAttrib4fv(b,e.defaultAttributeValues[y])}}}ce.disableUnusedAttributes()}function at(e,t){return e.object.renderOrder!==t.object.renderOrder?e.object.renderOrder-t.object.renderOrder:e.z!==t.z?e.z-t.z:e.id-t.id}function lt(e,t){return e.object.renderOrder!==t.object.renderOrder?e.object.renderOrder-t.object.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?t.z-e.z:e.id-t.id}function ct(e){ut(e,!0)}function ht(e){ut(e,!1)}function ut(e,t,i){var n,r;if(i||!1!==e.visible){if(e instanceof l.Scene||e instanceof l.Group);else if(e instanceof s.RenderBatch)e.forEach(t?ct:ht);else if(function(e){O.lostContextRecovery&&O.lostContextRecovery.refreshIfNeeded(e),void 0===e.__webglInit&&(e.__webglInit=!0,e.addEventListener("removed",Ne));var t=e.geometry;void 0===t||void 0===t.__webglInit&&(t.__webglInit=!0,t.addEventListener("dispose",Fe),t instanceof l.BufferGeometry||(e instanceof l.Mesh?_t(e,t):e instanceof l.Line?void 0===t.__webglVertexBuffer&&(!function(e){e.__webglVertexBuffer=D.createBuffer(),e.__webglColorBuffer=D.createBuffer(),e.__webglLineDistanceBuffer=D.createBuffer(),O.info.memory.geometries++}(t),function(e,t){var i=e.vertices.length;e.__vertexArray=new Float32Array(3*i),e.__colorArray=new Float32Array(3*i),e.__lineDistanceArray=new Float32Array(1*i),e.__webglLineCount=i,Ke(e,t)}(t,e),t.verticesNeedUpdate=!0,t.colorsNeedUpdate=!0,t.lineDistancesNeedUpdate=!0):e instanceof l.PointCloud&&void 0===t.__webglVertexBuffer&&(!function(e){e.__webglVertexBuffer=D.createBuffer(),e.__webglColorBuffer=D.createBuffer(),O.info.memory.geometries++}(t),function(e,t){var i=e.vertices.length;e.__vertexArray=new Float32Array(3*i),e.__colorArray=new Float32Array(3*i),e.__webglPointCount=i,Ke(e,t)}(t,e),t.verticesNeedUpdate=!0,t.colorsNeedUpdate=!0)));if(void 0===e.__webglActive)if(e.__webglActive=!0,e instanceof l.Mesh){if(t instanceof l.BufferGeometry)Et(w,t,e);else if(t instanceof l.Geometry)for(var i=bt[t.id],n=0,r=i.length;n=0||e.instanceStart>=0}));g?u=!0:(p=rt(n,h,r,s||0),u=u&&!p),u&&ce.initAttributes();var v,y=r.index;if(y){var b,x=r.ibByteSize,_=y.array?y.array:r.ib;let e=r.ibLength;_&&(y.bytesPerItem=_.BYTES_PER_ELEMENT),n.isEdgeMaterial&&(y=r.attributes.indexlines,_=r.iblines,e=r.iblinesLength,x=r.iblinesByteSize),y.bytesPerItem?x=y.bytesPerItem:_&&(x=_ instanceof Uint32Array?4:_ instanceof Uint16Array?2:1),4===x?b=D.UNSIGNED_INT:2===x?b=D.UNSIGNED_SHORT:1===x&&(b=D.UNSIGNED_BYTE);var E=r.groups;m&&n.isEdgeMaterial&&!Object.prototype.hasOwnProperty.call(E[0],"edgeStart")&&(E=null);var S=0;do{var A,w,T,M,C;if(m){var P,L=E[S];A=L.index,w=n.isEdgeMaterial?L.edgeStart||0:L.start,T=n.isEdgeMaterial?L.edgeCount||(null===(P=_)||void 0===P?void 0:P.length)||e:L.count,M=L.instanceStart||0,C=L.numInstances||r.numInstances;var I=n.program.uniforms;if(I.themingColor&&"themingColor"in L){var N=L.themingColor;N instanceof l.Vector4?D.uniform4f(I.themingColor,N.x,N.y,N.z,N.w):D.uniform4f(I.themingColor,0,0,0,0)}}else{var F;A=0,w=0,T=(null===(F=_)||void 0===F?void 0:F.length)||e,M=0,C=r.numInstances}c.USE_BUFFER_MANAGER&&(n.isEdgeMaterial?w+=r.iblinesbuffer&&!r.streamingDraw?r.iblinesbuffer.offset/x:0:r.index.buffer?w+=r.streamingDraw?0:r.index.buffer.offset/x:w+=r.ibbuffer&&!r.streamingDraw?r.ibbuffer.offset/x:0),u&&(st(n,h,r,A,y,s,M),g||(u=!1)),v=D.TRIANGLES,r.isPoints||o instanceof l.PointCloud?v=D.POINTS:(r.isLines||n.isEdgeMaterial||o instanceof l.Line)&&(v=D.LINES),C?D.drawElementsInstanced(v,T,b,w*x,C):D.drawElements(v,T,b,w*x),++this.info.render.calls}while(E&&++S1&&console.error("Geometry with draw calls and no index buffer"),u&&st(n,h,r,0,void 0,s,0);var B=r.attributes.position;v=D.TRIANGLES,r.isPoints||o instanceof l.PointCloud?v=D.POINTS:(r.isLines||n.isEdgeMaterial||o instanceof l.Line)&&(v=D.LINES),r.numInstances?D.drawArraysInstanced(v,0,B.array.length/3,r.numInstances):D.drawArrays(v,0,B.array.length/B.itemSize),++this.info.render.calls}p&&D.bindVertexArray(null)}},this.renderBuffer=function(e,t,i,n,r,o){if(!1!==n.visible&&!n.isEdgeMaterial){!function(e){var t,i,n=e.geometry;if(n instanceof l.BufferGeometry)R(n);else if(e instanceof l.Mesh){!0===n.groupsNeedUpdate&&_t(e,n);for(var r=bt[n.id],o=0,s=r.length;o=0&&c&&(D.bindBuffer(D.ARRAY_BUFFER,r.__webglVertexBuffer),ce.enableAttribute(a.position),v(a.position,3,D.FLOAT,!1,0,0)),c){if(r.__webglCustomAttributesList)for(var d=0,f=r.__webglCustomAttributesList.length;d=0&&(D.bindBuffer(D.ARRAY_BUFFER,p.buffer),ce.enableAttribute(a[p.buffer.belongsToAttribute]),v(a[p.buffer.belongsToAttribute],p.size,D.FLOAT,!1,0,0))}a.color>=0&&(o.geometry.colors.length>0||o.geometry.faces.length>0?(D.bindBuffer(D.ARRAY_BUFFER,r.__webglColorBuffer),ce.enableAttribute(a.color),v(a.color,3,D.FLOAT,!1,0,0)):n.defaultAttributeValues&&D.vertexAttrib3fv(a.color,n.defaultAttributeValues.color)),a.normal>=0&&(D.bindBuffer(D.ARRAY_BUFFER,r.__webglNormalBuffer),ce.enableAttribute(a.normal),v(a.normal,3,D.FLOAT,!1,0,0)),a.tangent>=0&&(D.bindBuffer(D.ARRAY_BUFFER,r.__webglTangentBuffer),ce.enableAttribute(a.tangent),v(a.tangent,4,D.FLOAT,!1,0,0)),a.uv>=0&&(o.geometry.faceVertexUvs[0]?(D.bindBuffer(D.ARRAY_BUFFER,r.__webglUVBuffer),ce.enableAttribute(a.uv),v(a.uv,2,D.FLOAT,!1,0,0)):n.defaultAttributeValues&&D.vertexAttrib2fv(a.uv,n.defaultAttributeValues.uv)),a.uv2>=0&&(o.geometry.faceVertexUvs[1]?(D.bindBuffer(D.ARRAY_BUFFER,r.__webglUV2Buffer),ce.enableAttribute(a.uv2),v(a.uv2,2,D.FLOAT,!1,0,0)):n.defaultAttributeValues&&D.vertexAttrib2fv(a.uv2,n.defaultAttributeValues.uv2)),a.lineDistance>=0&&(D.bindBuffer(D.ARRAY_BUFFER,r.__webglLineDistanceBuffer),ce.enableAttribute(a.lineDistance),v(a.lineDistance,1,D.FLOAT,!1,0,0))}if(ce.disableUnusedAttributes(),o instanceof l.Mesh){var m=r.__typeArray===Uint32Array?D.UNSIGNED_INT:D.UNSIGNED_SHORT;n.wireframe?(le.setLineWidth(n.wireframeLinewidth*this.getPixelRatio()),c&&D.bindBuffer(D.ELEMENT_ARRAY_BUFFER,r.__webglLineBuffer),D.drawElements(D.LINES,r.__webglLineCount,m,0)):(c&&D.bindBuffer(D.ELEMENT_ARRAY_BUFFER,r.__webglFaceBuffer),D.drawElements(D.TRIANGLES,r.__webglFaceCount,m,0)),++this.info.render.calls}else if(o instanceof l.Line){var g=o.mode===l.LineStrip?D.LINE_STRIP:D.LINES;le.setLineWidth(n.linewidth*this.getPixelRatio()),D.drawArrays(g,0,r.__webglLineCount),++this.info.render.calls}else o instanceof l.PointCloud&&(D.drawArrays(D.POINTS,0,r.__webglPointCount),++this.info.render.calls)}function v(e,t,i,n,r,o){D.vertexAttribPointer(e,t,i,n,r,o),D.vertexAttribDivisor(e,0)}},this.render=function(e,t,i,n){var r,o,a;let c,h=i,u=n;if(arguments.length>2&&(i instanceof l.WebGLRenderTarget||Array.isArray(i))&&(console.warn("THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead."),c=i,h=n,u=arguments[4]),t instanceof l.Camera!=!1){if(!D.isContextLost()){z="",V=-1,G=null,q.clear(),void 0!==u&&(A.length=0,re=!0);var d=e.fog;!0===e.autoUpdate&&e.updateMatrixWorld(),void 0===t.parent&&t.updateMatrixWorld(),t.worldUpTransform?te.multiplyMatrices(t.worldUpTransform,t.matrixWorld):te.copy(t.matrixWorld),ee.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),J.setFromProjectionMatrix(ee);var f=e instanceof s.RenderBatch&&e.renderImmediate;if(f||(C.length=0,P.length=0,ut(e,!0===O.sortObjects,!0===e.forceVisible),!0===O.sortObjects&&(C.sort(lt),P.sort(at))),re&&(u&&u.length&&(A=u.slice()),Nt(A)),void 0!==c&&this.setRenderTarget(c),this.resetGLState(),(this.autoClear||h)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil),e.overrideMaterial){let i=e.overrideMaterial;Mt(i),f?vt(e,"",t,A,d,i):(ft(C,t,A,d,i),ft(P,t,A,d,i))}else f?vt(e,"",t,A,d,null):(le.setBlending(l.NoBlending),ft(C,t,A,d,null),ft(P,t,A,d,null));if(e.edgeMaterial){D.depthFunc(D.LESS);let i=e.edgeMaterial;Mt(i),f?vt(e,"",t,A,d,i):(ft(C,t,A,d,i),ft(P,t,A,d,i)),D.depthFunc(D.LEQUAL)}!k&&null!==(r=B)&&void 0!==r&&null!==(r=r.texture)&&void 0!==r&&r.generateMipmaps&&(null===(o=B)||void 0===o?void 0:o.texture.minFilter)!==l.NearestFilter&&(null===(a=B)||void 0===a?void 0:a.texture.minFilter)!==l.LinearFilter&&function(e){D.bindTexture(D.TEXTURE_2D,e.__webglTexture),D.generateMipmap(D.TEXTURE_2D),D.bindTexture(D.TEXTURE_2D,null)}(B),this.resetGLState(),le.setDepthTest(!0),le.setDepthWrite(!0)}}else console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")},this.setProgramPrefix=function(e,t,i){H=e,W=t,j=i},this.getProgramPrefix=function(){return{programPrefix:H,vertexPrefix:W,fragmentPrefix:j}};var bt={},xt=0;function _t(e,t){var i=e.material,n=!1;void 0!==bt[t.id]&&!0!==t.groupsNeedUpdate||(delete w[e.id],bt[t.id]=function(e,t){for(var i,n,r={},o=e.morphTargets?e.morphTargets.length:0,s=e.morphNormals?e.morphNormals.length:0,a={},l=[],c=0,h=e.faces.length;c4294967296&&(r[d].counter+=1,(i=r[d].hash+"_"+r[d].counter)in a||(n={id:xt++,faces3:[],materialIndex:d,vertices:0,numMorphTargets:o,numMorphNormals:s},a[i]=n,l.push(n))),a[i].faces3.push(c),a[i].vertices+=3}return l}(t,i instanceof l.MeshFaceMaterial),t.groupsNeedUpdate=!1);for(var r=bt[t.id],o=0,s=r.length;o0&&(m=Math.min((O.highResTimeStamp-s.geometry.creationTime)/O.loadingAnimationDuration,1)),D.uniform1f(f.meshAnimTime,m)}if((a||e!==G)&&(D.uniformMatrix4fv(f.projectionMatrix,!1,e.projectionMatrix.elements),_&&(D.uniform1f(f.logDepthBufFC,2/(Math.log(e.far+1)/Math.LN2)),o.polygonOffset&&D.uniform2f(f.polygonOffset,o.polygonOffsetFactor,o.polygonOffsetUnits)),e!==G&&(G=e),(o instanceof l.ShaderMaterial||o instanceof l.MeshPhongMaterial||o.envMap)&&null!==f.cameraPosition&&(ie.setFromMatrixPosition(e.matrixWorld),D.uniform3f(f.cameraPosition,ie.x,ie.y,ie.z)),(o instanceof l.MeshPhongMaterial||o instanceof l.MeshLambertMaterial||o instanceof l.ShaderMaterial||o.skinning)&&(null!==f.viewMatrix&&D.uniformMatrix4fv(f.viewMatrix,!1,e.matrixWorldInverse.elements),null!==f.viewMatrixInverse&&D.uniformMatrix4fv(f.viewMatrixInverse,!1,te.elements),f.mvpMatrix&&D.uniformMatrix4fv(f.mvpMatrix,!1,ee.elements),h?(Dt(p,o),Lt(p,!0)):Lt(p,!1))),f.unpackXform){var g=s.geometry,v=g.unpackXform;if(v?D.uniform4f(f.unpackXform,v.x,v.y,v.z,v.w):D.uniform4f(f.unpackXform,1,1,0,0),f.tIdColor){D.uniform2f(f.vIdColorTexSize,g.vIdColorTexSize.x,g.vIdColorTexSize.y);var y=Rt();D.uniform1i(f.tIdColor,y),O.setTexture(g.tIdColor,y)}}if(c){if((o instanceof l.MeshPhongMaterial||o instanceof l.MeshLambertMaterial||o.lights)&&(re&&(h=!0,Nt(i),re=!1),h?(!function(e,t){e.ambientLightColor.value=t.ambient,e.directionalLightColor.value=t.directional.colors,e.directionalLightDirection.value=t.directional.positions,e.pointLightColor.value=t.point.colors,e.pointLightPosition.value=t.point.positions,e.pointLightDistance.value=t.point.distances,e.spotLightColor.value=t.spot.colors,e.spotLightPosition.value=t.spot.positions,e.spotLightDistance.value=t.spot.distances,e.spotLightDirection.value=t.spot.directions,e.spotLightAngleCos.value=t.spot.anglesCos,e.spotLightExponent.value=t.spot.exponents,e.hemisphereLightSkyColor.value=t.hemi.skyColors,e.hemisphereLightGroundColor.value=t.hemi.groundColors,e.hemisphereLightDirection.value=t.hemi.positions}(p,oe),It(p,!0)):It(p,!1)),(o instanceof l.MeshBasicMaterial||o instanceof l.MeshLambertMaterial||o instanceof l.MeshPhongMaterial)&&(!function(e,t){e.opacity.value=t.opacity,e.diffuse.value.copy(t.color),e.map.value=t.map,e.lightMap.value=t.lightMap,e.specularMap.value=t.specularMap,e.alphaMap.value=t.alphaMap,t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale);t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale));function i(e,t,i,n){const{x:r,y:o}=i,{x:s,y:a}=t,l=r*Math.cos(n),c=r*Math.sin(n),h=o*Math.cos(n),u=o*Math.sin(n),d=e.elements,f=d[0],p=d[3],m=d[6],g=d[1],v=d[4],y=d[7],b=d[2],x=d[5],_=d[8];d[0]=f*l+g*c+b*s,d[3]=p*l+v*c+x*s,d[6]=m*l+y*c+_*s,d[1]=f*-u+g*h+b*a,d[4]=p*-u+v*h+x*a,d[7]=m*-u+y*h+_*a}function n(e,t,n){const{offset:r,repeat:o,rotation:s}=n;if(t){var a=t.value;n.matrix?a.copy(n.matrix):a.identity(),i(a,r,o,s??0)}else e.offsetRepeat.value.set(r.x,r.y,o.x,o.y)}t.alphaMap&&n(e,e.texMatrixAlpha,t.alphaMap);var r,o;t.normalMap?r=t.normalMap:t.bumpMap&&(r=t.bumpMap);void 0!==r&&n(e,e.texMatrixBump,r);t.map?o=t.map:t.specularMap&&(o=t.specularMap);void 0!==o&&n(e,e.texMatrix,o);e.envMap.value=t.envMap,e.irradianceMap&&(e.irradianceMap.value=t.irradianceMap);e.reflectivity.value=t.reflectivity,e.refractionRatio.value=t.refractionRatio}(p,o),Dt(p,o)),o instanceof l.PointCloudMaterial||o instanceof l.PointsMaterial?function(e,t){Pt(e,t),e.point_size.value=t.size,e.map.value=t.map}(p,o):o instanceof l.LineBasicMaterial?Pt(p,o):o instanceof l.LineDashedMaterial?(Pt(p,o),function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(p,o)):o instanceof l.MeshPhongMaterial?function(e,t){if(e.shininess.value=t.shininess,e.reflMipIndex){var i=Math.log(Math.max(1+1e-10,t.shininess));e.reflMipIndex.value=Math.max(0,-.72134752*i+5.5)}e.emissive&&e.emissive.value.copy(t.emissive);e.specular.value.copy(t.specular),e.exposureBias&&(e.exposureBias.value=t.exposureBias)}(p,o):o instanceof l.MeshLambertMaterial?function(e,t){e.emissive.value.copy(t.emissive),t.wrapAround&&e.wrapRGB.value.copy(t.wrapRGB)}(p,o):o instanceof l.MeshDepthMaterial?(p.mNear.value=e.near,p.mFar.value=e.far,p.opacity.value=o.opacity):o instanceof l.MeshNormalMaterial?p.opacity.value=o.opacity:"function"==typeof o.refreshUniforms&&o.refreshUniforms(p),o.wideLines){var b=s.geometry.lineWidth;void 0!==o.linewidth&&(b=o.linewidth);const e=1/Math.max(Number.EPSILON,b);p.view_size.value=new l.Vector2(t.width*e,t.height*e)}r.ShadowRender&&o.shadowMap&&r.ShadowRender.RefreshUniformsShadow(p,o);var x=p.cutplanes;o.cutplanes&&o.cutplanes.length>0&&x&&(x.value=o.cutplanes,null!=p&&p.cutplanesHideInterior&&(p.cutplanesHideInterior.value=o.cutplanesHideInterior),x._array&&x._array.length!=4*o.cutplanes&&(x._array=void 0)),o.hatchParams&&p.hatchParams&&(p.hatchParams.value.copy(o.hatchParams),p.hatchTintColor.value.copy(o.hatchTintColor),p.hatchTintIntensity.value=o.hatchTintIntensity),function(e){for(var t,i,n,r=0,o=e.length;r>8&255)/255,(u>>16&255)/255));var E=s.modelId;D.uniform3f(f.modelId,(255&E)/255,(E>>8&255)/255,(u>>24&255)/255)}else null!==f.dbId&&(u=s.dbId||s.fragId||0,D.uniform3f(f.dbId,(255&u)/255,(u>>8&255)/255,(u>>16&255)/255));if(f.themingColor){var S=s.themingColor;S instanceof l.Vector4?D.uniform4f(f.themingColor,S.x,S.y,S.z,S.w):D.uniform4f(f.themingColor,0,0,0,0)}return d}function Pt(e,t){e.diffuse.value=t.color,e.opacity.value=t.opacity}function Dt(e,t){e.envMap&&(e.envMap.value=t.envMap),e.irradianceMap&&(e.irradianceMap.value=t.irradianceMap),e.envMapExposure&&(e.envMapExposure.value=t.envMapExposure),e.envRotationSin&&e.envRotationCos&&(e.envRotationSin.value=t.envRotationSin,e.envRotationCos.value=t.envRotationCos)}function Lt(e,t){e.envMap&&(e.envMap.needsUpdate=t),e.irradianceMap&&(e.irradianceMap.needsUpdate=t),e.envMapExposure&&(e.envMapExposure.needsUpdate=t)}function It(e,t){e.ambientLightColor.needsUpdate=t,e.directionalLightColor.needsUpdate=t,e.directionalLightDirection.needsUpdate=t,e.pointLightColor.needsUpdate=t,e.pointLightPosition.needsUpdate=t,e.pointLightDistance.needsUpdate=t,e.spotLightColor.needsUpdate=t,e.spotLightPosition.needsUpdate=t,e.spotLightDistance.needsUpdate=t,e.spotLightDirection.needsUpdate=t,e.spotLightAngleCos.needsUpdate=t,e.spotLightExponent.needsUpdate=t,e.hemisphereLightSkyColor.needsUpdate=t,e.hemisphereLightGroundColor.needsUpdate=t,e.hemisphereLightDirection.needsUpdate=t}function Rt(){var e=X;return e>=me&&console.warn("WebGLRenderer: trying to use "+e+" texture units while this GPU supports only "+me),X+=1,e}function Ot(e,t,i,n){e[t]=i.r*n,e[t+1]=i.g*n,e[t+2]=i.b*n}function Nt(e){var t,i,n,r,o,s,a,c,h=0,u=0,d=0,f=oe,p=f.directional.colors,m=f.directional.positions,g=f.point.colors,v=f.point.positions,y=f.point.distances,b=f.spot.colors,x=f.spot.positions,_=f.spot.distances,E=f.spot.directions,S=f.spot.anglesCos,A=f.spot.exponents,w=f.hemi.skyColors,T=f.hemi.groundColors,M=f.hemi.positions,C=0,P=0,D=0,L=0,I=0,R=0,O=0,N=0,F=0,U=0,B=0,k=0;for(t=0,i=e.length;t1||t.__oldAnisotropy)&&(D.texParameterf(e,n.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(t.anisotropy,O.getMaxAnisotropy())),t.__oldAnisotropy=t.anisotropy)}function Ut(e,t){if(e.width<=t&&e.height<=t)return e;if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){var i=t/Math.max(e.width,e.height),n=Math.max(Math.floor(e.width*i),1),r=Math.max(Math.floor(e.height*i),1),o=g.createElement("canvas");return o.width=n,o.height=r,o.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,n,r),o}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}function Bt(e,t){if(6===e.image.length)if(tt(e)){e.__webglTextureCube||(e.addEventListener("dispose",Ue),e.__webglTextureCube=D.createTexture(),O.info.memory.textures++),D.activeTexture(D.TEXTURE0+t),D.bindTexture(D.TEXTURE_CUBE_MAP,e.__webglTextureCube),D.pixelStorei(D.UNPACK_FLIP_Y_WEBGL,e.flipY);var i,n=e instanceof l.CompressedTexture,r=e.image[0]instanceof l.DataTexture,o=[];for(i=0;i<6;i++)!O.autoScaleCubemaps||n||r?o[i]=r?e.image[i].image:e.image[i]:o[i]=Ut(e.image[i],ye);var s=o[0],a=l.Math.isPowerOfTwo(s.width)&&l.Math.isPowerOfTwo(s.height),c=Wt(e.format),h=Wt(e.type);for(Ft(D.TEXTURE_CUBE_MAP,e,a),i=0;i<6;i++)if(n)for(var u,d=o[i].mipmaps,f=0,p=d.length;f-1?D.compressedTexImage2D(D.TEXTURE_CUBE_MAP_POSITIVE_X+i,f,c,u.width,u.height,0,u.data):console.warn("Attempt to load unsupported compressed texture format"):D.texImage2D(D.TEXTURE_CUBE_MAP_POSITIVE_X+i,f,c,u.width,u.height,0,c,h,u.data);else r?D.texImage2D(D.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,c,o[i].width,o[i].height,0,c,h,o[i].data):D.texImage2D(D.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,c,c,h,o[i]);e.generateMipmaps&&a&&D.generateMipmap(D.TEXTURE_CUBE_MAP),it(e),e.onUpdate&&e.onUpdate()}else D.activeTexture(D.TEXTURE0+t),D.bindTexture(D.TEXTURE_CUBE_MAP,e.__webglTextureCube)}function kt(e,t){D.activeTexture(D.TEXTURE0+t),D.bindTexture(D.TEXTURE_CUBE_MAP,e.__webglTexture)}function Vt(e){var t=D.COLOR_ATTACHMENT0,i=[t];for(we=1;we0&&i){for(a=0,c=h.length;a-1?D.compressedTexImage2D(D.TEXTURE_2D,a,o,s.width,s.height,0,s.data):console.warn("Attempt to load unsupported compressed texture format"):D.texImage2D(D.TEXTURE_2D,a,o,s.width,s.height,0,n,r,s.data);if(h.length>1&&Pe().indexOf(n)>-1)for(var u,d=s.width>>1,f=s.height>>1,p=h.length;d>=1||f>=1;)u=4==s.width&&4==s.height?s.data:new DataView(s.data.buffer,s.data.byteOffset,s.data.byteLength*(Math.max(d,4)*Math.max(f,4))/(s.width*s.height)),D.compressedTexImage2D(D.TEXTURE_2D,p,o,Math.max(d,1),Math.max(f,1),0,u),d>>=1,f>>=1,++p}else if(h.length>0&&i){for(a=0,c=h.length;a0?(B=e[0],k=!0):(B=e,k=!1),O.lostContextRecovery&&O.lostContextRecovery.refreshTargetsIfNeeded(e),Array.isArray(e))this.initFrameBufferMRT(e),(t=e[0]).initForMRT=!0;else if(e){var a=e.__webglFramebuffer;a&&U===a&&!e.initForMRT&&null!=e.shareDepthFrom==!!e.__isUsingShared||this.initFrameBufferMRT([e]),(t=e).initForMRT=!1}!t||Ie?(n=Q,r=Z,o=Y,s=K):(n=t.width,r=t.height,o=0,s=0),(i=t?t.__webglFramebuffer:null)!==U&&(D.bindFramebuffer(D.FRAMEBUFFER,i),U=i),D.viewport(o,s,n,r)},this.readRenderTargetPixels=function(e,t,i,n,r,o){if(e instanceof l.WebGLRenderTarget){if(O.lostContextRecovery&&O.lostContextRecovery.refreshTargetsIfNeeded(e),e.__webglFramebuffer){if(e.texture.format!==l.RGBAFormat&&e.texture.format!==l.RGBFormat||e.texture.type!==l.UnsignedByteType)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not a readable format.");var s=!1;e.__webglFramebuffer!==U&&(D.bindFramebuffer(D.FRAMEBUFFER,e.__webglFramebuffer),s=!0),e.canReadPixels||D.checkFramebufferStatus(D.FRAMEBUFFER)===D.FRAMEBUFFER_COMPLETE?D.readPixels(t,i,n,r,D.RGBA,D.UNSIGNED_BYTE,o):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."),s&&D.bindFramebuffer(D.FRAMEBUFFER,U)}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")}}},61453:(e,t,i)=>{"use strict";i.r(t),i.d(t,{WebGLShader:()=>r});var n=function(e){for(var t=e.split("\n"),i=0;i{"use strict";i.d(t,{O:()=>n});const n={}},75468:(e,t,i)=>{"use strict";function n(e,t){var i,n;this.bytes_per_node=t?32:36,e instanceof ArrayBuffer?(i=e.byteLength/this.bytes_per_node,n=e,this.nodeCount=i):(i=0|e,n=new ArrayBuffer(this.bytes_per_node*i),this.nodeCount=0),this.nodeCapacity=i,this.nodesRaw=n,this.is_lean_node=t,this.node_stride=this.bytes_per_node/4,this.node_stride_short=this.bytes_per_node/2,this.nodesF=new Float32Array(this.nodesRaw),this.nodesI=new Int32Array(this.nodesRaw),this.nodesS=new Uint16Array(this.nodesRaw)}i.r(t),i.d(t,{BVHBuilder:()=>h,BVHModule:()=>s,BVHSortFuncType:()=>c,FragInfoFlags:()=>l,NodeArray:()=>n}),n.prototype.setLeftChild=function(e,t){this.nodesI[e*this.node_stride+6]=t},n.prototype.getLeftChild=function(e){return this.nodesI[e*this.node_stride+6]},n.prototype.setPrimStart=function(e,t){this.is_lean_node?this.nodesI[e*this.node_stride+6]=t:this.nodesI[e*this.node_stride+8]=t},n.prototype.getPrimStart=function(e){return this.is_lean_node?this.nodesI[e*this.node_stride+6]:this.nodesI[e*this.node_stride+8]},n.prototype.setPrimCount=function(e,t){this.nodesS[e*this.node_stride_short+14]=t},n.prototype.getPrimCount=function(e){return this.nodesS[e*this.node_stride_short+14]},n.prototype.setFlags=function(e,t,i,n){this.nodesS[e*this.node_stride_short+15]=n<<3|i<<2|3&t},n.prototype.getFlags=function(e){return this.nodesS[e*this.node_stride_short+15]},n.prototype.setBox0=function(e,t){var i=e*this.node_stride,n=this.nodesF;n[i]=t[0],n[i+1]=t[1],n[i+2]=t[2],n[i+3]=t[3],n[i+4]=t[4],n[i+5]=t[5]},n.prototype.getBoxThree=function(e,t){var i=e*this.node_stride,n=this.nodesF;t.min.x=n[i],t.min.y=n[i+1],t.min.z=n[i+2],t.max.x=n[i+3],t.max.y=n[i+4],t.max.z=n[i+5]},n.prototype.getBoxArray=function(e,t,i){var n=e*this.node_stride,r=this.nodesF;t[0+(i=i||0)]=r[n],t[1+i]=r[n+1],t[2+i]=r[n+2],t[3+i]=r[n+3],t[4+i]=r[n+4],t[5+i]=r[n+5]},n.prototype.setBoxThree=function(e,t){var i=e*this.node_stride,n=this.nodesF;n[i]=t.min.x,n[i+1]=t.min.y,n[i+2]=t.min.z,n[i+3]=t.max.x,n[i+4]=t.max.y,n[i+5]=t.max.z},n.prototype.makeEmpty=function(e){var t=e*this.node_stride,i=this.nodesI;i[t+6]=-1,i[t+7]=0,this.is_lean_node||(i[t+8]=-1)},n.prototype.realloc=function(e){if(this.nodeCount+e>this.nodeCapacity){var t=0|3*this.nodeCapacity/2;tt[i]&&(e[0]=t[i]),e[3]t[i+1]&&(e[1]=t[i+1]),e[4]t[i+2]&&(e[2]=t[i+2]),e[5]t[i]&&(e[0]=t[i]),e[1]>t[i+1]&&(e[1]=t[i+1]),e[2]>t[i+2]&&(e[2]=t[i+2]),e[3]t[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]>t[2]&&(e[2]=t[2]),e[3]s-o+1&&(y=s-o+1),d=0;d=l&&(b=l-1),g[v]=b,p[b].num_prims++,t(p[b].box_bbox,u,y*d),e(p[b].box_centroid,c,3*y)}}(n,o,s,a,l,h,y),r(m[0].BL,p[0].box_bbox),r(m[0].CL,p[0].box_centroid),m[0].AL=c(m[0].BL),m[0].NL=p[0].num_prims,d=1;d=1;d--){f=p[d],i(g,f.box_bbox),i(v,f.box_centroid);var A=(x=c(g))*(_+=f.num_prims)+m[d-1].AL*m[d-1].NL;A<=S&&(S=A,E=d,r(u.vb_right,g),r(u.cb_right,v),r(u.vb_left,m[d-1].BL),r(u.cb_left,m[d-1].CL),u.num_left=m[d-1].NL)}u.best_split=E,u.best_cost=S}}var b=new Float32Array(3);return{bvh_subdivide:function(t,i,r,s,l,c,u,d){n(b,0,c,0);var f=t.nodes,p=u?t.frags_per_leaf_node_transparent:t.frags_per_leaf_node,m=u?t.frags_per_inner_node_transparent:t.frags_per_inner_node,g=t.max_polys_per_node,v=0;b[1]>b[0]&&(v=1),b[2]>b[v]&&(v=2),f.setBox0(i,l);var x=0,_=0,E=s-r+1;let S=!1;if(t.finfo.hasPolygonCounts&&t.frags_per_inner_node){let e=new Set;var A=E<=t.frags_per_inner_node?s:r+t.frags_per_inner_node-1;const i=t.prim_sizes[t.primitives[r]];let n,a=r;for(;a<=A;a++){const r=t.primitives[a];if(S=(x+=t.finfo.getPolygonCount(r))>g,n=i/t.prim_sizes[r],S||=i>o&&n>t.max_size_ratio,t.per_tile_consolidation&&(e.add(t.finfo.getDrawCallId(r)),S||=e.size>=t.max_drawcalls_per_node),_++,S){++a;break}}if(t.per_tile_consolidation&&e.size>=t.max_drawcalls_per_node){const r=a;let s=[],l=[],c=!1;for(;a<=A;a++){const r=t.primitives[a],h=t.finfo.getPolygonCount(r);if(e.has(t.finfo.getDrawCallId(r))){if(c||=x+h>g,n=i/t.prim_sizes[r],c||=i>o&&n>t.max_size_ratio,c)break;s.push(r),_++,x+=h}else l.push(r)}if(s.length>0){a=r;for(let e=0;e15||b[v]t.frags_per_inner_node&&(f=t.frags_per_inner_node),f>h&&(f=h),i.setPrimStart(r,o),i.setPrimCount(r,f),o+=f,a(l);for(var p=o;p<=s;p++)e(l,d,3*u[p]);n(c,0,l,0);var m=0;return c[1]>c[0]&&(m=1),c[2]>c[m]&&(m=2),m}(t,f,i,r,s,c,b,_),r+=f.getPrimCount(i));var w=new h;if(y(t,r,s,v,c,b,w),w.num_bins<0)f.setPrimCount(i,f.getPrimCount(i)+s-r+1);else{!function(e,t,i,n,r,o,s){var a,l,c=e.primitives,h=e.sort_prims,u=0,d=0|t,f=0|s.best_split;for(a=t;a<=i;a++){var p=0|c[a];h[a]=i.first_transparent?(e(c,p,3*x),t(l,m,g*x)):(e(s,p,3*x),t(r,m,g*x))}n(b,0,i.boxv_o,0);var _=Math.max(b[0],b[1],b[2]);i.scene_epsilon=o*_},box_area:function(e,t){return l(e[t+3]-e[t],e[t+4]-e[t+1],e[t+5]-e[t+2])},sqr_diag_len:function(e,t){var i=e[t+3]-e[t],n=e[t+4]-e[t+1],r=e[t+5]-e[t+2];return i*i+n*n+r*r},box_area_three:function(e){return l(e.max.x-e.min.x,e.max.y-e.min.y,e.max.z-e.min.z)}}}();function a(e,t){this.boxes=e.boxes,this.polygonCounts=e.polygonCounts,this.hasPolygonCounts=!!this.polygonCounts,this.geomIds=e.geomids,this.flags=e.flags,this.materials=e.materials,this.materialDefs=t,this.count=e.length,this.boxStride=6,this.wantSort=e.wantSort??!0}a.prototype.getCount=function(){return this.count},a.prototype.isTransparent=function(e){return this.flags?!!(this.flags[e]&l.IS_TRANSPARENT):!(!this.materialDefs||!this.materialDefs[this.materials[e]])&&this.materialDefs[this.materials[e]].transparent},a.prototype.getPolygonCount=function(e){return this.polygonCounts[e]},a.prototype.getGeometryId=function(e){return this.geomIds[e]},a.prototype.getCanBeConsolidated=function(e){return!!this.flags[e]&l.IS_CONSOLIDATED},a.prototype.getDrawCallId=function(e){return`${this.materials[e]}${this.getCanBeConsolidated(e)?"":"_"+this.getGeometryId(e)}`},a.prototype.supportsPerTileConsolidation=function(){return!!this.materials&&!!this.flags&&!!this.geomIds};const l=Object.freeze({IS_CONSOLIDATED:1,IS_TRANSPARENT:2}),c=Object.freeze({BOX_AREA:"box_area",DIAMETER:"sqr_diag_len"});function h(e,t,i){this.finfo=i||new a(e,t),this.prim_count=this.finfo.getCount(),this.frags_per_leaf_node=-1,this.frags_per_inner_node=-1,this.nodes=null,this.work_buf=new ArrayBuffer(4*this.prim_count),this.sort_prims=new Int32Array(this.work_buf),this.primitives=new Int32Array(this.prim_count),this.centroids=new Float32Array(r*this.prim_count),this.boxv_o=new Float32Array(6),this.boxc_o=new Float32Array(6),this.boxv_t=new Float32Array(6),this.boxc_t=new Float32Array(6),this.recursion_stack=[]}h.prototype.sortPrimitives=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.BOX_AREA;var i=new Float32Array(this.max_size_ratio===1/0?this.work_buf:this.prim_count),n=this.primitives,r=0,o=e;const a=s[t];var l,h;for(l=0,h=this.prim_count;l=0?n[f++]=n[l]:d[p++]=n[l];n.set(d,this.prim_count-r)}this.prim_sizes=i,this.first_transparent=this.prim_count-r},h.prototype.build=function(e){var t=e&&!!e.useSlimNodes,i=this;function r(t,n){Object.prototype.hasOwnProperty.call(e,t)?i[t]=e[t]:i[t]=n}if(r("max_size_ratio",1/0),r("per_tile_consolidation",!1),e.sortFuncType===c.DIAMETER&&(this.max_size_ratio*=this.max_size_ratio),t)r("frags_per_leaf_node",1),r("frags_per_inner_node",0),r("frags_per_leaf_node_transparent",1),r("frags_per_inner_node_transparent",0),r("max_polys_per_node",1/0);else{var o=e.isWeakDevice?.5:1;r("frags_per_leaf_node",0|256*o),r("frags_per_inner_node",0|this.frags_per_leaf_node),r("frags_per_leaf_node_transparent",this.frags_per_leaf_node),r("frags_per_inner_node_transparent",0),r("max_polys_per_node",0|2e4*o),r("max_drawcalls_per_node",1/0),r("want_sort",this.finfo.wantSort)}if(this.per_tile_consolidation=this.per_tile_consolidation&&this.finfo.supportsPerTileConsolidation()&&this.want_sort,this.nodes&&this.nodes.is_lean_node==t)this.nodes.nodeCount=0;else{for(var a=this.prim_count/this.frags_per_leaf_node,l=1;l{"use strict";i.r(t),i.d(t,{BoundsCallback:()=>r});var n=i(72091);function r(e){this.bounds=e,this.point=new n.Vector4,this.point.z=0,this.point.w=1}r.prototype.onVertex=function(e,t,i){this.point.x=e,this.point.y=t,this.bounds.expandByPoint(this.point)},r.prototype.onLineSegment=function(e,t,i,n,r){this.onVertex(e,t),this.onVertex(i,n)},r.prototype.onCircularArc=function(e,t,i,n,r,o){this.onEllipticalArc(e,t,i,n,r,r,0,o)},r.prototype.onEllipticalArc=function(e,t,i,n,r,o,s,a){0==s?i<=0&&n>=2*Math.PI-1e-5?this.onTexQuad(e,t,2*r,2*o,s,a):(this.point.x=e+Math.cos(i)*r,this.point.y=t+Math.sin(i)*o,this.bounds.expandByPoint(this.point),this.point.x=e+Math.cos(n)*r,this.point.y=t+Math.sin(n)*o,this.bounds.expandByPoint(this.point),i>n&&(this.point.x=e+r,this.point.y=t,this.bounds.expandByPoint(this.point),i-=2*Math.PI),i<.5*Math.PI&&n>.5*Math.PI&&(this.point.x=e,this.point.y=t+o,this.bounds.expandByPoint(this.point)),iMath.PI&&(this.point.x=e-r,this.point.y=t,this.bounds.expandByPoint(this.point)),i<1.5*Math.PI&&n>1.5*Math.PI&&(this.point.x=e,this.point.y=t-o,this.bounds.expandByPoint(this.point))):this.onTexQuad(e,t,2*r,2*o,s,a)},r.prototype.onTexQuad=function(e,t,i,r,o,s){var a=.5*i,l=.5*i;if(0==o)this.onVertex(e-a,t-l),this.onVertex(e+a,t+l);else{var c=new n.Matrix4,h=new n.Matrix4;c.makeRotationZ(o),h.makeTranslation(e,t,0),h.multiply(c);for(var u=0;u<4;u++)this.point.x=u%2==1?a:-a,this.point.y=u>=2?l:-l,this.point.applyMatrix4(h),this.bounds.expandByPoint(this.point)}},r.prototype.onOneTriangle=function(e,t,i,n,r,o,s){this.onVertex(e,t),this.onVertex(i,n),this.onVertex(r,o)}},77201:(e,t,i)=>{"use strict";i.r(t),i.d(t,{BufferGeometryUtils:()=>m,createBufferGeometry:()=>f,findBufferAttribute:()=>a,meshToGeometry:()=>p});var n=i(55280),r=i(72091),o=i(83081),s={};function a(e,t,i){var n,a=t.normalize||t.normalized;if(!t.isInterleavedBufferAttribute&&t.array)n=new r.BufferAttribute(t.array,t.itemSize);else{var l=e+"|"+t.bytesPerItem+"|"+a+"|"+t.isPattern+"|"+t.divisor+"|"+t.offset;if(n=s[l])return n;n=new r.BufferAttribute(void 0,t.itemSize),s[l]=n}return n.normalized=a,n.bytesPerItem=t.bytesPerItem,n.isPattern=t.isPattern,i&&(n.divisor=t.divisor),!t.isInterleavedBufferAttribute&&t.array||(Object.prototype.hasOwnProperty.call(t,"offset")?n.offset=t.offset:o.logger.warn("VB attribute is neither interleaved nor separate. Something is wrong with the buffer specificaiton.")),n}var l,c,h={};var u=1,d=function(){this.id=u++,this.attributes={},this.__webglInit=void 0};function f(e){return l||((l=new r.BufferAttribute(void 0,1)).bytesPerItem=2,(c=new r.BufferAttribute(void 0,1)).bytesPerItem=4),new d}function p(e){var t=e.mesh,i=f(t.numInstances);for(var o in(0,n.isNodeJS)()&&(i.packId=e.packId,i.meshIndex=e.meshIndex),i.byteSize=0,i.vb=t.vb,i.vbbuffer=void 0,i.vbNeedsUpdate=!0,i.vbstride=t.vbstride,i.byteSize+=t.vb.byteLength,i.hash=e.hash,t.isLines&&(i.isLines=t.isLines),t.isWideLines&&(i.isWideLines=!0,i.lineWidth=t.lineWidth),t.isPoints&&(i.isPoints=t.isPoints,i.pointSize=t.pointSize),e.is2d&&(i.is2d=!0),i.numInstances=t.numInstances,t.vblayout){var s=t.vblayout[o];i.attributes[o]=a(o,s,t.numInstances)}return i.index=t.indices instanceof Uint32Array?c:l,i.ib=t.indices,i.ibbuffer=void 0,t.iblines&&(i.attributes.indexlines=t.iblines instanceof Uint32Array?c:l,i.iblines=t.iblines,i.iblinesbuffer=void 0),i.attributesKeys=function(e){var t="";for(var i in e.attributes)t+=i+"|";var n=h[t];return n||(n=Object.keys(e.attributes),h[t]=n,n)}(i),i.byteSize+=t.indices.byteLength,t.boundingBox&&(i.boundingBox=(new r.Box3).copy(t.boundingBox),i.boundingSphere=(new r.Sphere).copy(t.boundingSphere)),i}d.prototype=Object.create(r.BufferGeometry.prototype),d.prototype.clone=function(){const e=new d;e.ib=this.ib,e.vb=this.vb,e.vbstride=this.vbstride,e.byteSize=this.byteSize,e.isLines=this.isLines,e.isWideLines=this.isWideLines,e.lineWidth=this.lineWidth,e.isPoints=this.isPoints,e.pointSize=this.pointSize,e.index=this.index;for(const t in this.attributes){const i=this.attributes[t],n=i.array?new i.array.constructor(this.array):void 0,o=new r.BufferAttribute(n,i.itemSize);o.itemOffset=i.itemOffset,o.bytesPerItem=i.bytesPerItem,o.normalized=i.normalized,e.setAttribute(t,o)}if(this.groups)for(var t=0,i=this.groups.length;t{"use strict";function n(e){var t;if(!e)return 0;return((null===(t=e.attributes.index)||void 0===t?void 0:t.array)||e.ib).length/3||0}function r(e){var t,i,n;return((null===(t=e.vb)||void 0===t?void 0:t.byteLength)||0)+((null===(i=e.ib)||void 0===i?void 0:i.byteLength)||0)+((null===(n=e.iblines)||void 0===n?void 0:n.byteLength)||0)}i.r(t),i.d(t,{getByteSize:()=>r,getPolygonCount:()=>n})},65672:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MeshAccessor:()=>p,createWireframe:()=>m});var n=i(69511),r=i(96118),o=i(21706);const s=1e-6;const a={x:0,y:0,z:0};class l{constructor(e,t,i){this.getVertex=e,this.bbox=t,this.boxSize=this.bbox.getSize().length(),i||(i=s),i>0?(this.precisionTolerance=i,this.scale=1/this.precisionTolerance):(this.precisionTolerance=-i*this.boxSize,this.scale=1/this.precisionTolerance),this.snapBaseX=this.bbox.min.x,this.snapBaseY=this.bbox.min.y,this.snapBaseZ=this.bbox.min.z,this.xymap={}}findOrAddPoint(e,t,i,n){let r,o=0|(e-this.snapBaseX)*this.scale,s=0|(t-this.snapBaseY)*this.scale,l=0|(i-this.snapBaseZ)*this.scale,c=1/0;for(let n=o-1;n<=o+1;n++){let o=this.xymap[n];if(o)for(let n=s-1;n<=s+1;n++){let s=o[n];if(s)for(let n=l-1;n<=l+1;n++){let o=s[n];if(void 0===o)continue;this.getVertex(o,a);let l=a,h=(l.x-e)*(l.x-e)+(l.y-t)*(l.y-t)+(l.z-i)*(l.z-i);hthis.precisionTolerance&&(r=void 0),void 0===r){let e=this.xymap[o];e||(e=this.xymap[o]={});let t=e[s];return t||(t=e[s]={}),t[l]=n,n}return r}}let c=new r.LmvVector3,h=new r.LmvVector3,u=new r.LmvVector3,d=new r.LmvVector3,f=new r.LmvVector3;class p{constructor(e,t,i){let s=e.boundingBox||i,a=new o.LmvBox3;s&&a.copy(s),this.geom=e,this.myVerts=function(e,t){var i=new Float32Array(3*(0,n.getVertexCount)(e));return(0,n.enumMeshVertices)(e,(function(e,n,r,o){t&&t.expandByPoint(e),i[3*o]=e.x,i[3*o+1]=e.y,i[3*o+2]=e.z})),i}(e,s?null:a);let c=new l(this.getV.bind(this),a,-1/65536);this.remap=new Array((0,n.getVertexCount)(e));for(let e=0,t=0;el){var u=n;n=l,l=u,h=!0}var p=s[n];if(p){var m=p[l];if(void 0===m)p[l]=h?-i-1:i;else{if(r)a.push(e),a.push(t);else{o.getNormal(e,t,i,d),m<0?o.getNormal(l,n,o.remap[-m-1],f):o.getNormal(n,l,o.remap[m],f);var g=d.dot(f);Math.abs(g)<.25&&(a.push(e),a.push(t))}delete p[l]}}else s[n]={},s[n][l]=i}}for(var c in(0,n.enumMeshTriangles)(e,(function(e,t,i,n,r,o){l(n,r,o),l(r,o,n),l(o,n,r)})),s)for(var h in s[c])a.push(parseInt(c)),a.push(parseInt(h));a.length<2||(e.iblines=new Uint16Array(a.length),e.iblines.set(a))}},94549:(e,t,i)=>{"use strict";function n(){let e,t,i,n,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=0;const s=[],a=[];let l,c,h,u;const d=r.timeSlice||15,f=r.sliceDelay||0,p=r.delay??-1;function m(e){o&&clearTimeout(o),o=0,i=e,s.length=0,a.length=0,l=null,c=-1,h=0,u=0}function g(){o=0;const r=performance.now()+d;for(;performance.now()=a.length,!i||c>=i.length)}o=setTimeout((()=>g()),f)}function v(){if(i&&cparseInt(e))))}if(s.length>0)return n=i[c],n}return n=null,!1}function y(e){if(l)return!l.isNodeHidden(e)&&!l.isNodeOff(e);return!i[c].getFragmentList().dbIdIsGhosted[e]}function b(){if(h>=s.length)return!1;for(;++ht.isFragVisible(e))),a.push(...i)}if(a.length>0)return!0}}return!1}function x(){if(++u=0?o=setTimeout((()=>g()),p):g())},this.stop=function(){m(null)}}i.r(t),i.d(t,{FragmentIterator:()=>n})},54561:(e,t,i)=>{"use strict";i.r(t),i.d(t,{FragmentList:()=>b,FragmentPointer:()=>x});var n=i(72091),r=i(68747),o=i(83081),s=i(10149),a=i(81760),l=new Uint32Array(1);function c(e){var t;this.geometry=e,this.vb=e.vb.buffer,this.stride=e.vbstride,this.vbi=new Int32Array(this.vb),this.vbs=new Uint16Array(this.vb),this.vcount=this.vbi.length/this.stride,this.useCompactBuffers=e.unpackXform,this.texData=this.useCompactBuffers&&(null===(t=e.tIdColor)||void 0===t||null===(t=t.image)||void 0===t?void 0:t.data)&&new Uint32Array(e.tIdColor.image.data.buffer),this.texColMap=(()=>{if(!this.texData)return null;const e={},t=new Set;for(let i=0;i65536)return void o.logger.warn("setColorAt() cannot add new color as size limit reached");const n=new Uint32Array(e.length+1);n.set(e,0),n[e.length]=t,this.texColMap[t]=e.length;var i=new THREE.DataTexture(new Uint8Array(n.buffer),n.length,1,THREE.RGBAFormat,THREE.UnsignedByteType,THREE.UVMapping,THREE.ClampToEdgeWrapping,THREE.ClampToEdgeWrapping,THREE.NearestFilter,THREE.NearestFilter,0);i.generateMipmaps=!1,i.flipY=!1,i.needsUpdate=!0,this.geometry.tIdColor.dispose(),this.geometry.tIdColor=i,this.texData=new Uint32Array(i.image.data.buffer),this.geometry.vIdColorTexSize=new THREE.Vector2(n.length,1)}this.vbs[e*this.stride*2+6]=this.texColMap[t]}else this.vbi[e*this.stride+6]=t;var n},c.prototype.setVertexFlagsAt=function(e,t){this.texData?this.vbi[e*this.stride+4]=t:this.vbi[e*this.stride+8]=t};const h=new n.Matrix4,u=new n.Box3,d=new n.Quaternion,f=new n.Vector3,p=new n.Vector3,m=new n.Vector4(0,0,0,0),g=new n.Matrix4,v=new n.Color,y=new n.Color;class b{is2d;modelId;fragments;geoms;isFixedSize;vizflags;useThreeMesh;vizMeshes;allVisible=!0;allVisibleDirty=!0;vizflagsDirty=!0;linesHidden=!1;pointsHidden=!1;matrix=null;viewBounds=null;materialmap={};materialIdMap={};nextMaterialId=1;materialIdMapOriginal=null;db2ThemingColor=[];originalColors=[];themingOrGhostingNeedsUpdate={};themingOrGhostingNeedsUpdateByDbId={};dbIdOpacity=[];themeingOrGhostingIsDirty=!0;dbIdIsGhosted=[];animxforms=null;nextAvailableFragID;meshSetCallbacks=[];transformChangedCallbacks=[];materialChangedCallbacks=[];objectFlagsChangedCallbacks=[];themingColorChangedCallbacks=[];visibilityDirtyCallbacks=[];constructor(e,t,i,n,r,o){var a;this.is2d=o.is2d,this.modelId=i,this.fragments=e,this.geoms=t,this.isFixedSize=this.fragments.length>0,this.isFixedSize?(this.boxes=this.fragments.boxes,this.transforms=this.fragments.transforms,this.useThreeMesh=!1):(this.boxes=null,this.transforms=null,this.useThreeMesh=!0);const l=this.fragments.length;this.vizflags=new Uint16Array(l),this.useThreeMesh&&(this.vizmeshes=new Array(l)),o.isOTG?(this.materialids=(0,s.z)(l,n),this.geomids=(0,s.z)(l,r)):(this.geomids=new Int32Array(l),this.materialids=new Int32Array(l)),!o.isOTG&&null!==(a=this.fragments)&&void 0!==a&&a.visibilityFlags?this.vizflags.set(this.fragments.visibilityFlags):this.vizflags.fill(1),this.vizflagsDirty=!0,this.nextAvailableFragID=l}getNextAvailableFragmentId(){return this.nextAvailableFragID++}fragmentsHaveBeenAdded(){return this.vizflags.length>this.fragments.length}getSvfMaterialId(e){var t=this.getMaterial(e);return t?t.svfMatId:void 0}setMesh(e,t,i,s){if(this.vizmeshes){const t=this.vizmeshes[e];t&&t.parent&&t.parent.remove(t)}if(this.vizflags.length<=e){this.isFixedSize&&(o.logger.warn("Attempting to resize a fragments list that was initialized with fixed data. This will have a performance impact."),this.isFixedSize=!1);let t=Math.ceil(1.5*Math.max(this.vizflags.length,e))||1;this.useThreeMesh&&t>8)&&0===d,p=this.db2ThemingColor[h],m=0===this.dbIdOpacity[h];if(p||m){if(!t){t=new Uint32Array(s);for(var g=0;gthis.themingOrGhostingNeedsUpdateByDbId[e])),t.length&&(this.#C(e),t.forEach((e=>{delete this.themingOrGhostingNeedsUpdateByDbId[e]})))}}getVizmesh(e){if(this.is2d&&this.#P(e),this.useThreeMesh){const t=this.vizmeshes[e];return t&&(t.themingColor=this.db2ThemingColor[t.dbId]),t}const t=this.scratchMesh=this.scratchMesh||function(){var e=new n.Mesh;return e.isTemp=!0,e.dbId=0,e.modelId=0,e.fragId=-1,e.hide=!1,e.isLine=!1,e.isWideLine=!1,e.isPoint=!1,e.frustumCulled=!1,e}();return t.geometry=this.getGeometry(e),t.material=this.getMaterial(e),t.dbId=this.getDbIds(e),t.modelId=this.modelId,t.fragId=e,t.visible=!0,t.isLine=this.isLine(e),t.isWideLine=this.isWideLine(e),t.isPoint=this.isPoint(e),t.hide=this.isFragOff(e),t.themingColor=this.db2ThemingColor[t.dbId],this.getWorldMatrix(e,t.matrixWorld),t}getMaterialId(e){var t=this.getMaterial(e);return t?t.id:0}getMaterial(e){return this.useThreeMesh?this.vizmeshes[e].material:this.materialIdMap[this.materialids[e]]}storeOriginalMaterials(){let e,t;this.materialIdMapOriginal=[];for(let i=0;i2&&void 0!==arguments[2]&&arguments[2];if(this.useThreeMesh)this.vizmeshes[e].material=t;else{var n=this.materialmap[t.id];n||(n=this.nextMaterialId++,this.materialids=(0,s.i)(this.materialids,n),this.materialIdMap[n]=t,this.materialmap[t.id]=n),this.materialids[e]=n}for(const n of this.materialChangedCallbacks)n(e,t,i)}getCount(){return this.vizmeshes?this.vizmeshes.length:this.vizflags.length}getDbIds(e){return this.fragments.fragId2dbId[e]}setObjectFlagsCB=function(e){this.objectFlagsCB=e;for(const e of this.objectFlagsChangedCallbacks)e()};getThemingColor(e){return this.db2ThemingColor[this.fragments.fragId2dbId[e]]}dispose(){if(this.useThreeMesh)for(var e={type:"dispose"},t={type:"removed"},i=0;i{e.matrixWorld.multiplyMatrices(this.matrix,e.matrix)}))):(this.matrix=null,this.useThreeMesh&&this.vizmeshes.forEach((e=>{e.matrixWorld.copy(e.matrix)}))),this.invMatrix=null}getInverseModelMatrix(){return this.matrix?(this.invMatrix||(this.invMatrix=this.matrix.clone().invert()),this.invMatrix):null}getWorldBounds(e,t){if(this.boxes&&!this.isFlagSet(e,r.MeshFlags.MESH_MOVED)){var i=this.boxes,n=6*e;return t.min.x=i[n],t.min.y=i[n+1],t.min.z=i[n+2],t.max.x=i[n+3],t.max.y=i[n+4],t.max.z=i[n+5],void(this.matrix&&t.applyMatrix4(this.matrix))}if(this.useThreeMesh){var o=this.vizmeshes[e];o&&o.geometry&&t.copy(o.geometry.boundingBox)}else this.geoms.getModelBox(this.geomids[e],t);this.viewBounds&&t.intersect(this.viewBounds),t.isEmpty()?t.makeEmpty():(this.getWorldMatrix(e,h),t.applyMatrix4(h))}getOriginalWorldBounds(e,t){if(this.boxes){var i=this.boxes,n=6*e;return t[0]=i[n],t[1]=i[n+1],t[2]=i[n+2],t[3]=i[n+3],t[4]=i[n+4],void(t[5]=i[n+5])}if(this.useThreeMesh){var r=this.vizmeshes[e];r&&r.geometry&&u.copy(r.geometry.boundingBox)}else this.geoms.getModelBox(this.geomids[e],u);u.isEmpty()||(this.getOriginalWorldMatrix(e,h),u.applyMatrix4(h)),t[0]=u.min.x,t[1]=u.min.y,t[2]=u.min.z,t[3]=u.max.x,t[4]=u.max.y,t[5]=u.max.z}#D(e){if(this.is2d){var t=this.fragments.dbId2fragId[e];if(Array.isArray(t))for(var i=0;i{"use strict";i.r(t),i.d(t,{CONTAINMENT_UNKNOWN:()=>c,CONTAINS:()=>l,FrustumIntersector:()=>o,INTERSECTS:()=>a,OUTSIDE:()=>s});var n=i(72091),r=[[1,5,4,7,3,2,6],[0,3,2,1,5,4,6],[0,3,2,6,5,4,6],[0,4,7,3,2,1,6],[0,3,2,1,-1,-1,4],[0,3,2,6,5,1,6],[0,4,7,6,2,1,6],[0,3,7,6,2,1,6],[0,3,7,6,5,1,6],[0,1,5,4,7,3,6],[0,1,5,4,-1,-1,4],[0,1,2,6,5,4,6],[0,4,7,3,-1,-1,4],[-1,-1,-1,-1,-1,-1,0],[1,2,6,5,-1,-1,4],[0,4,7,6,2,3,6],[2,3,7,6,-1,-1,4],[1,2,3,7,6,5,6],[0,1,5,6,7,3,6],[0,1,5,6,7,4,6],[0,1,2,6,7,4,6],[0,4,5,6,7,3,6],[4,5,6,7,-1,-1,4],[1,2,6,7,4,5,6],[0,4,5,6,2,3,6],[2,3,7,4,5,6,6],[1,2,3,7,4,5,6]];function o(){this.frustum=new n.Frustum,this.viewProj=new n.Matrix4,this.viewDir=[0,0,1],this.ar=1,this.viewport=new n.Vector3(1,1,1),this.areaConv=1,this.areaCullThreshold=1,this.eye=new n.Vector3,this.perspective=!1,this.projScale=1}const s=0,a=1,l=2,c=-1;var h,u;function d(e,t,i){return i.x=1&t?e.max.x:e.min.x,i.y=2&t?e.max.y:e.min.y,i.z=4&t?e.max.z:e.min.z,i}o.OUTSIDE=s,o.INTERSECTS=a,o.CONTAINS=l,o.CONTAINMENT_UNKNOWN=c,o.prototype.reset=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.viewProj.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),this.perspective=e.isPerspective,this.frustum.setFromProjectionMatrix(this.viewProj);var r=e.matrixWorldInverse.elements;this.ar=e.aspect,this.viewDir[0]=-r[2],this.viewDir[1]=-r[6],this.viewDir[2]=-r[10],this.eye.x=e.position.x,this.eye.y=e.position.y,this.eye.z=e.position.z,this.areaConv=e.clientWidth*e.clientHeight/4,this.cutPlanes=t,this.cutplanesHideInterior=i,this.perspective?this.projScale=e.clientHeight/(2*Math.tan(n.Math.degToRad(e.fov/2))):this.projScale=e.clientHeight/e.orthoScale},o.prototype.projectedArea=function(){var e=[new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3],t=new n.Box2;function i(e,t){var i=e.x,n=e.y,r=e.z,o=t.elements,s=o[3]*i+o[7]*n+o[11]*r+o[15];s<0&&(s=-s);var a=1/s;e.x=(o[0]*i+o[4]*n+o[8]*r+o[12])*a,e.y=(o[1]*i+o[5]*n+o[9]*r+o[13])*a}return function(n){if(n.isEmpty())return 0;var r=this.viewProj;e[0].set(n.min.x,n.min.y,n.min.z),e[1].set(n.min.x,n.min.y,n.max.z),e[2].set(n.min.x,n.max.y,n.min.z),e[3].set(n.min.x,n.max.y,n.max.z),e[4].set(n.max.x,n.min.y,n.min.z),e[5].set(n.max.x,n.min.y,n.max.z),e[6].set(n.max.x,n.max.y,n.min.z),e[7].set(n.max.x,n.max.y,n.max.z);for(var o=0;o<8;o++)i(e[o],r);return t.makeEmpty(),t.setFromPoints(e),t.min.x<-1&&(t.min.x=-1),t.min.x>1&&(t.min.x=1),t.min.y<-1&&(t.min.y=-1),t.min.y>1&&(t.min.y=1),t.max.x>1&&(t.max.x=1),t.max.x<-1&&(t.max.x=-1),t.max.y>1&&(t.max.y=1),t.max.y<-1&&(t.max.y=-1),(t.max.x-t.min.x)*(t.max.y-t.min.y)}}(),o.prototype.projectedBoxArea=function(){for(var e,t=[],i=[],o=0;o<10;o++)t.push(new n.Vector3),i.push(new n.Vector3);function s(e,t){var i=e.x,n=e.y,r=e.z,o=t.elements,s=o[3]*i+o[7]*n+o[11]*r+o[15];s<0&&(s=-s);var a=1/s;e.x=(o[0]*i+o[4]*n+o[8]*r+o[12])*a,e.y=(o[1]*i+o[5]*n+o[9]*r+o[13])*a}return function(n,o){if(n.isEmpty())return 0;var a,l=this.viewProj;if(this.perspective?(a=this.eye.x>=n.min.x?this.eye.x>n.max.x?2:1:0,this.eye.y>=n.min.y&&(a+=this.eye.y>n.max.y?6:3),this.eye.z>=n.min.z&&(a+=this.eye.z>n.max.z?18:9)):(a=this.viewDir[0]<=0?this.viewDir[0]<0?2:1:0,this.viewDir[1]<=0&&(a+=this.viewDir[1]<0?6:3),this.viewDir[2]<=0&&(a+=this.viewDir[2]<0?18:9)),13===a)return 4;var c,h=r[a][6];for(c=0;c=-1;case 1:return e.x<=1;case 2:return e.y>=-1;case 3:return e.y<=1}},m=function(e){f[u].x=e.x,f[u++].y=e.y},g=function(){var e,t;switch(h){case 0:e=-1,t=o.y+(s.y-o.y)*(e-o.x)/(s.x-o.x);break;case 1:e=1,t=o.y+(s.y-o.y)*(e-o.x)/(s.x-o.x);break;case 2:t=-1,e=o.x+(s.x-o.x)*(t-o.y)/(s.y-o.y);break;case 3:t=1,e=o.x+(s.x-o.x)*(t-o.y)/(s.y-o.y)}f[u].x=e,f[u++].y=t};for(h=0;h<4&&n>2;h++){for(u=0,a=p(o=d[n-1]),c=0;c=3)for(d=(f[e-1].x-f[0].x)*(f[e-1].y+f[0].y),c=0;c0?e.min.x:e.max.x,u.x=r.normal.x>0?e.max.x:e.min.x,h.y=r.normal.y>0?e.min.y:e.max.y,u.y=r.normal.y>0?e.max.y:e.min.y,h.z=r.normal.z>0?e.min.z:e.max.z,u.z=r.normal.z>0?e.max.z:e.min.z;var s=r.distanceToPoint(h),a=r.distanceToPoint(u);if(s<0&&a<0)return o.OUTSIDE;s>0&&a>0&&i++}return 6==i?o.CONTAINS:o.INTERSECTS});var f,p=function(e,t){f||(f=new n.Vector3);for(var i=0;i<8;i++){var r=d(e,i,f);if(s=t,!((o=r).x*s.x+o.y*s.y+o.z*s.z+s.w>1e-6))return!1}var o,s;return!0};let m;o.prototype.boxOutsideCutPlanes=function(e){if(this.cutplanesHideInterior||!this.cutPlanes)return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];m||(m=new n.Vector4);let i=0;for(let n=0;n3&&i===t.length}(e,this.cutPlanes);for(var t=0;t{"use strict";i.r(t),i.d(t,{GeometryList:()=>o});var n=i(72091),r=i(65782);function o(e,t,i,n){this.geoms=[null],this.geomPolyCount=0,this.instancePolyCount=0,this.is2d=t,this.geomBoxes=n?null:new Float32Array(6*Math.max(1,e+1)),this.numObjects=e,this.disableStreaming=!!i,this.instanceCount=[null]}o.prototype._getMemoryStat=function(e){const t=r.MemoryTracker.geomListStats.get(this);return t?t[e]:0},Object.defineProperty(o.prototype,"numGeomsInMemory",{get(){return this._getMemoryStat("geomCount")}}),Object.defineProperty(o.prototype,"geomMemory",{get(){return this._getMemoryStat("geomMemory")}}),Object.defineProperty(o.prototype,"gpuNumMeshes",{get(){return this._getMemoryStat("gpuGeomCount")}}),Object.defineProperty(o.prototype,"gpuMeshMemory",{get(){return this._getMemoryStat("gpuGeomMemory")}}),o.prototype.getGeometry=function(e){return this.geoms[e]},o.prototype.hasGeometry=function(e){return!!this.geoms[e]},o.prototype.getCount=function(){return this.geoms.length},o.prototype._addBbox=function(e,t){if(this.geomBoxes){var i=this.geomBoxes.length/6|0;if(i=1&&e<=this.numObjects?(t.min.x=-.5,t.min.y=-.5,t.min.z=-.5,t.max.x=.5,t.max.y=.5,t.max.z=.5):t.makeEmpty()},o.prototype.dispose=function(){let e;for(var t=0,i=this.geoms.length;t{"use strict";i.r(t),i.d(t,{InstanceTree:()=>l,NODE_TYPE:()=>o});var n=i(63430),r=i(83081);const o={NODE_TYPE_ASSEMBLY:0,NODE_TYPE_INSERT:1,NODE_TYPE_LAYER:2,NODE_TYPE_COLLECTION:3,NODE_TYPE_COMPOSITE:4,NODE_TYPE_MODEL:5,NODE_TYPE_GEOMETRY:6,NODE_TYPE_BITS:7};var s=1073741824,a=2147483648;function l(e,t,i){this.nodeAccess=e,this.maxDepth=i,this.objectCount=t,this.numHidden=0,this.numOff=0,this.fragList=null}l.prototype.dtor=function(){this.nodeAccess.dtor(),this.nodeAccess=null,this.fragList=null},l.prototype.setFlagNode=function(e,t,i){var n=this.nodeAccess.getNodeFlags(e);return!!(n&t)!=i&&(i?this.nodeAccess.setNodeFlags(e,n|t):this.nodeAccess.setNodeFlags(e,n&~t),!0)},l.prototype.setFlagGlobal=function(e,t){var i=this.nodeAccess,n=0,r=i.numNodes;if(t)for(;n{this.fragList.getOriginalWorldBounds(e,c),t[0]=Math.min(t[0],c[0]),t[1]=Math.min(t[1],c[1]),t[2]=Math.min(t[2],c[2]),t[3]=Math.max(t[3],c[3]),t[4]=Math.max(t[4],c[4]),t[5]=Math.max(t[5],c[5])}),!0)):void r.logger.error("getNodeBox() requires fragBoxes or nodeBoxes");this.nodeAccess.getNodeBox(e,t)},l.prototype.getNodeIndex=function(e){return this.nodeAccess.getIndex(e)},l.prototype.enumNodeFragments=function(e,t,i){var n;"number"==typeof e?n=e:e&&(n=e.dbId);const r=e=>{var n=this.nodeAccess.enumNodeFragments(e,t);return n||(i&&(n=this.enumNodeChildren(e,(e=>r(e))))?n:void 0)};return r(n)},l.prototype.enumNodeChildren=function(e,t,i){var n;if("number"==typeof e?n=e:e&&(n=e.dbId),i&&t(n))return n;const r=e=>{var n=this.nodeAccess.enumNodeChildren(e,(n=>t(n,e)?n:i?r(n):void 0));if(n)return n};return r(n)},l.prototype.findNodeForSelection=function(e,t){if(t===n.SelectionMode.LEAF_OBJECT)return e;var i,r,s=e;if(t===n.SelectionMode.FIRST_OBJECT){var a=[];for(i=e;i;)a.push(i),i=this.getNodeParentId(i);for(var l=a.length-1;l>=0;l--)if((r=this.getNodeType(a[l]))!==o.NODE_TYPE_MODEL&&r!==o.NODE_TYPE_LAYER&&r!==o.NODE_TYPE_COLLECTION){s=a[l];break}}else if(t===n.SelectionMode.LAST_OBJECT)for(i=e;i;){if((r=this.getNodeType(i))===o.NODE_TYPE_COMPOSITE){s=i;break}i=this.getNodeParentId(i)}return s},l.prototype.setFragmentList=function(e){this.fragList=e},l.prototype.search=function(e){const t=e.toLowerCase();let i=[];return this.enumNodeChildren(this.getRootId(),((e,n)=>{var r;((null===(r=this.getNodeName(e))||void 0===r?void 0:r.toLowerCase())||"").indexOf(t)>-1&&i.push(e)}),!0),i}},65435:(e,t,i)=>{"use strict";i.r(t),i.d(t,{FlatStringStorage:()=>r,InstanceTreeAccess:()=>l,InstanceTreeStorage:()=>s});var n=i(42759);class r{constructor(e){e?(this.buf=e.buf,this.idx=e.idx,this.next=e.next):(this.buf=new Uint8Array(256),this.next=0,this.idx=[0])}allocate(e){if(this.buf.length-this.nextthis.children.length&&console.error("Child index out of bounds -- should not happen"),this.processName(l,i)},s.prototype.processName=function(e,t){var i,n,r=-1,o=-1;if(t&&(o=t.lastIndexOf("]"),-1!==(r=t.lastIndexOf("["))&&-1!==o||(r=t.lastIndexOf(":"),o=t.length)),r>=0&&o>r){i=t.slice(0,r+1);var s=t.slice(r+1,o);(n=parseInt(s,10))&&n+""===s||(i=t,n=0)}else i=t,n=0;var a=this.s2i[i];void 0===a&&(a=this.strings.add(i),this.s2i[i]=a),this.names[e]=a,this.nameSuffixes[e]=n},s.prototype.flatten=function(){this.nodes=a(this.nodes),this.children=a(this.children),this.names=a(this.names),this.nameSuffixes=a(this.nameSuffixes),this.strings.flatten(),this.s2i=null},l.prototype.dtor=function(){this.nodes=null,this.children=null,this.dbIdToIndex=null,this.names=null,this.nameSuffixes=null,this.strings=null,this.visibleIds=null,this.nodeBoxes=null},l.prototype.getNumNodes=function(){return this.numNodes},l.prototype.getIndex=function(e){return this.dbIdToIndex[e]},l.prototype.name=function(e,t){var i,n=this.dbIdToIndex[e],r=this.strings.get(this.names[n]),o=this.nameSuffixes[n];o?i="["===r.charAt(r.length-1)?r+o+"]":r+o:i=r;return t&&(this.childCounts||this.computeChildCounts(),this.childCounts[e]>0&&(i+=" ("+this.childCounts[e]+")")),i},l.prototype.getParentId=function(e){var t=this.dbIdToIndex[e];return this.nodes[t*o+1]},l.prototype.getNodeFlags=function(e){var t=this.dbIdToIndex[e];return this.nodes[t*o+4]},l.prototype.setNodeFlags=function(e,t){var i=this.dbIdToIndex[e];i&&(this.nodes[i*o+4]=t)},l.prototype.getNumChildren=function(e){var t=this.dbIdToIndex[e],i=this.nodes[t*o+3];if(i>=0)return i;var n=this.nodes[t*o+2];i=Math.abs(i);for(var r=0,s=0;s=0)return 0;for(var n=this.nodes[t*o+2],r=0,s=(i=Math.abs(i))-1;s>=0;s--){if(this.children[n+s]>=0)break;r++}return r},l.prototype.getNodeBox=function(e,t){for(var i=6*this.getIndex(e),n=0;n<6;n++)t[n]=this.nodeBoxes[i+n]},l.prototype.getVisibleIds=function(){return this.visibleIds||(this.visibleIds=Object.keys(this.dbIdToIndex).map((function(e){return parseInt(e)}))),this.visibleIds},l.prototype.enumNodeChildren=function(e,t){var i=this.dbIdToIndex[e],n=this.nodes[i*o+2],r=this.nodes[i*o+3];r=Math.abs(r);for(var s=0;s0)&&t(-a-1,e,i))return e}}},l.prototype.computeBoxes=function(e){this.nodeBoxes||(this.nodeBoxes=new Float32Array(6*this.numNodes));var t=this,i=t.getIndex(t.rootId),n=t.nodeBoxes;function r(e,i,r){var o=t.getIndex(e);s(e,o);for(var a=6*r,l=6*o,c=0;c<3;c++)n[a+c]>n[l+c]&&(n[a+c]=n[l+c]),n[a+c+3]e[o+a]&&(n[s+a]=e[o+a]),n[s+a+3]{t[n]+=i(e)}),!0),e.getNumFragments(n)&&(r=1)),t[n]+r}(e.rootId)},l.prototype.dbIdToIndexFiltered=function(e){const t={},i=this,n=r=>{let o=e(r);return i.enumNodeChildren(r,(e=>{n(e)&&(o=!0)})),o&&(t[r]=i.dbIdToIndex[r]),o};return n(this.rootId),t}},10149:(e,t,i)=>{"use strict";function n(e,t){return t<=255?new Uint8Array(e):t<=65535?new Uint16Array(e):new Uint32Array(e)}function r(e,t){if(t<=255)return e;if(t<=65535&&e instanceof Uint8Array){let t=new Uint16Array(e.length);return t.set(e),t}if(!(e instanceof Uint32Array)){let t=new Uint32Array(e.length);return t.set(e),t}return e}i.d(t,{i:()=>r,z:()=>n})},21706:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LmvBox3:()=>r});var n=i(96118);let r=function(e,t){this.min=void 0!==e?e:new n.LmvVector3(1/0,1/0,1/0),this.max=void 0!==t?t:new n.LmvVector3(-1/0,-1/0,-1/0)};var o,s,a;r.prototype={constructor:r,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){return(t||new n.LmvVector3).set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},intersectsBox:function(e){return this.isIntersectionBox(e)},clampPoint:function(e,t){return(t||new n.LmvVector3).copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new n.LmvVector3;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:(o=new n.LmvVector3,s=new n.LmvVector3,function(e){for(var t=e.elements,i=0;i<3;i++){let e=t[12+i],l=e;for(var n=0;n<3;n++){var r=t[i+4*n]*this.min.getComponent(n),a=t[i+4*n]*this.max.getComponent(n);e+=Math.min(r,a),l+=Math.max(r,a)}o.setComponent(i,e),s.setComponent(i,l)}return this.min.copy(o),this.max.copy(s),this}),translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}},37365:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LmvMatrix4:()=>r});var n=i(96118);let r=function(e){this.elements=e?new Float64Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]):new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),this.isDoublePrecision=!!e};r.prototype={constructor:r,set:function(e,t,i,n,r,o,s,a,l,c,h,u,d,f,p,m){var g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=n,g[1]=r,g[5]=o,g[9]=s,g[13]=a,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=f,g[11]=p,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(e){return this.elements.set(e.elements),this},makeRotationFromQuaternion:function(e){var t=this.elements,i=e.x,n=e.y,r=e.z,o=e.w,s=i+i,a=n+n,l=r+r,c=i*s,h=i*a,u=i*l,d=n*a,f=n*l,p=r*l,m=o*s,g=o*a,v=o*l;return t[0]=1-(d+p),t[4]=h-v,t[8]=u+g,t[1]=h+v,t[5]=1-(c+p),t[9]=f-m,t[2]=u-g,t[6]=f+m,t[10]=1-(c+d),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},multiply:function(e){return this.multiplyMatrices(this,e)},multiplyMatrices:function(e,t){var i=e.elements,n=t.elements,r=this.elements,o=i[0],s=i[4],a=i[8],l=i[12],c=i[1],h=i[5],u=i[9],d=i[13],f=i[2],p=i[6],m=i[10],g=i[14],v=i[3],y=i[7],b=i[11],x=i[15],_=n[0],E=n[4],S=n[8],A=n[12],w=n[1],T=n[5],M=n[9],C=n[13],P=n[2],D=n[6],L=n[10],I=n[14],R=n[3],O=n[7],N=n[11],F=n[15];return r[0]=o*_+s*w+a*P+l*R,r[4]=o*E+s*T+a*D+l*O,r[8]=o*S+s*M+a*L+l*N,r[12]=o*A+s*C+a*I+l*F,r[1]=c*_+h*w+u*P+d*R,r[5]=c*E+h*T+u*D+d*O,r[9]=c*S+h*M+u*L+d*N,r[13]=c*A+h*C+u*I+d*F,r[2]=f*_+p*w+m*P+g*R,r[6]=f*E+p*T+m*D+g*O,r[10]=f*S+p*M+m*L+g*N,r[14]=f*A+p*C+m*I+g*F,r[3]=v*_+y*w+b*P+x*R,r[7]=v*E+y*T+b*D+x*O,r[11]=v*S+y*M+b*L+x*N,r[15]=v*A+y*C+b*I+x*F,this},multiplyToArray:function(e,t,i){var n=this.elements;return this.multiplyMatrices(e,t),i[0]=n[0],i[1]=n[1],i[2]=n[2],i[3]=n[3],i[4]=n[4],i[5]=n[5],i[6]=n[6],i[7]=n[7],i[8]=n[8],i[9]=n[9],i[10]=n[10],i[11]=n[11],i[12]=n[12],i[13]=n[13],i[14]=n[14],i[15]=n[15],this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},determinant:function(){var e=this.elements,t=e[0],i=e[4],n=e[8],r=e[12],o=e[1],s=e[5],a=e[9],l=e[13],c=e[2],h=e[6],u=e[10],d=e[14];return e[3]*(+r*a*h-n*l*h-r*s*u+i*l*u+n*s*d-i*a*d)+e[7]*(+t*a*d-t*l*u+r*o*u-n*o*d+n*l*c-r*a*c)+e[11]*(+t*l*h-t*s*d-r*o*h+i*o*d+r*s*c-i*l*c)+e[15]*(-n*s*c-t*a*h+t*s*u+n*o*h-i*o*u+i*a*c)},transpose:function(){var e,t=this.elements;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this},flattenToArrayOffset:function(e,t){var i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e},setPosition:function(e){var t=this.elements;return t[12]=e.x,t[13]=e.y,t[14]=e.z,this},invert:function(e){const t=this.elements,i=t[0],n=t[1],r=t[2],o=t[3],s=t[4],a=t[5],l=t[6],c=t[7],h=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13],g=t[14],v=t[15],y=u*g*c-m*d*c+m*l*f-a*g*f-u*l*v+a*d*v,b=p*d*c-h*g*c-p*l*f+s*g*f+h*l*v-s*d*v,x=h*m*c-p*u*c+p*a*f-s*m*f-h*a*v+s*u*v,_=p*u*l-h*m*l-p*a*d+s*m*d+h*a*g-s*u*g,E=i*y+n*b+r*x+o*_;if(0===E)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const S=1/E;return t[0]=y*S,t[1]=(m*d*o-u*g*o-m*r*f+n*g*f+u*r*v-n*d*v)*S,t[2]=(a*g*o-m*l*o+m*r*c-n*g*c-a*r*v+n*l*v)*S,t[3]=(u*l*o-a*d*o-u*r*c+n*d*c+a*r*f-n*l*f)*S,t[4]=b*S,t[5]=(h*g*o-p*d*o+p*r*f-i*g*f-h*r*v+i*d*v)*S,t[6]=(p*l*o-s*g*o-p*r*c+i*g*c+s*r*v-i*l*v)*S,t[7]=(s*d*o-h*l*o+h*r*c-i*d*c-s*r*f+i*l*f)*S,t[8]=x*S,t[9]=(p*u*o-h*m*o-p*n*f+i*m*f+h*n*v-i*u*v)*S,t[10]=(s*m*o-p*a*o+p*n*c-i*m*c-s*n*v+i*a*v)*S,t[11]=(h*a*o-s*u*o-h*n*c+i*u*c+s*n*f-i*a*f)*S,t[12]=_*S,t[13]=(h*m*r-p*u*r+p*n*d-i*m*d-h*n*g+i*u*g)*S,t[14]=(p*a*r-s*m*r-p*n*l+i*m*l+s*n*g-i*a*g)*S,t[15]=(s*u*r-h*a*r+h*n*l-i*u*l-s*n*d+i*a*d)*S,this},getInverse:function(e,t){if(console.warn("LmvMatrix4.getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(e).invert(),0===this.determinant()){const e="Matrix4.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(e);console.warn(e),this.identity()}return this},scale:function(e){var t=this.elements,i=e.x,n=e.y,r=e.z;return t[0]*=i,t[4]*=n,t[8]*=r,t[1]*=i,t[5]*=n,t[9]*=r,t[2]*=i,t[6]*=n,t[10]*=r,t[3]*=i,t[7]*=n,t[11]*=r,this},getMaxScaleOnAxis:function(){var e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],n=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,Math.max(i,n)))},makeTranslation:function(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this},makeRotationX:function(e){var t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this},makeRotationY:function(e){var t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this},makeRotationZ:function(e){var t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(e,t){var i=Math.cos(t),n=Math.sin(t),r=1-i,o=e.x,s=e.y,a=e.z,l=r*o,c=r*s;return this.set(l*o+i,l*s-n*a,l*a+n*s,0,l*s+n*a,c*s+i,c*a-n*o,0,l*a-n*s,c*a+n*o,r*a*a+i,0,0,0,0,1),this},makeScale:function(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this},lookAt:function(){var e=new n.LmvVector3,t=new n.LmvVector3,i=new n.LmvVector3;return function(n,r,o){var s=this.elements;return i.subVectors(n,r).normalize(),0===i.length()&&(i.z=1),e.crossVectors(o,i).normalize(),0===e.length()&&(i.x+=1e-4,e.crossVectors(o,i).normalize()),t.crossVectors(i,e),s[0]=e.x,s[4]=t.x,s[8]=i.x,s[1]=e.y,s[5]=t.y,s[9]=i.y,s[2]=e.z,s[6]=t.z,s[10]=i.z,this}}(),compose:function(e,t,i){return this.makeRotationFromQuaternion(t),this.scale(i),this.setPosition(e),this},decompose:function(){var e=new n.LmvVector3,t=new r(!0);return function(i,n,r){var o=this.elements,s=e.set(o[0],o[1],o[2]).length(),a=e.set(o[4],o[5],o[6]).length(),l=e.set(o[8],o[9],o[10]).length();this.determinant()<0&&(s=-s),i.x=o[12],i.y=o[13],i.z=o[14],t.elements.set(this.elements);var c=1/s,h=1/a,u=1/l;return t.elements[0]*=c,t.elements[1]*=c,t.elements[2]*=c,t.elements[4]*=h,t.elements[5]*=h,t.elements[6]*=h,t.elements[8]*=u,t.elements[9]*=u,t.elements[10]*=u,n.setFromRotationMatrix(t),r.x=s,r.y=a,r.z=l,this}}(),transformPoint:function(e){var t=e.x,i=e.y,n=e.z,r=this.elements;return e.x=r[0]*t+r[4]*i+r[8]*n+r[12],e.y=r[1]*t+r[5]*i+r[9]*n+r[13],e.z=r[2]*t+r[6]*i+r[10]*n+r[14],e},transformDirection:function(e){var t=e.x,i=e.y,n=e.z,r=this.elements;e.x=r[0]*t+r[4]*i+r[8]*n,e.y=r[1]*t+r[5]*i+r[9]*n,e.z=r[2]*t+r[6]*i+r[10]*n;var o=Math.sqrt(e.x*e.x+e.y*e.y+e.z*e.z);if(o>0){var s=1/o;e.x*=s,e.y*=s,e.z*=s}return e},equals(e){const t=this.elements,i=e.elements;for(var n=0;n<16;n++)if(t[n]!==i[n])return!1;return!0},fromArray:function(e){return this.elements.set(e),this},toArray:function(){var e=this.elements;return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},clone:function(){return new r(this.isDoublePrecision).fromArray(this.elements)}}},96118:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LmvVector3:()=>n});let n=function(e,t,i){this.x=e||0,this.y=t||0,this.z=i||0};var r,o,s,a;n.prototype={constructor:n,set:function(e,t,i){return this.x=e,this.y=t,this.z=i,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyMatrix3:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*n,this.y=r[1]*t+r[4]*i+r[7]*n,this.z=r[2]*t+r[5]*i+r[8]*n,this},applyMatrix4:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n+r[12],this.y=r[1]*t+r[5]*i+r[9]*n+r[13],this.z=r[2]*t+r[6]*i+r[10]*n+r[14],this},applyProjection:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements,o=1/(r[3]*t+r[7]*i+r[11]*n+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*n+r[12])*o,this.y=(r[1]*t+r[5]*i+r[9]*n+r[13])*o,this.z=(r[2]*t+r[6]*i+r[10]*n+r[14])*o,this},applyQuaternion:function(e){var t=this.x,i=this.y,n=this.z,r=e.x,o=e.y,s=e.z,a=e.w,l=a*t+o*n-s*i,c=a*i+s*t-r*n,h=a*n+r*i-o*t,u=-r*t-o*i-s*n;return this.x=l*a+u*-r+c*-s-h*-o,this.y=c*a+u*-o+h*-r-l*-s,this.z=h*a+u*-s+l*-o-c*-r,this},transformDirection:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n,this.y=r[1]*t+r[5]*i+r[9]*n,this.z=r[2]*t+r[6]*i+r[10]*n,this.normalize(),this},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t}else this.x=0,this.y=0,this.z=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this},clampScalar:function(e,t){return void 0===s&&(s=new n,a=new n),s.set(e,e,e),a.set(t,t,t),this.clamp(s,a)},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,i){return this.subVectors(t,e).multiplyScalar(i).add(e),this},cross:function(e,t){if(void 0!==t)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t);var i=this.x,n=this.y,r=this.z;return this.x=n*e.z-r*e.y,this.y=r*e.x-i*e.z,this.z=i*e.y-n*e.x,this},crossVectors:function(e,t){var i=e.x,n=e.y,r=e.z,o=t.x,s=t.y,a=t.z;return this.x=n*a-r*s,this.y=r*o-i*a,this.z=i*s-n*o,this},projectOnVector:function(e){return void 0===r&&(r=new n),r.copy(e).normalize(),o=this.dot(r),this.copy(r).multiplyScalar(o)},projectOnPlane:function(){var e;return function(t){return void 0===e&&(e=new n),e.copy(this).projectOnVector(t),this.sub(e)}}(),reflect:function(){var e;return function(t){return void 0===e&&(e=new n),this.sub(e.copy(t).multiplyScalar(2*this.dot(t)))}}(),distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n},setEulerFromRotationMatrix:function(e,t){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(e,t){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(e){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(e)},getScaleFromMatrix:function(e){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(e)},getColumnFromMatrix:function(e,t){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(e,t)},setFromMatrixPosition:function(e){return this.x=e.elements[12],this.y=e.elements[13],this.z=e.elements[14],this},setFromMatrixScale:function(e){var t=this.set(e.elements[0],e.elements[1],e.elements[2]).length(),i=this.set(e.elements[4],e.elements[5],e.elements[6]).length(),n=this.set(e.elements[8],e.elements[9],e.elements[10]).length();return this.x=t,this.y=i,this.z=n,this},setFromMatrixColumn:function(e,t){var i=4*e,n=t.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromAttribute:function(e,t,i){return void 0===i&&(i=0),t=t*e.itemSize+i,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this}}},65782:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MemoryTracker:()=>s});var n=i(57872),r=i(55280),o=i(25004);class s{static geomMemory=0;static geomCount=0;static gpuGeomMemory=0;static gpuGeomCount=0;static geomListStats=new WeakMap;static#L(e){let t=this.geomListStats.get(e);return t||(t={geomMemory:0,geomCount:0,gpuGeomMemory:0,gpuGeomCount:0},this.geomListStats.set(e,t)),t}static printStats(){console.log("MemoryTracker Global Stats:"),console.log("--------------------------"),this.#I(this),this.#R||console.log("Available GPU resources are tracked per model.")}static printModelStats(e){console.log("MemoryTracker Model Stats:"),console.log("--------------------------");const t=e.getGeometryList(),i=this.geomListStats.get(t);i?(this.#I(i),this.#R||(console.log("gpuGeomMemory remaining (low/high):",n.GPU_MEMORY_LIMIT-i.gpuGeomMemory,2*n.GPU_MEMORY_LIMIT-i.gpuGeomMemory),console.log("gpuGeomCount remaining:",n.GPU_OBJECT_LIMIT-i.gpuGeomCount))):console.log("No stats tracked for this model yet.")}static#I(e){console.log("geomMemory:",e.geomMemory),console.log("geomCount:",e.geomCount),console.log("gpuGeomMemory:",e.gpuGeomMemory),console.log("gpuGeomCount:",e.gpuGeomCount),this.#R&&(console.log("gpuGeomMemory remaining (low/high):",n.GPU_MEMORY_LIMIT-this.gpuGeomMemory,2*n.GPU_MEMORY_LIMIT-this.gpuGeomMemory),console.log("gpuGeomCount remaining:",n.GPU_OBJECT_LIMIT-this.gpuGeomCount))}static#R=!1;static setMemoryType(e,t,i){const n=void 0!==t.streamingDraw,r=this.#O(e,t,i);n&&!!t.streamingDraw===r?t.modelRefCount>1&&n&&!r&&this.#N(e,t,!0):(t.streamingDraw=t.streamingIndex=r,r?n&&this.untrackGeometry(e,t,!1,!0,!0):this.#N(e,t))}static#O(e,t,i){if(0===this.GPU_MEMORY_LOW)return!0;let r,o;if(this.#R)r=this.gpuGeomMemory,o=this.gpuGeomCount;else{const t=this.#L(e);r=t.gpuGeomMemory,o=t.gpuGeomCount}return!(e.disableStreaming||r=this.GPU_MEMORY_HIGH||o>=n.GPU_OBJECT_LIMIT||(e.is2d?100001:t.byteSize*(i||1))<1e5)}static#F(e){if(!n.USE_BUFFER_MANAGER)return 1;let t=0,i=0;e.ib&&(i+=e.ib.byteLength),e.iblines&&(i+=e.iblines.byteLength);let r=e.byteSize-i;return t+=i/n.INDEX_BUFFER_REGION_SIZE,t+=r/n.VERTEX_BUFFER_REGION_SIZE,0===t&&(t=1),t}static#N(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.#L(e);(0,r.isMobileDevice)()&&(i||(this.geomMemory+=t.byteSize),n.geomMemory+=t.byteSize);let o=this.#F(t);i||(this.gpuGeomMemory+=t.byteSize,this.gpuGeomCount+=o),n.gpuGeomMemory+=t.byteSize,n.gpuGeomCount+=o}static trackGeometry(e,t){const i=t.byteSize+n.GEOMETRY_OVERHEAD;void 0!==t.modelRefCount&&1!==t.modelRefCount||(this.geomMemory+=i,this.geomCount++);const r=this.#L(e);r.geomMemory+=i,r.geomCount++}static untrackGeometry(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=arguments.length>3?arguments[3]:void 0,s=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a=0;const l=this.geomListStats.get(e);if(void 0===o&&(o=!1===t.streamingDraw),i&&(a=t.byteSize+n.GEOMETRY_OVERHEAD,l.geomMemory-=a,l.geomCount--,!t.modelRefCount||s?(this.geomMemory-=a,this.geomCount--,t.streamingDraw=void 0,t.streamingIndex=void 0):a=0),o){let e=this.#F(t);l.gpuGeomMemory-=t.byteSize,l.gpuGeomCount-=e,(0,r.isMobileDevice)()&&(t.modelRefCount&&!s||(a+=t.byteSize,this.geomMemory-=t.byteSize),l.geomMemory-=t.byteSize),t.modelRefCount&&!s||(this.gpuGeomMemory-=t.byteSize,this.gpuGeomCount-=e)}return a}static getGeometrySize(e){return e.byteSize+n.GEOMETRY_OVERHEAD}static get GPU_MEMORY_LOW(){return n.GPU_MEMORY_LIMIT}static get GPU_MEMORY_HIGH(){return 2*n.GPU_MEMORY_LIMIT}}o.EventDispatcher.prototype.apply(s)},68747:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MeshFlags:()=>n});let n={MESH_VISIBLE:1,MESH_HIGHLIGHTED:2,MESH_HIDE:4,MESH_ISLINE:8,MESH_MOVED:16,MESH_RENDERFLAG:32,MESH_NOTLOADED:64,MESH_ISPOINT:128,MESH_ISWIDELINE:256,MESH_TRAVERSED:512,MESH_DRAWN:1024}},1979:(e,t,i)=>{"use strict";i.d(t,{L:()=>l});var n=i(72091),r=new n.Vector3,o=new Float32Array(6);const s="hierarchy";var a=s;class l{constructor(){}static setStrategy(e){if(a!==e)return a=e,!0}static getStrategy(){return a}static explode(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var l=e.getData().instanceTree,c=e.getFragmentList(),h=e.getVisibleBounds(!0).getCenter(new n.Vector3);if(a===s&&l&&0!==t){const{magnitude:e,depthDampening:n}=i;!function(e,t,i,n){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:4,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;var l=i*e.maxDepth+1;1===e.maxDepth&&(l=i);var c=0|l,h=l-c;function u(n,l,d,f,p,m,g,v){var y=i*s/Math.pow(l,a);l==c&&(y*=h),e.getNodeBox(n,o);var b=.5*(o[0]+o[3]),x=.5*(o[1]+o[4]),_=.5*(o[2]+o[5]);l>0&&l<=c&&(m+=(b-d)*y,g+=(x-f)*y,v+=(_-p)*y);e.isNodeExplodeLocked(n)&&(m=g=v=0),e.enumNodeChildren(n,(function(e){u(e,l+1,b,x,_,m,g,v)}),!1),r.x=m,r.y=g,r.z=v,e.enumNodeFragments(n,(function(e){t.updateAnimTransform(e,null,null,r)}),!1)}u(e.getRootId(),0,n.x,n.y,n.z,0,0,0)}(l,c,t,h,e,n)}else!function(e,t,i,n){var o,s,a=e.fragments.boxes;e.useThreeMesh?o=e.vizmeshes:s=e.fragments.fragId2dbId;for(var l=0,c=e.getCount();l{"use strict";i.r(t),i.d(t,{ModelIteratorBVH:()=>h});var n=i(57872),r=i(4897),o=i(72091),s=i(75468);const a=new o.Box3,l=new o.Box3,c=new o.Sphere;class h{#U;#B;#k;#V;#G;#z;#H;#W;#j;#q;#X;#Y;#K;#Q;#Z;#$;#J;#ee;#te;#ie;constructor(){this.#U=null,this.#B=null,this.#k=null,this.#V=null,this.#G=null,this.#z=null,this.#H=null,this.#W=0,this.#j=0,this.#q=1,this.#X=!0,this.#Y=!1,this.#K=!1,this.#Q=!1,this.#Z=null,this.#$=!1,this.#J=null,this.#ee=!0,this.#te=null,this.#ie=null}initialize(e,t,i,n){this.#te=e,this.#ie=n,this.#U=e.getFragmentList(),this.#J=e.RenderBatch,n&&n.hasOwnProperty("prioritize_screen_size")&&(this.#X=n.prioritize_screen_size),this.#k=i,this.#V=new Array(t.nodeCount),this.#G=new Int8Array(t.nodeCount),this.#B=t,this.#z=new Int32Array(t.nodeCount+1),this.#H=new Float32Array(t.nodeCount);for(let e=0;ethis.#W&&this.#H[this.#z[i-1]]>t;)this.#z[i]=this.#z[i-1],i--;else for(;i>this.#W&&this.#H[this.#z[i-1]]>2&1,f=h>>3&1;const p=this.#q||this.#Y?1:0;let m=0,g=0;if(this.#X&&!this.#Y){if(o=i+d,l=i+1-d,n.USE_HLOD){let e;this.#V[o].getLargestFragBoxThree(a),this.getBVH().options.sortFuncType===Autodesk.Viewing.Private.BVHSortFuncType.DIAMETER?(a.getBoundingSphere(c),e=c.center.distanceTo(this.#Z.eye),this.#H[o]=m=c.radius/e,a.getBoundingSphere(c),e=c.center.distanceTo(this.#Z.eye),this.#H[l]=g=c.radius/e):(e=a.getCenter().distanceTo(this.#Z.eye),this.#H[o]=m=s.BVHModule.box_area_three(a)/(e*e),this.#V[l].getLargestFragBoxThree(a),e=a.getCenter().distanceTo(this.#Z.eye),this.#H[l]=g=s.BVHModule.box_area_three(a)/(e*e))}else this.#B.getBoxThree(o,a),this.#H[o]=m=this.#Z.projectedBoxArea(a,t===r.FrustumIntersector.CONTAINS),this.#B.getBoxThree(l,a),this.#H[l]=g=this.#Z.projectedBoxArea(a,t===r.FrustumIntersector.CONTAINS);this.#G[o]=this.#G[l]=t,m>0&&this.#ne(o),g>0&&this.#ne(l)}else u^p^f&&(d=1-d),o=i+d,l=i+1-d,this.#z[this.#j++]=o,this.#H[o]=-1,this.#z[this.#j++]=l,this.#H[l]=-1,this.#G[o]=this.#G[l]=t}if(0!==this.#B.getPrimCount(e)){const i=this.#V[e];return i.renderImportance=this.#Z.projectedBoxArea(i.getBoundingBox(),t===r.FrustumIntersector.CONTAINS),i}}this.#Y||this.#K||this.#W!==this.#j||(this.#Q||(this.#z[this.#j++]=1),this.#Y=!0)}return this.#$=!0,null}skipOpaqueShapes(){this.#Y||this.#K||(this.#W=0,this.#j=0,this.#z[this.#j++]=1,this.#K=!0)}setIgnoreTransparency(e){this.#Q=e}#re(e){const t=this.#B.getLeftChild(e);-1!==t&&(this.#re(t),this.#re(t+1)),a.makeEmpty(),-1!==t&&(this.#B.getBoxThree(t,l),a.union(l),this.#B.getBoxThree(t+1,l),a.union(l));this.#B.getPrimCount(e)&&(a.union(this.#V[e].getBoundingBox()),a.union(this.#V[e].getBoundingBoxHidden())),this.#B.setBoxThree(e,a)}getVisibleBounds(e,t){for(let i=0;i3&&void 0!==arguments[3]?arguments[3]:{};const r=e.ray.origin;let s=[1,0],a=new o.Vector3,l=new o.Box3;for(;s.length>0;){const o=s.pop();if(this.#B.getBoxThree(o,l),l.expandByScalar(.5),null!=n.maxDistance){if(l.distanceToPoint(r)>n.maxDistance)continue}if(null===e.ray.intersectBox(l,a))continue;const c=this.#B.getLeftChild(o);-1!==c&&(s.push(c),s.push(c+1));if(0!==this.#B.getPrimCount(o)){this.#V[o].raycast(e,t,i,n)}}}intersectFrustum(e,t){let i=[1,r.FrustumIntersector.CONTAINMENT_UNKNOWN,0,r.FrustumIntersector.CONTAINMENT_UNKNOWN];for(;i.length;){const n=i.pop(),o=i.pop();let s;if(n===r.FrustumIntersector.CONTAINS?s=r.FrustumIntersector.CONTAINS:(this.#B.getBoxThree(o,a),s=e.intersectsBox(a)),s===r.FrustumIntersector.OUTSIDE)continue;const l=this.#B.getLeftChild(o);-1!==l&&(i.push(l),i.push(s),i.push(l+1),i.push(s));if(0!==this.#B.getPrimCount(o)){let i=this.#V[o];i&&i.intersectFrustum(e,t,s===r.FrustumIntersector.CONTAINS)}}}getSceneCount(){return this.#V.length}getGeomScenes(){return this.#V}getBVH(){return{nodes:this.#B,primitives:this.#k,options:this.#ie}}getFragOrder(){return this.#k}done(){return this.#$}resetVisStatus(){this.#ee=!0}clone(){const e=new h,t=new Int32Array(this.#k);return e.initialize(this.#te,this.#B,t,this.#ie),e}}},42525:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ModelIteratorLinear:()=>o});i(8879);var n=i(55280),r=i(4897);class o{constructor(e){this._frags=e.getFragmentList(),this._RenderBatch=e.RenderBatch,this._model=e,this._is2d=this._model.is2d(),this._fragsPerScene=function(e){let t=500;return e&&(t/=6),(0,n.isMobileDevice)()&&(t/=3),t=Math.floor(t),t>0?t:500}(e.is2d()),this._fragOrder=null,this._geomScenes=[],this._secondPassIndex=null;const t=this._frags.getCount();this._currentScene=0,this._fragOrder=new Int32Array(t);for(let e=0;ee&&(r=e),n.lastItem=r,n.count=n.lastItem-t}}addFragment(e){if(this._fragOrder.length<=e){var t=2*this._fragOrder.length;t<=e&&(t=e+1);var i=new Int32Array(t);i.set(this._fragOrder),this._fragOrder=i,this.visibleBoundsDirty=!0}this._fragOrder[e]=e;var n=Math.floor(e/this._fragsPerScene);if(this._geomScenes){var r=this._geomScenes[n];r&&!r.isSecondPass||(r=new this._RenderBatch(this,this._frags,n*this._fragsPerScene,this._fragsPerScene),null===this._secondPassIndex?this._geomScenes[n]=r:this.insertSceneToSecondPass(n,r)),r&&(r.onFragmentAdded(e),null!==this._secondPassIndex&&this._geomScenes[this._secondPassIndex+n].onFragmentAdded(e))}}insertSceneToSecondPass(e,t){const i=this._geomScenes.slice(0,this._secondPassIndex),n=this._geomScenes.slice(this._secondPassIndex);i[e]=t,n[e]=this.cloneForSecondPass(t),this._secondPassIndex=i.length,this._geomScenes=i.concat(n)}reset(e,t){if(this._currentScene=0,this._is2d&&this._geomScenes[0]&&(this._geomScenes[0].drawEnd=0,null!==this._secondPassIndex&&(this._geomScenes[this._secondPassIndex].drawEnd=0)),this._resetVisStatus){let e=this._geomScenes,t=e.length;for(let n=0;n=this._geomScenes.length-1&&(!(e=this._geomScenes[this._currentScene])||e.drawStart>=e.lastItem));var e}nextBatch(){if(this._currentScene>=this.getSceneCount())return null;let e=this._geomScenes[this._currentScene];if(this._is2d){const t=this.areTwoPassesNeeded();if(e.lastItem>=e.start+e.count&&(++this._currentScene,this._geomScenes[this._currentScene]&&(this._geomScenes[this._currentScene].drawEnd=this._geomScenes[this._currentScene].start)),e.drawStart=e.drawEnd,e.drawEnd=e.lastItem,e.hasOwnProperty("drawStart")&&e.lastItem<=e.drawStart){return t&&!this._isSecondPass?(this._currentScene=this._secondPassIndex,this.nextBatch()):null}const i=!this._model.areAllVisible()||this._isSecondPass;e.renderImportance=i?-1:1e20,e.needsTwoPasses=t}else e.renderImportance=0,++this._currentScene;return e}areTwoPassesNeeded(){const e=this._model.hasPaperTransparency();return e&&null===this._secondPassIndex&&this.addSecondPassScenes(),this._isSecondPass=!!(e&&this._currentScene>=this._secondPassIndex),e}cloneForSecondPass(e){if(!e)return;const t=e.clone();return t.isSecondPass=!0,t}addSecondPassScenes(){const e=this._geomScenes.length;e&&(this._geomScenes=this._geomScenes.concat(this._geomScenes.map(this.cloneForSecondPass)),this._secondPassIndex=e)}getVisibleBounds(e,t){for(var i=this.getSceneCount(),n=0;n{"use strict";i.r(t),i.d(t,{NoOpTraversalController:()=>r});class n{constructor(){}dtor(){}clone(){}nextBatch(){}reset(e,t){}getGeomScenes(){}getSceneCount(){}getVisibleBounds(e,t,i){}rayCast(e,t,i){}}class r extends n{nextBatch(){return null}getGeomScenes(){return new Array}getSceneCount(){return 0}clone(){return new r}}},8879:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ConsolidatedRenderBatch:()=>f,RenderBatch:()=>d});var n=i(36411),r=i(4897),o=i(68747),s=i(24528),a=i(83081),l=i(21706),c=i(57872),h=new l.LmvBox3,u=null;class d{creatorIterator;frags;start;count;lastItem;overrideMaterial=null;sortDone=!1;numAdded=0;avgFrameTime=void 0;nodeIndex=void 0;bboxes=new Array(12);sortObjects=!1;sortByShaderDone=!1;fragOrderChangedCallbacks=[];frustumCulled=!0;forceVisible=!1;renderImmediate;renderImportance=0;isComplete=!1;useRenderBundles=!1;_renderBundles=[];#oe;constructor(e,t,i,n,r){this.creatorIterator=e,this.frags=t,this.start=i,this.count=n,this.lastItem=i,this.indices=r,this.#oe=this.getIndices()[this.start],this.bboxes[0]=this.bboxes[1]=this.bboxes[2]=1/0,this.bboxes[3]=this.bboxes[4]=this.bboxes[5]=-1/0,this.bboxes[6]=this.bboxes[7]=this.bboxes[8]=1/0,this.bboxes[9]=this.bboxes[10]=this.bboxes[11]=-1/0,this.renderImmediate=!t.useThreeMesh}clone(){const e=new d(this.creatorIterator,this.frags,this.start,this.count,this.indices);return e.sortDone=this.sortDone,e.sortByShaderDone=this.sortByShaderDone,e.lastItem=this.lastItem,e.visibleStats=this.visibleStats,e.numAdded=this.numAdded,e.bboxes=this.bboxes.slice(),e}getIndices(){return this.indices??this.creatorIterator.getFragOrder()}registerFragOrderChangedCallback=function(e){this.fragOrderChangedCallbacks.push(e)};removeFragOrderChangedCallback=function(e){const t=this.fragOrderChangedCallbacks.indexOf(e);-1!==t&&this.fragOrderChangedCallbacks.splice(t,1)};sortByMaterial(){if(!(this.numAddedd)return 1;let f=c?null===(o=c.__gpuib)||void 0===o?void 0:o.id:Number.MAX_SAFE_INTEGER,p=h?null===(s=h.__gpuib)||void 0===s?void 0:s.id:Number.MAX_SAFE_INTEGER;return fp?1:((null===(a=i.getMaterial(e))||void 0===a?void 0:a.id)??Number.MAX_SAFE_INTEGER)-((null===(l=i.getMaterial(t))||void 0===l?void 0:l.id)??Number.MAX_SAFE_INTEGER)})),this.numAdded=0,this.sortByVBDone=!0,this.sortDone=!0;for(const e of this.fragOrderChangedCallbacks)e(this.start,this.lastItem-this.start)}sortByDepth(e){var t=this.frags,i=this.getIndices(),n=e,r=h;if(i){(!u||u.length{t.hasGeometry(e)?(t.getWorldBounds(e,r),l[i]=n.estimateDepth(r)):l[i]=-1/0}));for(var d=1;d0&&l[f-1]{if(!this.frags.isFlagSet(a,o.MeshFlags.MESH_HIDE)){if(i&&i.length){var l=0|this.frags.getDbIds(a);if(-1===i.indexOf(l))return}this.frags.getWorldBounds(a,h),h.expandByScalar(.5),e.ray.intersectsBox(h)&&n.VBIntersector.rayCast(s,e,t,r)}}),o.MeshFlags.MESH_VISIBLE)}intersectFrustum(e,t,i){if(!i){let t=e.intersectsBox(this.getBoundingBox());if(t===r.FrustumIntersector.OUTSIDE)return;t===r.FrustumIntersector.CONTAINS&&(i=!0)}this.forEach(((n,s)=>{if(this.frags.isFlagSet(s,o.MeshFlags.MESH_HIDE))return;if(i)return void t(s,i);this.frags.getWorldBounds(s,h);let a=e.intersectsBox(h);a!==r.FrustumIntersector.OUTSIDE&&t(s,a===r.FrustumIntersector.CONTAINS)}),o.MeshFlags.MESH_VISIBLE)}calculateBounds(){this.bboxes[0]=this.bboxes[1]=this.bboxes[2]=1/0,this.bboxes[3]=this.bboxes[4]=this.bboxes[5]=-1/0,this.bboxes[6]=this.bboxes[7]=this.bboxes[8]=1/0,this.bboxes[9]=this.bboxes[10]=this.bboxes[11]=-1/0,this.forEachNoMesh((e=>{this.frags.getWorldBounds(e,h);var t=this.frags.vizflags[e];this.addToBox(h,!(1&t))}),0,!0)}applyVisibility(e,t){let i,n,l,u,d,f,p,m;function g(e){var t=!1;return i.getWorldBounds(e,h),d&&!l.intersectsBox(h)&&(t=!0),c.ENABLE_PIXEL_CULLING&&!t&&l.estimateProjectedDiameter(h){var t=6*this.#oe,i=this.frags.boxes;e.min.x=i[t],e.min.y=i[t+1],e.min.z=i[t+2],e.max.x=i[t+3],e.max.y=i[t+4],e.max.z=i[t+5]}}class f extends d{constructor(e,t,i){var n;const r=new Int32Array(null===(n=i.nodeId2SingleFragIds)||void 0===n?void 0:n[t.nodeIndex]);super(e,t.frags,0,r.length,r),this.lastItem=this.count,this.bboxes=t.bboxes,this.consolidatedScene=new THREE.Scene,this.sortDone=!1}render(e){e(this.consolidatedScene),e(this)}}},24528:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderFlags:()=>n});var n={RENDER_NORMAL:0,RENDER_HIGHLIGHTED:1,RENDER_HIDDEN:2,RENDER_SHADOWMAP:3,RENDER_FINISHED:4}},9478:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderModel:()=>M});var n=i(57872),r=i(86639),o=i(54561),s=i(8879),a=i(90824),l=i(28441),c=i(34845),h=i(72474),u=i(36411),d=i(72091),f=i(68747),p=i(24528),m=i(83081),g=i(37365),v=i(6684),y=i(22040),b=i(65782),x=i(7756),_=i(2404),E=i.n(_);const S=Autodesk.Viewing,A="Job canceled. While ";var w=(()=>{const e=new d.Vector4;return(t,i)=>{e.copy(t);for(let t=0;t1e-6)return!0;return!1}})(),T=1;class M{#se=new d.Box3;#ae=new d.Box3;#le=new d.Box3;visibleBoundsDirty=!1;#ce=0;id=T++;#he=null;#U=null;#ue=new c.SceneTraversal;#de=null;#fe=[];#pe=null;#me=0;#Z=null;#ge=p.RenderFlags.RENDER_NORMAL;#ve=null;#ye=null;#be=null;#xe;#_e;#Ee;RenderBatch=s.RenderBatch;#Se=!1;#Ae;#we;visibilityManager=null;#Te=new d.Plane;#Me=new d.Vector3;#Ce;#Pe;#De;#Le;#Ie={};#Re=null;#Oe=null;_currentConsolidationOptions={};static _consolidationCounter=0;static _consolidationWorker=null;static _consolidationJobs=new Map;static _workerRefCount=0;static addJob(e){M._consolidationWorker||(M._consolidationWorker=(0,x.createWorker)("ConsolidationWorker"));let t=!1;return e.stopIfCanceled=function(){if(t)throw A+(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")},e.cancel=()=>{t=!0},e.signalProgress=t=>{e.model.loader.viewer3DImpl&&e.model.loader.viewer3DImpl.signalProgress(t,l.ProgressState.OPTIMIZING,e.model)},e.worker=M._consolidationWorker,e.id=M._consolidationCounter++,e.signalProgress(.1),this._consolidationJobs.set(e.id,e),e}static removeJob(e){var t;null===(t=e.model.loader)||void 0===t||t.viewer3DImpl.signalProgress(100,l.ProgressState.OPTIMIZING,this),M._consolidationJobs.delete(e.id)}static _registerConsolidationWorker(){M._workerRefCount++}static async _unregisterConsolidationWorker(){if(this._workerRefCount--,0===M._workerRefCount&&M._consolidationWorker){const e=[];this._consolidationJobs.forEach((t=>{t.cancel(),e.push(t.promise)})),Promise.all(e).then((()=>{0===this._consolidationJobs.size&&(m.logger.info("Shutting down consolidation worker"),M._consolidationWorker.terminate(),M._consolidationWorker=null)}))}}constructor(e){this.#Le=e,this.#Ce=e.modelSpaceBBox,this.#Pe=e.bbox,this.#De=e.placementWithOffset,M._registerConsolidationWorker()}dtor(){this.#o()}setModelFormat(e){this.#Ie=e}initialize(){var e,t;const i=this.#Le.numGeoms,s=!function(e,t,i){return!(e&&e-3*t*2<=n.GPU_MEMORY_LIMIT&&ie.far)return;let a,h;if(n){const e=n(s);if(a=e[0],t&&t.length>0&&!t.includes(a))return;const i=e[1];if(0!==i&&i!==this.id)return;var c;h=null===(c=this.#U)||void 0===c?void 0:c.fragments.dbId2fragId[a]}const u={intersectPoint:s,point:s,distance:o,dbId:a&&this.remapDbIdFor2D(a),fragId:h,model:this};return i&&i.push(u),u}}return null}rayIntersect(e,t,i,n,r,o){if(this.ignoreRayIntersect)return null;if(this.#Ie.is2d)return this.rayIntersect2D(e,i,n,r);this.visibleBoundsDirty&&this.getVisibleBounds();var s,a=[];if(i&&i.length>0){var l=this.getInstanceTree(),c=[];if(l)for(s=0;s2){(this.#de||this.getIterator()).rayCast(e,a,i)}else for(s=0;s0)break}}var y=n[0]||null;return y&&(y.model=this),y}setHighlighted(e,t){if(!this.#U)return!1;var i=this.#U.setFlagFragment(e,f.MeshFlags.MESH_HIGHLIGHTED,t);return i&&(t?this.#ce++:this.#ce--),i}setVisibility(e,t){this.#U?this.#U.setVisibility(e,t):this.isLeaflet()&&this.#ue.setVisibilityLeaflet(t),this.invalidateBBoxes()}setAllVisibility(e){this.#U?this.#U.setAllVisibility(e):this.isLeaflet()&&this.#ue.setVisibilityLeaflet(e),this.invalidateBBoxes()}hideLines(e){this.#U&&this.#U.hideLines(e)}hidePoints(e){this.#U&&this.#U.hidePoints(e)}hasHighlighted(){return!!this.#ce}isFragVisible(e){return this.#U.isFragVisible(e)}areAllVisible(){return!this.#U||this.#U.areAllVisible()}getGeomScenes(){return this.#ue.getScenes()}getRenderProgress(){const e=this.#me/this.#ue.getSceneCount();return e>1?1:e}update(e){return this.#ue.needsRedrawLeaflet(e)}setThemingColor(e,t,i){if(this.#U){e=this.reverseMapDbIdFor2D(e);const n=this.getInstanceTree();return i&&n?void n.enumNodeChildren(e,(e=>{this.#U.setThemingColor(e,t)}),!0):void this.#U.setThemingColor(e,t)}this.#ue.setThemingColorLeaflet(t)||m.logger.warn("Theming colors are not supported by this model type.")}clearThemingColors(){this.#U?this.#U.clearThemingColors():this.#ue.clearThemingColorsLeaflet()}getLeaflet(){return this.#ue.getLeafletIterator()}chooseMemoryTypes(){const e=this.#ue.getConsolidation();var t=this.getGeometryList(),i=[];let n;for(o=1;o3&&void 0!==arguments[3]&&arguments[3];t=t||n.CONSOLIDATION_MEMORY_LIMIT,this.isConsolidating()&&this._cancelConsolidationJob();const o=this.getData().loadOptions.bvhOptions.consolidation,s={byteLimit:t,forceConsolidationMapRecomputation:this.#Ne(t,o),bvhOptions:o,syncTimeSlice:n.USE_HLOD?20:1/0,consolidationMap:this.#pe,useDeferredConsolidation:r,model:this};return m.logger.info("Starting consolidation",s.id),this.#Re=M.addJob(s),this.#Oe=this.#Re.promise=(0,a.consolidateFragmentList)(this,e,s).then((e=>{if(s.canceled)return void m.logger.debug("Skipping results of canceled consolidation",s.id);this.#ue.enableConsolidation(this.#U,e),this.chooseMemoryTypes(),this.#pe=e.consolidationMap;const i=s.consolidationBVH;i&&this.setBVH(i.nodes,i.primitives,i.bvhOptions),this._currentConsolidationOptions.byteLimit=t,this._currentConsolidationOptions.bvhOptions=o,m.logger.info("Consolidation finished",s.id)})).finally((()=>{this.#Oe=null,this.#Re=null,M.removeJob(s)})).catch((e=>{var t;null!=e&&null!==(t=e.startsWith)&&void 0!==t&&t.call(e,A)?m.logger.info("Consolidation canceled."):m.logger.error("Consolidation failed.",e)})),this.#Oe}untrackConsolidatedGeometry(){const e=this.#ue.getConsolidation();for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];return console.warn("RenderModel.consolidate is deprecated. Use consolidateAsync instead."),this.consolidateAsync(e,t,i,n)}unconsolidate(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.isConsolidating()&&this._cancelConsolidationJob(),this.isConsolidated()&&(this.untrackConsolidatedGeometry(),this.#ue.disableConsolidation(),t&&(this._currentConsolidationOptions={},this.#pe=null),e&&this.chooseMemoryTypes())}isConsolidated(){return this.#ue.isEnabledConsolidation()}isConsolidating(){return null!=this.#Oe}getConsolidationPromise(){return this.#Oe||Promise.resolve()}getConsolidation(){return this.#ue.getConsolidation()}setDbIdRemap(e){this.#Ae=e}remapDbId(e){return this.#Ae&&e>0&&e0&&t<1}setModelTransform(e){this.#ue.setModelTransformLeaflet(e),this.isLeaflet()||(this.#U.setModelMatrix(e),this.#ue.updateModelTransformConsolidation()),this.invalidateBBoxes(),this.getVisibleBounds(!0),this.#ye=null,this.#be=null}getModelTransform(){var e;const t=this.#ue.getModelTransformLeaflet();return t||(null===(e=this.#U)||void 0===e?void 0:e.matrix)}getModelBounds(e,t){if(!this.#Ce&&!this.#Pe)return null;const i=new d.Box3;if(i.copy(this.#Ce||this.#Pe),t&&i.copy(this.trimPageShadowGeometry(i)),e)return i;this.#De&&this.#Ce&&i.applyMatrix4(this.#De);const n=this.getModelTransform();return n&&i.applyMatrix4(n),i}updateModelBBoxOriginal(e){this.#Ce=e}getInverseModelTransform(){var e;const t=this.#ue.getInverseModelTransformLeaflet();return t||(null===(e=this.#U)||void 0===e?void 0:e.getInverseModelMatrix())}getPlacementTransform(){return this.#ve=this.#ve||new g.LmvMatrix4(!0),this.#xe||this.getData().placementTransform||this.#ve}getGlobalOffset(){return this.#_e||this.getData().globalOffset}setPlacementTransform(e){this.#xe=(this.#xe||new g.LmvMatrix4(!0)).copy(e),v.DynamicGlobalOffset.updateModelMatrix(this,e,this.getGlobalOffset())}setGlobalOffset(e){this.#_e=this.#_e||new d.Vector3,this.#_e.copy(e);var t=this.getPlacementTransform();v.DynamicGlobalOffset.updateModelMatrix(this,t,e)}getModelToViewerTransform(){var e;if(this.#ye)return this.#ye;const t=this.getModelTransform(),i=null===(e=this.getData())||void 0===e?void 0:e.placementWithOffset;return(t||i)&&(this.#ye=new d.Matrix4,t&&this.#ye.multiply(t),i&&this.#ye.multiply(i)),this.#ye}getInverseModelToViewerTransform(){if(this.#be)return this.#be;const e=this.getModelToViewerTransform();return e&&(this.#be=e.clone().invert()),this.#be}getInversePlacementWithOffset(){return this.myData.placementWithOffset?(this.#Ee||(this.#Ee=new g.LmvMatrix4(!0).copy(this.myData.placementWithOffset).invert()),this.#Ee):null}setInnerAttributes(e){this.id=e._id,this.#se=e._visibleBounds,this.#ae=e._visibleBoundsWithHidden,this.#le=e._tmpBox,this.#ce=e._numHighlighted,this.#he=e._geoms,this.#U=e._frags,this.#pe=e._consolidationMap,this.#me=e._renderCounter,this.#Z=e._frustum,this.#ge=e._drawMode,this.#Ae=e._idRemap,this.#we=e._reverseMap;const t={_iterator:e._iterator,_linearIterator:e._linearIterator,_bvhIterator:e._bvhIterator,_consolidationIterator:e._consolidationIterator};this.#ue.setInnerAttributes(t)}getInnerAttributes(){const e=this.#ue.getInnerAttributes();return{_id:this.id,_visibleBounds:this.#se,_visibleBoundsWithHidden:this.#ae,_tmpBox:this.#le,_numHighlighted:this.#ce,_geoms:this.#he,_frags:this.#U,_linearIterator:e.linearIterator,_bvhIterator:e.bvhIterator,_iterator:e.currentIterator,_consolidationIterator:e.consolidationIterator,_consolidationMap:this.#pe,_renderCounter:this.#me,_frustum:this.#Z,_drawMode:this.#ge,_idRemap:this.#Ae,_reverseMap:this.#we}}setDoNotCut(e,t){if(this.#Se===t)return;this.#Se=t,this.#U?this.#U.setDoNotCut(t):this.isLeaflet()&&this.#ue.setDoNotCutLeaflet(t);e.forEachInModel(this,!1,(i=>{var n;i.doNotCut=t;(null===(n=i.cutplanes)||void 0===n?void 0:n.length)>0===t&&(e._applyCutPlanes(i),i.needsUpdate=!0)}))}getDoNotCut(){return this.#Se}setViewportBounds(e,t){this.isLeaflet()?this.#ue.setViewportBoundsLeaflet(t):this.#U&&(t=t||this.isPdf()&&this.getModelBounds(!0,!0),this.#U.setViewBounds(t),e.setViewportBoundsForModel(this,t)),this.invalidateBBoxes()}getViewportBounds(){var e;return this.isLeaflet()?this.#ue.getViewportBoundsLeaflet():null===(e=this.#U)||void 0===e?void 0:e.getViewBounds()}load(e){let t=0;return(this.#Ie.isSVF2||this.#Ie.isOTG)&&(t=this.loader.loadFragments(e)),t}unload(e){let t=0;return(this.#Ie.isSVF2||this.#Ie.isOTG)&&(t=this.getFragmentList().unload(e,this.loader.viewer3DImpl.geomCache(!1)),t>0&&(this.getData().fragsLoaded-=t,this.#Fe({type:S.FRAGMENTS_UNLOADED_EVENT,model:this}))),t}#Fe(e){this.loader.viewer3DImpl.api.dispatchEvent(e)}}},47263:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderScene:()=>h});var n=i(57872),r=i(4897),o=i(72091),s=i(24528),a=i(19129),l=i(1979);const c=new o.Box3;class h{#$=!1;#Ue=[];#Be=[];#ke=[];#Ve=[];#Z=new r.FrustumIntersector;#Ge=new o.Raycaster;enableNonResumableFrames=!1;budgetForTransparent=.1;#ze=!1;#He=[];#We=null;constructor(){}frustum(){return this.#Z}#je(e,t){for(let i=0;i=0&&this.#Ue.splice(t,1),this.#Be.length=this.#Ue.length,this.#ke.length=this.#Ue.length,this.recomputeLinePrecision(),t>=0}addHiddenModel(e){const t=this.#Ve.indexOf(e);return t<0&&this.#Ve.push(e),t<0}removeHiddenModel(e){const t=this.#Ve.indexOf(e);return t>=0&&this.#Ve.splice(t,1),t>=0}isEmpty(){return 0===this.#Ue.length}recomputeLinePrecision(){let e=1;const t=new o.Vector3;for(let i=0,n=this.#Ue.length;i1.5*e.avgFrameTime?(e.outliers.push(t),i=!1,e.outliers.length>4&&(e.avgFrameTime=e.outliers.reduce(((e,t)=>e+t),0)/e.outliers.length,e.outliers.splice(0,1e3))):e.outliers.splice(0,1e3),i&&(e.avgFrameTime=.95*e.avgFrameTime+.05*t)}#qe(e,t,i){let n,r;for(n=0;n2&&void 0!==arguments[2]?arguments[2]:1,r=performance.now(),o=r;const s=this.budgetForTransparent*t;let a=null,l=0,c=0,h=0,u=n.PER_FRAME_CONSOLIDATION_TIME_BUDGET;const d=e=>{const n=performance.now()+Math.min(u,.5*t);let o=performance.now(),s=e.nextBatch(n),a=performance.now(),l=a-o;return t-=l/i,u-=l,r=a,s};for(;;){let i=0,n=null;for(let e=0;en.renderImportance,l=!r.sortObjects&&n.sortObjects;(o||l)&&(i=e,n=r)}if(!n){this.#$=!0;break}if(this.#Be[i]=d(this.#Ue[i]),n.sortObjects&&this.#ze)this.#He.push(n),t-=void 0===n.avgFrameTime?.05:n.avgFrameTime;else{n.render?n.render(e):e(n),Object.prototype.hasOwnProperty.call(n,"drawEnd")&&(n.drawEnd=n.lastItem),o=performance.now();let i,s=o-r;r=o,l>5&&(i=c/l,s>5*i&&h<3&&(s=n.avgFrameTime??i,h++)),c+=s,l++,void 0===n.avgFrameTime&&(s=i??.5),this._updateAvgFrameTime(n,s),t-=n.avgFrameTime}if(t<=0)break}return this.#He.length>0&&(this.#qe(this.#He,this.#We,e),this.#He.length=0),t}reset(e,t,i,r){let o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(this.#$=!1,this.#Z.reset(e,r,o),this.#Z.areaCullThreshold=n.PIXEL_CULLING_THRESHOLD,this.#Ue.length){this.#ze=this.enableNonResumableFrames&&i==a.ResetFlags.RESET_RELOAD&&t===s.RenderFlags.RENDER_NORMAL,this.#We=e;for(let n=0;n1){const e=[];if(r)for(let t=0;t(e.push(t.getGeomScenes()),e)),[])}explode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.#Ue.length){for(let i=0;i{"use strict";i.r(t),i.d(t,{ResetFlags:()=>n});var n={RESET_NORMAL:0,RESET_REDRAW:1,RESET_RELOAD:2}},12153:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SceneMath:()=>c});var n=i(72091);const r=[new n.Vector3(1,0,0),new n.Vector3(0,1,0),new n.Vector3(0,0,1),new n.Vector3(-1,0,0),new n.Vector3(0,-1,0),new n.Vector3(0,0,-1)];let o=new n.Plane;new n.Vector3;function s(e,t,i,r){var o=e;o.z=-1;var s=new n.Vector3(o.x,o.y,1);o=o.unproject(t),(s=s.unproject(t)).sub(o).normalize();var a,l=s;if(Math.abs(l[i])<1e-6)return null;a=t.isPerspective?t.position:o;var c=((r?r.min[i]:0)-a[i])/l[i];return l.multiplyScalar(c),l.add(a),l}function a(e,t,i){var n=e.clone();return n.max(t),n.min(i),n.distanceToSquared(e)}function l(e,t){return a(e,t.min,t.max)}let c={box2CutPlanes:function(e,t){let i=[];for(let s=0;s{"use strict";i.r(t),i.d(t,{SceneTraversal:()=>s});var n=i(81422),r=i(70101),o=i(8879);class s{#Xe=new Map;#Ye="NoOp";#Ke=null;#Z=void 0;#ge=void 0;constructor(){this.addTraversalController("NoOp",new r.NoOpTraversalController)}addTraversalController(e,t){this.#Xe.set(e,t),this.#Qe()}getTraversalController(){return this.#Xe.get(this.#Ye)}#Qe(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]||!this.#Xe.has("BVH")?this.#Xe.has("Linear")?this.#Ye="Linear":this.#Xe.has("Custom")?this.#Ye="Custom":this.#Ye="NoOp":this.#Ye="BVH"}dtor(){this.#Ke&&(this.#Ke.dispose(),this.#Ke=null),this.#Xe.forEach((e=>{e.dtor()})),this.#Xe=null,this.#Ye=null}nextBatch(e){const t=this.getTraversalController().nextBatch();if(!t)return null;if(this.#Ke&&t instanceof o.RenderBatch){const i=this.#Ke.consolidateNextBatch(t,this.#Z,this.#ge,e);return i||t}return t}updateView(e,t,i,n){this.#Z=t,this.#ge=i,this.#Qe(n),this.getTraversalController().reset(t,e),this.#Ke&&this.#Ke.reset()}getVisibleBounds(e,t,i){this.getTraversalController().getVisibleBounds(e,t,i)}getScenes(){const e=this.getTraversalController();return e.isModelIteratorTexQuad?[]:e.getGeomScenes()}getSceneCount(){return this.getTraversalController().getSceneCount()}getInnerAttributes(){return{currentIterator:this.getTraversalController(),linearIterator:this.#Xe.get("Linear"),bvhIterator:this.#Xe.get("BVH"),consolidationIterator:this.#Ke}}setInnerAttributes(e){var t;(!this.#Xe.has("Linear")&&e._linearIterator&&(this.#Xe.set("Linear",e._linearIterator.clone()),e._linearIterator===e._iterator&&(this.#Ye="Linear")),!this.#Xe.has("BVH")&&e._bvhIterator&&(this.#Xe.set("BVH",e._bvhIterator.clone()),e._bvhIterator===e._iterator&&(this.#Ye="BVH")),!this.#Ke&&e._consolidationIterator&&(this.#Ke=e._consolidationIterator.clone()),"NoOp"==!this.#Ye)&&(this.#Xe.set("Custom",null!==(t=e._iterator)&&void 0!==t&&t.clone?e._iterator.clone():e._iterator),this.#Ye="Custom")}addFragment(e){"Linear"==this.#Ye&&this.getTraversalController().addFragment(e)}setVisibilityLeaflet(e){this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().setVisibility(e)}needsRedrawLeaflet(e){return!!this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().update(e)}clearThemingColorsLeaflet(){this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().clearThemingColor()}setThemingColorLeaflet(e){return!!this.getTraversalController().isModelIteratorTexQuad&&(this.getTraversalController().setThemingColor(e),!0)}getLeafletIterator(){return this.getTraversalController().isModelIteratorTexQuad?this.getTraversalController():null}setModelTransformLeaflet(e){this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().setModelMatrix(e)}getModelTransformLeaflet(){if(this.getTraversalController().isModelIteratorTexQuad)return this.getTraversalController().getModelMatrix()}getInverseModelTransformLeaflet(){if(this.getTraversalController().isModelIteratorTexQuad)return this.getTraversalController().getInverseModelMatrix()}setViewportBoundsLeaflet(e){this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().setViewBounds(e)}getViewportBoundsLeaflet(){if(this.getTraversalController().isModelIteratorTexQuad)return this.getTraversalController().getViewBounds()}setDoNotCutLeaflet(e){this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().setDoNotCut(e)}updateModelTransformConsolidation(){this.#Ke&&this.#Ke.modelMatrixChanged()}enableConsolidation(e,t){this.#Ke=new n.ConsolidationIterator(e,t)}disableConsolidation(){this.#Ke.dispose(),this.#Ke=null}getConsolidation(){var e;return null===(e=this.#Ke)||void 0===e?void 0:e.getConsolidation()}isEnabledConsolidation(){return!!this.#Ke}updateRenderProxy(e,t){this.isEnabledConsolidation()&&this.#Ke.updateRenderProxy(e,t)}skipOpaqueShapes(){this.getTraversalController().skipOpaqueShapes&&this.getTraversalController().skipOpaqueShapes()}}},63430:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SelectionMode:()=>n});let n={LEAF_OBJECT:0,FIRST_OBJECT:1,LAST_OBJECT:2}},71082:(e,t,i)=>{"use strict";function n(e){var t=e||function(e,t){return e=s)return s;if(s===o+1){var a=i[n[o]];return t(a,e)?s:o}var l=parseInt(o+(s-o)/2),c=i[n[l-1]];return t(e,c)?r(e,o,l):t(c,e)?r(e,l,s):l-1}this.add=function(e){var t=r(e);if(t==n.length)return i.push(e),void n.push(i.length-1);i.push(e),n.splice(t,0,i.length-1)},this.size=function(){return n.length},this.get=function(e){return i[n[e]]},this.removeAt=function(e){var t=n[e];i[t]=void 0,n.splice(e,1)},this.toString=function(){for(var e="",t=0,i=this.size();tn})},36411:(e,t,i)=>{"use strict";i.r(t),i.d(t,{VBIntersector:()=>m});var n,r,o,s,a=i(69511),l=i(72091);function c(){n||(n=new l.Matrix4,r=new l.Ray,new l.Vector3,new l.Vector3,new l.Vector3,o=new l.Vector3,s=new l.Vector3)}function h(e,t,i){c();var h=e.geometry;if(h){var u=e.material,d=u?u.side:l.FrontSide;n.copy(e.matrixWorld).invert(),r.copy(t.ray).applyMatrix4(n);var f,p,m=t.precision||1e-4;(0,a.enumMeshTriangles)(h,(function(n,a,c,h,u,g,v,y,b,x){null!==(f=d===l.BackSide?r.intersectTriangle(c,a,n,!0,o):r.intersectTriangle(n,a,c,d!==l.DoubleSide,o))&&(f.applyMatrix4(e.matrixWorld),(p=t.ray.origin.distanceTo(f))t.far||(l.Triangle.getNormal(n,a,c,s),i.push({distance:p,point:f.clone(),face:new l.Face3(h,u,g,s.clone()),faceIndex:x,fragId:e.fragId,dbId:e.dbId,object:e,modelId:e.modelId})))}))}}function u(e,t,i,o){c();var s=e.geometry;if(s){var h=t.params.Line.threshold;e.isWideLine&&(e.material.linewidth?h=e.material.linewidth:e.geometry.lineWidth&&(h=e.geometry.lineWidth));var u=h*h;n.copy(e.matrixWorld).invert(),r.copy(t.ray).applyMatrix4(n);var d=new l.Vector3,f=new l.Vector3;s instanceof l.BufferGeometry&&(0,a.enumMeshLines)(s,(function(n,s,a,l,c){var h,p;if(r.distanceSqToSegment(n,s,f,d),d.applyMatrix4(e.matrixWorld),f.applyMatrix4(e.matrixWorld),(p=d.distanceToSquared(f))>u)return;if((h=t.ray.origin.distanceTo(d))t.far)return;let m={distance:h,point:d.clone(),face:{a,b:l},faceIndex:c,fragId:e.fragId,dbId:e.dbId,object:e,distanceToRay:Math.sqrt(p)};o&&o.filter&&!o.filter(m)||i.push(m)}))}}function d(e,t,i,o){e.isLine||e.isWideLine?null!=o&&o.skipLines||u(e,t,i,o):e.isPoint?null!=o&&o.skipPoints||function(e,t,i){c();var o=e.geometry;if(o){n.copy(e.matrixWorld).invert(),r.copy(t.ray).applyMatrix4(n);var s=t.precision||1e-4,h=t.params.PointCloud.threshold;h||(h=1),h*=Math.max(3,o.pointSize),h/=4,o instanceof l.BufferGeometry&&(0,a.enumMeshVertices)(o,(function(n,o,a,l){if(!(r.distanceToPoint(n)>h)){var c=r.closestPointToPoint(n);if(null!==c){c.applyMatrix4(e.matrixWorld);var u=t.ray.origin.distanceTo(c);ut.far||i.push({distance:u,point:n,face:{a:l},faceIndex:l,fragId:e.fragId,dbId:e.dbId,object:e})}}}))}}(e,t,i):null!=o&&o.skipMeshes||h(e,t,i)}function f(e,t,i,n){if(e instanceof l.Mesh?d(e,t,i):e.raycast(t,i),!0===n)for(var r=e.children,o=0,s=r.length;o{"use strict";i.r(t),i.d(t,{VertexBufferReader:()=>r});var n=2*Math.PI;function r(e){var t;this.vb=e.vb.buffer,this.stride=e.vbstride,this.vbf=new Float32Array(this.vb),this.vbi=new Int32Array(this.vb),this.vbs=new Uint16Array(this.vb),this.ib=e.ib,this.vcount=this.vbf.length/this.stride,this.useInstancing=e.numInstances>0,this.useCompactBuffers=e.unpackXform,this.texData=this.useCompactBuffers&&(null===(t=e.tIdColor)||void 0===t||null===(t=t.image)||void 0===t?void 0:t.data)&&new Uint32Array(e.tIdColor.image.data.buffer),this.isInterleavedVb=(()=>{const t=e.attributes;if(!t)return!1;const i=t.layerVp4b,n=t.flags4b;if(this.useCompactBuffers){return t.uvIdColor&&i&&n}{const e=t.color4b,r=t.dbId4b;return e&&r&&i&&n}})()}r.prototype.getDbIdAt=function(e){return this.texData?this.texData[this.vbs[e*this.stride*2+7]]:this.vbi[e*this.stride+7]},r.prototype.getColorAt=function(e){return this.texData?this.texData[this.vbs[e*this.stride*2+6]]:this.vbi[e*this.stride+6]},r.prototype.getVertexFlagsAt=function(e){return this.texData?this.vbi[e*this.stride+4]:this.vbi[e*this.stride+8]},r.prototype.getLayerIndexAt=function(e){return this.texData?65535&this.vbi[e*this.stride+5]:65535&this.vbi[e*this.stride+9]},r.prototype.getViewportIndexAt=function(e){return this.texData?this.vbi[e*this.stride+5]>>16&65535:this.vbi[e*this.stride+9]>>16&65535},r.prototype.decodeLineAt=function(e,t,i,r){if(r.onLineSegment){if(this.useCompactBuffers)var o=this.stride*e*2,s=this.useCompactBuffers.x*this.vbs[o]/65535+this.useCompactBuffers.z,a=this.useCompactBuffers.y*this.vbs[o+1]/65535+this.useCompactBuffers.w,l=this.vbs[o+2]/65535*n-Math.PI,c=this.vbs[o+3]/65535*Math.max(this.useCompactBuffers.x,this.useCompactBuffers.y),h=this.vbs[o+4]/32767*Math.max(this.useCompactBuffers.x,this.useCompactBuffers.y)*2;else{var u=this.stride*e;s=this.vbf[u],a=this.vbf[u+1],l=this.vbf[u+2]*n-Math.PI,c=this.vbf[u+3],h=2*this.vbf[u+4]}var d=s+c*Math.cos(l),f=a+c*Math.sin(l);r.onLineSegment(s,a,d,f,i,h)}},r.prototype.decodeCircularArcAt=function(e,t,i,r){if(r.onCircularArc){if(this.useCompactBuffers)var o=this.stride*e*2,s=this.useCompactBuffers.x*this.vbs[o]/65535+this.useCompactBuffers.z,a=this.useCompactBuffers.y*this.vbs[o+1]/65535+this.useCompactBuffers.w,l=this.vbs[o+2]/65535*n,c=this.vbs[o+3]/65535*n,h=this.vbs[o+5]/65535*Math.max(this.useCompactBuffers.x,this.useCompactBuffers.y);else{var u=this.stride*e;s=this.vbf[u],a=this.vbf[u+1],l=this.vbf[u+2]*n,c=this.vbf[u+3]*n,h=this.vbf[u+5]}r.onCircularArc(s,a,l,c,h,i)}},r.prototype.decodeEllipticalArcAt=function(e,t,i,r){if(r.onEllipticalArc){var o=this.stride*e,s=this.vbf[o],a=this.vbf[o+1],l=this.vbf[o+2]*n,c=this.vbf[o+3]*n,h=this.vbf[o+5],u=this.vbf[o+10],d=this.vbf[o+11];r.onEllipticalArc(s,a,l,c,h,u,d,i)}},r.prototype.decodeTexQuadAt=function(e,t,i,r){if(r.onTexQuad){if(this.useCompactBuffers)var o=this.stride*e*2,s=this.useCompactBuffers.x*this.vbs[o]/65535+this.useCompactBuffers.z,a=this.useCompactBuffers.y*this.vbs[o+1]/65535+this.useCompactBuffers.w,l=this.vbs[o+2]/65535*n,c=this.vbs[o+3]/65535*Math.max(this.useCompactBuffers.x,this.useCompactBuffers.y),h=this.vbs[o+4]/65535*Math.max(this.useCompactBuffers.x,this.useCompactBuffers.y);else{var u=this.stride*e;s=this.vbf[u],a=this.vbf[u+1],l=this.vbf[u+2]*n,c=this.vbf[u+3],h=this.vbf[u+4]}r.onTexQuad(s,a,c,h,l,i)}},r.prototype.decodeOneTriangleAt=function(e,t,i,n){if(n.onOneTriangle){if(this.useCompactBuffers)var r=this.stride*e*2,o=this.useCompactBuffers.x*this.vbs[r]/65535+this.useCompactBuffers.z,s=this.useCompactBuffers.y*this.vbs[r+1]/65535+this.useCompactBuffers.w,a=this.useCompactBuffers.x*this.vbs[r+2]/65535+this.useCompactBuffers.z,l=this.useCompactBuffers.y*this.vbs[r+3]/65535+this.useCompactBuffers.w,c=this.useCompactBuffers.x*this.vbs[r+4]/65535+this.useCompactBuffers.z,h=this.useCompactBuffers.y*this.vbs[r+5]/65535+this.useCompactBuffers.w;else{var u=this.stride*e;o=this.vbf[u],s=this.vbf[u+1],a=this.vbf[u+2],l=this.vbf[u+3],c=this.vbf[u+4],h=this.vbf[u+5]}n.onOneTriangle(o,s,a,l,c,h,i)}},r.prototype.decodeTriangleIndexed=function(e,t,i,n,r,o){if(o.onOneTriangle){if(this.useCompactBuffers){var s=this.stride*e*2,a=this.useCompactBuffers.x*this.vbs[s]/65535+this.useCompactBuffers.z,l=this.useCompactBuffers.y*this.vbs[s+1]/65535+this.useCompactBuffers.w;s=this.stride*t*2;var c=this.useCompactBuffers.x*this.vbs[s]/65535+this.useCompactBuffers.z,h=this.useCompactBuffers.y*this.vbs[s+1]/65535+this.useCompactBuffers.w;s=this.stride*i*2;var u=this.useCompactBuffers.x*this.vbs[s]/65535+this.useCompactBuffers.z,d=this.useCompactBuffers.y*this.vbs[s+1]/65535+this.useCompactBuffers.w}else{var f=this.stride*e;a=this.vbf[f],l=this.vbf[f+1];f=this.stride*t;c=this.vbf[f],h=this.vbf[f+1];f=this.stride*i;u=this.vbf[f],d=this.vbf[f+1]}o.onOneTriangle(a,l,c,h,u,d,r)}},r.prototype.decodeByType=function(e,t,i,n,r){switch(e){case 11:case 8:case 9:case 10:case 1:this.decodeLineAt(t,i,n,r);break;case 2:this.decodeCircularArcAt(t,i,n,r);break;case 3:this.decodeEllipticalArcAt(t,i,n,r);break;case 4:this.decodeTexQuadAt(t,i,n,r);break;case 5:this.decodeOneTriangleAt(t,i,n,r)}},r.prototype.enumGeomsForObject=function(e,t){if(this.useInstancing)for(var i=0;i>8&255,r=this.getLayerIndexAt(i),o=this.getViewportIndexAt(i);(a=this.getDbIdAt(i)===e)&&this.decodeByType(n,i,r,o,t),i+=1}else for(i=0;i>8&255,r=this.getLayerIndexAt(s),o=this.getViewportIndexAt(s),this.getDbIdAt(s)===e);0===n?(a&&this.decodeTriangleIndexed(this.ib[i],this.ib[i+1],this.ib[i+2],r,o,t),i+=3):(a&&this.decodeByType(n,s,r,o,t),i+=6)}},r.prototype.enumGeomsForVisibleLayer=function(e,t){this.enumGeoms((function(t,i,n){return!e||0!==i&&-1!==e.indexOf(i)}),t)},r.prototype.enumGeoms=function(e,t){if(this.useInstancing)for(var i=0;i>8&255,r=this.getLayerIndexAt(i),o=this.getViewportIndexAt(i),s=this.getDbIdAt(i);(l=!e||e(s,r,o))&&this.decodeByType(n,i,r,o,t),i+=1}else for(i=0;i>8&255,r=this.getLayerIndexAt(a),o=this.getViewportIndexAt(a),s=this.getDbIdAt(a),!e||e(s,r,o));0===n?(l&&this.decodeTriangleIndexed(this.ib[i],this.ib[i+1],this.ib[i+2],r,o,t),i+=3):(l&&this.decodeByType(n,a,r,o,t),i+=6)}}},69511:(e,t,i)=>{"use strict";i.r(t),i.d(t,{VertexEnumerator:()=>w,enumMeshEdges:()=>A,enumMeshIndices:()=>_,enumMeshLines:()=>S,enumMeshTriangles:()=>E,enumMeshVertices:()=>x,getIndicesCount:()=>g,getVertexCount:()=>m});var n,r,o,s,a,l,c,h,u,d,f,p=i(96118);function m(e){return e.vb?e.vb.length/e.vbstride:e.attributes.position?e.attributes.position.array.length/3:0}function g(e){const t=b(e);if(t){var i=e.groups;if(!i||0===i.length)return t.length;let o=0;for(var n=0,r=i.length;n{"use strict";i.r(t),i.d(t,{Consolidation:()=>B,ConsolidationBuilder:()=>k,canBeMerged:()=>U,copyPrimitiveProps:()=>N,copyVertexFormat:()=>O,isVisible:()=>L,mergeGeometries:()=>F});var n=i(72091),r=i(57872),o=i(69511),s=i(77201),a=i(22040),l=i(1433),c=i(7756),h=i(37365),u=i(96118);function d(e,t,i,n){var r=function(e){for(var t=new Uint16Array(e.length+1),i=0,n=0;n0&&(a=new Uint16Array(l),c.byteSize+=a.byteLength,c.iblines=a),c.byteSize+=c.vb.byteLength+c.ib.byteLength,N(e[0],c),O(e[0],c);var h=new n.BufferAttribute(new Float32Array,3);h.normalized=!0,h.bytesPerItem=1,c.setAttribute("id",h);var u=e[0];return _(c,x(u)),u.isPoints&&(c.pointSize=u.pointSize),u.isWideLines&&(c.lineWidth=u.lineWidth),c}(e);return l.boundingBox=r.clone(),function(e,t){for(var i=0,n=0,r=0,s=0,a=0;a2&&void 0!==arguments[2]?arguments[2]:null;this.fragOrder=new Uint32Array(e),this.ranges=new Uint32Array(t),this.boxes=new Array(t),this.numConsolidated=-1,this.tmpGeoms=[],this.tmpMatrix=new n.Matrix4,this.fragIdToNodeIdx=i}R.prototype={constructor:R,addGeom:function(e,t,i){this.geoms.push(e),this.fragIds.push(i),this.worldBox.union(t),this.vertexCount+=(0,o.getVertexCount)(e);var n=this.geoms.length;return 1==n?0:(void 0===e.byteSize&&m.logger.warn("Error in consolidation: Geometry must contain byteSize."),e.byteSize+(2==n?this.geoms[0].byteSize:0))}},B.prototype={constructor:B,addContainerMesh:function(e,t,i,r,o){var s=new n.Mesh(e,t);this.meshes.push(s),this.byteSize+=e.byteSize;var a=r||0,l=a+(o||i.length);s.frustumCulled=!1;for(var c=this.meshes.length-1,h=a;hr)return null;o.geometry=a._buildConsolidationGeometry(e,t),o.geometry.streamingDraw=s.streamingDraw,o.geometry.streamingIndex=s.streamingIndex,o.geometry.discardAfterUpload=s.discardAfterUpload,s=o.geometry}var c,h,u,d=a.fragOrder,f=s.numInstances,p=t.db2ThemingColor.length>0||void 0;if(f?h=(c=o.rangeStart)+o.geometry.numInstances:s.attributes.id?(c=a.ranges[e],h=e+1>=a.ranges.length?a.numConsolidated:a.ranges[e+1]):u=o.fragId,!n||void 0!==u)return s.groups&&void 0===u&&(s.groups=void 0),o.visible=L(l[void 0===u?d[c]:u],i),o.themingColor=p&&t.getThemingColor(u),o;var m,g,v=0,y=0,b=0,x=0,_=0;function E(){if(m){s.groups=s.groups||[];var e=s.groups[_]||{index:0};s.groups[_++]=e,f?(e.start=0,e.count=s.ib?s.ib.length:s.ibLength,(s.iblines||s.iblinesLength)&&(e.edgeStart=0,e.edgeCount=s.iblines?s.iblines.length:s.iblinesLength),e.instanceStart=v,e.numInstances=y-v):(e.start=v,e.count=y-v,(s.iblines||s.iblinesLength)&&(e.edgeStart=b,e.edgeCount=x-b)),e.themingColor=g}}for(var S=c;Sv&&E(),v=y,b=x,m=A,g=w),f)y+=1;else{var T=t.getGeometry(u);y+=T.ib?T.ib.length:T.ibLength,(T.iblines||T.iblinesLength)&&(x+=T.iblines?T.iblines.length:T.iblinesLength)}}return 0===v?(o.themingColor=g,o.visible=m,o.material=Array.isArray(o.material)?o.material[0]:o.material):(o.visible=!0,E()),s.groups&&(s.groups.length=_),o},dispose:function(){for(var e={type:"dispose"},t={type:"removed"},i=0;i65535)){s=h;break}}s||(s=new R(t),this.bucketCount++,l?l.push(s):this.buckets.set(a,[s])),this.costs+=s.addGeom(e,i,n)},createConsolidationMap:function(e,t,i){var n=new V(e.length,this.bucketCount,i),r=0,o=0;this.buckets.forEach((e=>{for(var t=0;t3&&void 0!==arguments[3]&&arguments[3];var r=e.getCount(),o=this.ranges.length,s=new B(r),a=null;n||p.createWorker&&(a=new p(s)),s.consolidationMap=this;for(var l=0;l{"use strict";i.r(t),i.d(t,{ConsolidationIterator:()=>d});var n=i(32431),r=i(23936),o=i(72091),s=i(4897),a=i(68747),l=i(24528),c=i(83081),h=i(57872),u=i(8879);function d(e,t){var i=e,f=t,p=[],m=!1;const g=[];var v=[],y=new o.Matrix4,b=new o.Box3;function x(e){const t=i.matrix,n=e.consolidatedScene||e;t?(n.matrixWorld.copy(t),n.matrixAutoUpdate=!1):n.matrixWorld.identity()}function _(){const e=f.meshes;for(let t=0;t0,h=0;h=0&&(v[d]=!0)}}}},this.dispose=function(){f.dispose()},this.consolidateNextBatch=function(e,t,n,r){var a=e.nodeIndex;if(m||void 0===a)return e;if(f.inProgress)return e;let u,d=!1,g=this.acquireSceneOrConsolidatedRenderBatch(e);if(h.USE_HLOD)u=g.consolidatedScene;else{u=g;const i=n===l.RenderFlags.RENDER_HIDDEN?e.getBoundingBoxHidden():e.getBoundingBox(),r=t.intersectsBox(i);if(r===s.FrustumIntersector.OUTSIDE)return null;if(h.ENABLE_PIXEL_CULLING&&t.estimateProjectedDiameter(i){"use strict";i.r(t),i.d(t,{CONSOLIDATION_STOP_MARKER:()=>l,consolidateFragmentList:()=>g});var n=i(32431),r=i(23936),o=i(62612),s=i(72091),a=i(75468);const l=Object.freeze({BVH_SORTING:{name:"Sorting fragments for BVH computation",progress:10},BVH:{name:"Computing Consolidation BVH",progress:30},SORTING:{name:"Sorting Fragments by Consolidation Costs",progress:50},MAP_CREATION:{name:"Creating Consolidation Map",progress:50},INSTANCING:{name:"Applying Instancing to Fragments",progress:70},FINAL_PROCESSING:{name:"Finalizing Consolidation",progress:95}}),c=5e4,h=1e4;let u=0;var d,f=(d=null,function(e,t,i,n,a,l){var c=e.getFragmentList();d||(d=new s.Matrix4);var h=i[n],u=c.getGeometry(h),f=c.getMaterial(h),p=a-n,m=a-1;if(p<=1)for(let e=n;e<=m;e++)l.addSingleFragment(i[e],c);else{var g=new r.InstanceBufferBuilder(u,p);for(let e=n;e<=m;e++){var v=i[e];c.getOriginalWorldMatrix(v,d);var y=c.fragments.fragId2dbId[v];if(!g.addInstance(d,y)){var b=i[m];i[m]=v,i[e]=b,--e,--m}}var x=g.finish();if(x){var _=t.getMaterialVariant(f,o.MATERIAL_VARIANT.INSTANCED,e);l.addContainerMesh(x,_,i,n,p),l.meshes[l.meshes.length-1].rangeStart=n}for(let e=m+1;e{const t=u++;d=i=>{i.data.jobId===t&&e(i.data.fragIds)},n.worker.addEventListener("message",d);const o={operation:"SORT_FRAGMENTS",fragIds:l,geomIds:r.geomids,memCosts:c,materialIds:r.materialids,fragIdToNodeIdx:i,jobId:t};n.worker.doOperation(o)})).finally((()=>{var e;null===(e=n.worker)||void 0===e||e.removeEventListener("message",d)}))}async function m(e,t){if(!t.consolidationMap||t.forceConsolidationMapRecomputation){var i;const r=e.getFragmentList();let o=null,c=new Int32Array(r.getCount());null!==(i=t.bvhOptions)&&void 0!==i&&i.per_tile_consolidation&&(o=new Uint32Array(r.getCount()),await async function(e,t,i,n){const r=e.getFragmentList(),o={boxes:r.fragments.boxes,polygonCounts:new Uint32Array(r.fragments.length),flags:new Uint8Array(r.fragments.length),materials:r.materialids,length:r.fragments.length,geomids:r.geomids};i=await p(e,i,t,n),n.stopIfCanceled(l.BVH_SORTING),n.signalProgress(l.BVH_SORTING.progress);const s=e.getFragmentList().materialIdMap;let c,h=0;for(let e=0;e{const i=u++;c=e=>{if(e.data.jobId===i){const i=e.data.bvh;t({nodes:new a.NodeArray(i.nodes,i.useLeanNodes),primitives:i.primitives})}},n.worker.addEventListener("message",c),n.worker.doOperation({operation:"COMPUTE_BVH",fragments:o,modelId:e.id,bvhOptions:n.bvhOptions,jobId:i},[o.polygonCounts.buffer,o.flags.buffer])})).finally((()=>{var e;null===(e=n.worker)||void 0===e||e.removeEventListener("message",c)}));n.consolidationBVH=d,n.consolidationBVH.bvhOptions=n.bvhOptions,n.stopIfCanceled(l.BVH),n.signalProgress(l.BVH.progress);let f=e=>{const i=d.nodes.getPrimStart(e),n=i+d.nodes.getPrimCount(e);for(let r=i;r{var a=new s.Box3,c=new n.ConsolidationBuilder,u=0;const d=()=>{r.stopIfCanceled(l.MAP_CREATION);const n=performance.now()+r.syncTimeSlice;for(;u=r.byteLimit);u++){var s=t[u];e.getWorldBounds(s,a);var f=e.getGeometry(s),p=e.getMaterial(s);if(c.addGeom(f,p,a,s,i),u%h==0){const e=l.INSTANCING.progress-l.MAP_CREATION.progress;if(r.signalProgress(l.MAP_CREATION.progress+e*Math.max(u/t.length,c.costs/r.byteLimit)),performance.now()>n)return++u,void setTimeout(d,0)}}o(c.createConsolidationMap(t,u,i))};d()}))}(e.getFragmentList(),c,o,t)}return t.consolidationMap}async function g(e,t,i){const n=e.getFragmentList(),r=(i.consolidationMap=await m(e,i)).buildConsolidation(n,t,e,i.useDeferredConsolidation);await async function(e,t,i,n){var r=e.getFragmentList();const o=n.consolidationMap.fragOrder,s=n.consolidationMap.numConsolidated;if(s>=o.length)return;var a=s,u=-1,d=-1;let p,m=-1,g=0;const v=n.consolidationMap.fragIdToNodeIdx;await new Promise((y=>{let b=s;const x=()=>{n.stopIfCanceled(l.INSTANCING);const _=performance.now()+n.syncTimeSlice;for(;bc)&&(b!=s&&f(e,t,o,a,b,i),a=b,u=S,d=A,m=w,g=0,p=r.getGeometry(E)),g+=p.ib?p.ib.length:0,b%h==0){const e=l.FINAL_PROCESSING.progress-l.INSTANCING.progress;if(n.signalProgress(l.INSTANCING.progress+e*b/o.length),performance.now()>_)return++b,void setTimeout(x,0)}}y()};x()})),f(e,t,o,a,o.length,i)}(e,t,r,i);const o=e.getModelId();for(let e=0;e{"use strict";i.r(t),i.d(t,{GeomMergeTask:()=>r,writeIdToBuffer:()=>s});var n=1;function r(){this.vb=null,this.vbstride=0,this.posOffset=0,this.normalOffset=0,this.matrices=null,this.ranges=null,this.dbIds=null,this.id=n++}function o(e){e.x=.5*(1+Math.atan2(e.y,e.x)/Math.PI),e.y=.5*(1+e.z),e.z=0}function s(e,t,i){t[i++]=255&e,t[i++]=e>>8&255,t[i++]=e>>16&255,t[i]=0}var a=function(e,t,i,n,r,s,a){for(var l,c,h,u,d,f,p,m=e.posOffset,g=n;g{"use strict";i.r(t),i.d(t,{InstanceBufferBuilder:()=>l});var n=i(32431),r=i(1433),o=i(77201),s=i(83081),a=i(72091);function l(e,t){const i=(0,o.createBufferGeometry)(!0);i.ib=e.ib,i.vb=e.vb,i.iblines=e.iblines,(0,n.copyVertexFormat)(e,i),(0,n.copyPrimitiveProps)(e,i);this.offsets=new Float32Array(3*t),this.rotations=new Float32Array(4*t),this.scalings=new Float32Array(3*t),this.ids=new Uint8Array(3*t);var l=new a.Vector3,c=new a.Quaternion,h=new a.Vector3,u=new a.Matrix4,d=0,f=t;this.addInstance=function(e,t){return d>=f?(s.logger.warn("Instance buffer is already full."),!1):(e.decompose(l,c,h),!!function(e,t,i,n){u.compose(t,i,n);for(var r=e.elements,o=u.elements,s=0;s<16;s++){var a=r[s],l=o[s];if(Math.abs(l-a)>1e-4*Math.max(1,Math.min(Math.abs(a),Math.abs(l))))return!1}return!0}(e,l,c,h)&&(this.offsets[3*d]=l.x,this.offsets[3*d+1]=l.y,this.offsets[3*d+2]=l.z,this.rotations[4*d]=c.x,this.rotations[4*d+1]=c.y,this.rotations[4*d+2]=c.z,this.rotations[4*d+3]=c.w,this.scalings[3*d]=h.x,this.scalings[3*d+1]=h.y,this.scalings[3*d+2]=h.z,(0,r.writeIdToBuffer)(t,this.ids,3*d),d++,!0))},this.finish=function(){if(0==d)return null;let e,t,n,r;return d{"use strict";i.r(t),i.d(t,{ModelIteratorTexQuad:()=>w,TexQuadConfig:()=>A});var n=i(55280),r=i(76731),o=i(71082),s=i(37365),a=i(72091);function l(){this.offsetX=0,this.offsetY=0,this.scaleX=1,this.scaleY=1}function c(){var e=[],t=0;const i=new l;function n(e,t){var n=t||i;const r=[n.offsetX,n.offsetY,n.offsetX+n.scaleX,n.offsetY,n.offsetX+n.scaleX,n.offsetY+n.scaleY,n.offsetX,n.offsetY+n.scaleY],o=e.getAttribute("uv");if(o){for(let e=0;e0&&"number"==typeof this.tileSize&&this.tileSize>0&&"number"==typeof this.maxLevel&&this.maxLevel>0&&"number"==typeof this.texWidth&&this.texWidth>0&&"number"==typeof this.texHeight&&this.texHeight>0},this.initForSimpleImage=function(e){this.urlPattern=decodeURIComponent(e),this.maxLevel=0,this.levelOffset=0,this.scale=1,this.tileSize=-1,this.texWidth=-1,this.texHeight=-1,this.isSimpleImage=!0},this.isLevelPresent=function(e){return!this.skippedLevels[e]},this.initFromLoadOptions=function(e,t,i,n){if(this.urlPattern=decodeURIComponent(e),this.textureLoader=i,this.options=n,t){this.tileSize=t.tileSize,this.maxLevel=(r=t.texWidth,o=t.texHeight,s=t.tileSize,a=Math.ceil(Math.log2(r)),l=Math.ceil(Math.log2(o)),Math.max(a,l)-Math.log2(s)),this.texWidth=t.texWidth,this.texHeight=t.texHeight,this.levelOffset=t.levelOffset,this.zips=t.zips;const e=!(!t.paperWidth||!t.paperHeight);this.fitPaperSize=t.fitPaperSize&&e,this.paperHeight=t.paperHeight,this.scale=this.fitPaperSize?t.paperWidth*this.getRootTileSize()/this.texWidth:1,this.skippedLevels=function(e){var t=[];if(e.zips){i=(i=(i=(i=e.urlPattern.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")).replace(/\\{x\\}/,"[0-9]+")).replace(/\\{y\\}/,"[0-9]+")).replace(/\\{z\\}/,"([0-9]+)");var i=new RegExp("^"+i+"$");t.length=e.maxLevel+1,t.fill(!0);var n=0;e.zips.forEach((function(r){Object.keys(r.fileTable).forEach((function(r){var o=i.exec(r);if(o&&o[1]){var s=parseInt(o[1])-e.levelOffset;s>=0&&s<=e.maxLevel&&(t[s]=!1,++n)}}))})),0===n&&(t.length=0,h.logger.info("No leaflet levels found - assume all are present"))}return t}(this),"number"==typeof t.maxLevel&&function(e,t,i){for(;i>0&&e.skippedLevels[i];)--i;var n=t-i;n>0&&(e.texWidth>>=n,e.texHeight>>=n,e.maxLevel=i)}(this,this.maxLevel,t.maxLevel),this.maxActiveTiles=t.maxActiveTiles||this.maxActiveTiles,this.cacheSize=t.cacheSize||this.cacheSize}else this.options&&(this.options.loadOptions={});var r,o,s,a,l}}function w(e,t){this.isModelIteratorTexQuad=!0;var i=e,n=1,s=e.getBBox(),h=[];let f=null,p=null;const m=new a.Matrix4,g=new a.Matrix4,v=new a.Matrix4,A=new a.Vector3,w=new a.Quaternion,T=new a.Vector3,M=new Autodesk.Viewing.Private.FrustumIntersector;let C,P=1,D=1;const L=new a.Vector4(0,0,0,0),I=(new a.Vector4).copy(L);let R=0;var O=t,N=null,F=!1,U=!1,B=!1,k=new a.Color,V=[],G=[],z=[];this.registerView=function(){var e=h.indexOf(void 0);-1===e&&(e=h.length);var t=new a.Scene;return t.ignoreFadeMaterial=!0,i.placementTransform&&t.matrix.copy(i.placementTransform),t.matrixAutoUpdate=!1,h[e]=t,z[e]=0,V[e]=!0,e},this.registerView();var H=0,W=0,j=!1,q=[],X=null,Y=!1,K=new c;function Q(e){var t=i.maxLevel-e;return i.texWidth>>t}function Z(e){var t=i.maxLevel-e;return i.texHeight>>t}function $(e){var t=Q(e.level),n=Z(e.level),r=e.x*i.tileSize,o=e.y*i.tileSize;return r>=t||o>=n}function J(e){var t=Q(e.level),n=Z(e.level),r=e.x*i.tileSize,o=e.y*i.tileSize,s=Math.max(0,Math.min(i.tileSize,t-r)),l=Math.max(0,Math.min(i.tileSize,n-o)),c=1*i.tileSize;return new a.Vector2(s/c,l/c)}function ee(e){return i.scale/(1<0&&(r=!1),r)break;i=i.getParent()}return i}(e);t=ce(o).material;var s=function(e,t){var i=1<0}),ge=function(){var e=new a.Vector3,t=new a.Vector3;return function(i,n,r){var o=ee(i.level);he(i,e),ue(i,t);var s=u.SceneMath.pointToMinMaxBoxDistance2(r,e,t);return(me(i,n)?100:1)*(o*o)/(s=Math.max(s,1e-4))}}(),ve=function(){const e=new a.Vector3,t=new a.Vector3;return function(n,r,o){he(n,e),ue(n,t);const s=Math.abs(function(e,t,i,n){var r=e.clone();return r.max(i),r.min(n),r.sub(e).dot(t)}(r.position,o,e,t)),a=i.getPixelRatio(),l=r.pixelsPerUnitAtDistance(s)*a;return(t.y-e.y)*l}}();function ye(e,t){this.tile=e,this.prio=t}function be(e,t){return e.prio>t.prio}function xe(e,t){var i=G[(0,r.tile2Index)(e)];i&&i.timeStamps[t]!==z[t]&&(i.timeStamps[t]=z[t],H++)}function _e(e,t,i){e.sort((function(e,n){var r=ge(e,t,i);return ge(n,t,i)-r}));for(var n=0,r=0;r=5)break;le(e[r]),n++}}return n}function Ee(e){if(e&&e.mesh&&e.mesh.material){var t=e.mesh.material;O.removeMaterial(t.name),t.map.dispose(),t.map.needsUpdate=!0;t.dispatchEvent({type:"dispose"}),t.needsUpdate=!0}}function Se(e){for(var t=0;t0,l=h[n];var c,u;for(({camera:t,frustum:e}=function(e,t,i){const n=e.matrixWorld;if(f?n.multiplyMatrices(f,e.matrix):n.copy(e.matrix),n.equals(v))P=1,D=1;else{n.decompose(A,w,T),m.makeRotationFromQuaternion(w),m.setPosition(A),P=T.x,D=T.y,C=i.clone(C),g.copy(m).invert(),C.transformCurrentView(g),C.updateCameraMatrices();const e=t.cutPlanes,r=t.areaCullThreshold;(t=M).areaCullThreshold=r,t.reset(C,e),i=C}return{camera:i,frustum:t}}(l,e,t)),c=0;c0;){if(u=d.get(0).tile,d.removeAt(0),$(u))continue;var L=!0;u.level===i.maxLevel&&(L=!1);ve(u,t,b)i.maxActiveTiles&&(L=!1),L)for(let i=0;i<4;i++){const n=u.getChild(i);y=ge(n,e,t.position),d.add(new ye(n,y))}else I?x.push(u):E.push(u)}var R=0;j=!1;var O=!0;for(c=0;c=i.maxActiveTiles);c++)if(re(u=E[c]))for(let e=0;e<=u.level;e++){if(xe(u.getParentAtLevel(e),n),H>i.maxActiveTiles)break}else U.push(u),H++;if(F+=_e(U,e,t.position),Y){for(U=[],c=0;c0){var B=q.splice(0,q.length);setTimeout((function(){for(var e=0;e0&&!h[t-1];)t--;h.length=t,z.length=t,V.length=t},this._updateMaterialVisibility=function(e){!e.defines.GHOSTED^!U&&(U?e.defines.GHOSTED=1:delete e.defines.GHOSTED,e.needsUpdate=!0)},this.setVisibility=function(e){U=!e,O.forEachInModel(R,!1,(e=>{this._updateMaterialVisibility(e)}))},this._updateMaterialSelection=function(e){e.uniforms.selectionColor.value.set(k.r,k.g,k.b,B?.6:0)},this.highlightSelection=function(e){B=e,k=arguments.length>1&&void 0!==arguments[1]?arguments[1]:k,O.forEachInModel(R,!1,(e=>{this._updateMaterialSelection(e)}))}}},76731:(e,t,i)=>{"use strict";function n(e,t,i){this.level=e,this.x=t,this.y=i}function r(e){var t=((1<<2*e.level)-1)/3,i=1<n,index2Tile:()=>o,tile2Index:()=>r}),n.prototype={constructor:n,copy:function(){return new n(this.level,this.x,this.y)},isValid:function(){return Number.isInteger(this.level)&&this.level>=0&&Number.isInteger(this.x)&&Number.isInteger(this.y)},getChild:function(e){var t=1&e?1:0,i=2&e?1:0;return new n(this.level+1,2*this.x+t,2*this.y+i)},getParent:function(){return 0===this.level?null:new n(this.level-1,Math.floor(this.x/2),Math.floor(this.y/2))},getParentAtLevel:function(e){if(e<0||e>this.level)return null;var t=this.level-e;return new n(e,Math.floor(this.x>>t),Math.floor(this.y>>t))},toString:function(){return"("+this.level+", "+this.x+", "+this.y+")"},equals:function(e,t,i){return e instanceof n?this.equals(e.level,e.x,e.y):this.level===e&&this.x===t&&this.y===i}}},44745:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Renderer:()=>xt});const n=67108864,r=16777216,o=33554432;let s=1;function a(e){this.starts=new Map,this.ends=new Map,this.freeSize=0,this.addFreeBlock(0,e)}a.prototype.addFreeBlock=function(e,t){let i=e,n=e+t;this.freeSize+=t;let r=this.starts.get(n);void 0!==r&&(this.starts.delete(n),n=r);let o=this.ends.get(i);void 0!==o&&(this.ends.delete(i),i=o),this.starts.set(i,n),this.ends.set(n,i)},a.prototype.findBlock=function(e){let t,i;for(const[n,r]of this.starts)if(r-n>=e){t=n,i=r;break}if(void 0===t)return;this.freeSize-=e;let n=t+e;return this.starts.delete(t),n===i?this.ends.delete(i):(this.starts.set(n,i),this.ends.set(i,n)),t},a.prototype.getFreeSize=function(){return this.freeSize};class l{#Ze={};#$e=[];#Je=[];#et;constructor(e){this.#et=e}vAlloc(e,t){let i,r,o=this.#Ze[t];if(o)for(let t=o.length-1;t>=0;t--)if(r=o[t].heap.findBlock(e),void 0!==r){i=o[t];break}if(void 0===r){i={buffer:this.#et.createBuffer({size:n,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!1}),heap:new a(n),id:s++},this.#Ze[t]?this.#Ze[t].push(i):this.#Ze[t]=[i],r=i.heap.findBlock(e)}return[i,r/t]}iAlloc(e){let t,i;for(let n=this.#$e.length-1;n>=0;n--)if(i=this.#$e[n].heap.findBlock(e),void 0!==i){t=this.#$e[n];break}if(void 0===i){t={buffer:this.#et.createBuffer({size:r,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!1}),heap:new a(r),id:s++},this.#$e.push(t),i=t.heap.findBlock(e)}return[t,i]}mAlloc(e){let t,i;for(let n=this.#Je.length-1;n>=0;n--)if(i=this.#Je[n].heap.findBlock(e),void 0!==i){t=this.#Je[n];break}if(void 0===i){t={buffer:this.#et.createBuffer({size:o,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),stride:e,heap:new a(o),id:s++},this.#Je.push(t),i=t.heap.findBlock(e)}return[t,i]}gFree(e){e.__gpuvb&&(e.__gpuvb.heap.addFreeBlock(e.__gpuvbBaseVertex*e.vbstride*4,e.__gpuvbSize),e.__gpuvb=void 0),e.__gpuib&&(e.__gpuib.heap.addFreeBlock(e.__gpuibBaseIndex<e.ib.buffer.byteLength){console.log("OUT OF BOUNDS FIX",a.offset,o);let t=new Uint16Array(new ArrayBuffer(o));t.set(e.ib),this.#et.queue.writeBuffer(a.buffer,l,t.buffer,0,o)}else this.#et.queue.writeBuffer(a.buffer,l,e.ib.buffer,e.ib.byteOffset,o);e.iblines&&this.#et.queue.writeBuffer(a.buffer,l+o,e.iblines.buffer,e.iblines.byteOffset,s),e.__gpuib=a,e.ib instanceof Uint16Array?(e.__gpuibType="uint16",e.__gpuibShift=1,e.iblines&&(e.__gpuibLinesOffset=o/2)):e.ib instanceof Uint32Array?(e.__gpuibType="uint32",e.__gpuibShift=2,e.iblines&&(e.__gpuibLinesOffset=o/4)):console.warn("unknown index buffer type"),e.__gpuibBaseIndex=l>>e.__gpuibShift,e.__gpuibSize=o+s,e.vbNeedsUpdate=!1,e.addEventListener("dispose",this.#ot)}draw(e,t,i){t.__gpuvb&&!t.vbNeedsUpdate||this.initVB(t);const n=t.__gpuvb,r=t.__gpuib;this.#nt!==e?(e.setVertexBuffer(0,n.buffer),this.#tt=n.buffer,e.setIndexBuffer(r.buffer,t.__gpuibType),this.#it=r.buffer,this.#nt=e):(n.buffer!==this.#tt&&(e.setVertexBuffer(0,n.buffer),this.#tt=n.buffer),r.buffer!==this.#it&&(e.setIndexBuffer(r.buffer,t.__gpuibType),this.#it=r.buffer)),e.drawIndexed(t.ib.length,1,t.__gpuibBaseIndex,t.__gpuvbBaseVertex,i)}drawEdges(e,t,i){if(!t.iblines)return;t.__gpuvb||this.initVB(t);const n=t.__gpuvb,r=t.__gpuib;this.#nt!==e?(e.setVertexBuffer(0,n.buffer),this.#tt=n.buffer,e.setIndexBuffer(r.buffer,t.__gpuibType),this.#it=r.buffer,this.#nt=e):(n.buffer!==this.#tt&&(e.setVertexBuffer(0,n.buffer),this.#tt=n.buffer),r.buffer!==this.#it&&(e.setIndexBuffer(r.buffer,t.__gpuibType),this.#it=r.buffer));let o=t.__gpuibBaseIndex+t.__gpuibLinesOffset;e.drawIndexed(t.iblines.length,1,o,t.__gpuvbBaseVertex,i)}}var h=i(43851);const u="//See documentation in Fxaa3_11.h\n//This shader uses the CONSOLE PC version of the algorithm, adapted for WebGPU.\n//We use Luma encoded into the alpha channel from the previous rendering pass\n//Since WGSL doesn't currently allow texture reads from non-uniform code paths,\n//a small adaptation is necessary to avoid the early out\n\ndiagnostic(off, derivative_uniformity);\n\n@group(0) @binding(0) var tex: texture_2d;\n@group(0) @binding(1) var smpl: sampler;\n\n@id(0) override invWidth = (1.0/1024.0);\n@id(1) override invHeight = (1.0/1024.0);\n\nfn FxaaTexTop(p: vec2f) -> vec4f {\n\treturn textureSample(tex, smpl, p);\n}\n\n/*============================================================================\n\n\t\t\t\t\t\t FXAA3 CONSOLE - PC VERSION\n\n------------------------------------------------------------------------------\nInstead of using this on PC, I'd suggest just using FXAA Quality with\n\t#define FXAA_QUALITY__PRESET 10\nOr\n\t#define FXAA_QUALITY__PRESET 20\nEither are higher qualilty and almost as fast as this on modern PC GPUs.\n============================================================================*/\n\nconst fxaaConsoleEdgeThresholdMin = 0.05;\nconst fxaaConsoleEdgeThreshold = 0.125;\nconst fxaaConsoleEdgeSharpness = 8.0;\nconst fxaaConsoleRcpFrameOpt = 0.33; //0.33 (sharper) or 0.5 (default) // This affects sub-pixel AA quality and inversely sharpness.\nconst fxaaConsoleRcpFrameOpt2 = 2.0;\n\n/*--------------------------------------------------------------------------*/\n@fragment fn FxaaPixelShader(\n\t@builtin(position) coord : vec4f,\n\t@location(0) @interpolate(linear) pos: vec2f\n) -> @location(0) vec4f {\n\n\tvar invDim = vec2f(invWidth, invHeight);\n\n/*--------------------------------------------------------------------------*/\n\t//Luma encoded in alpha component of input texture\n\tvar lumaNw = (textureSample(tex, smpl, pos, vec2i(-1,-1))).w;\n\tvar lumaSw = (textureSample(tex, smpl, pos, vec2i(-1, 1))).w;\n\tvar lumaNe = (textureSample(tex, smpl, pos, vec2i( 1,-1))).w;\n\tvar lumaSe = (textureSample(tex, smpl, pos, vec2i( 1, 1))).w;\n/*--------------------------------------------------------------------------*/\n\tvar rgbyM = FxaaTexTop(pos);\n\tvar lumaM = rgbyM.w;\n/*--------------------------------------------------------------------------*/\n\tvar lumaMaxNwSw = max(lumaNw, lumaSw);\n\tlumaNe += 1.0/384.0;\n\tvar lumaMinNwSw = min(lumaNw, lumaSw);\n/*--------------------------------------------------------------------------*/\n\tvar lumaMaxNeSe = max(lumaNe, lumaSe);\n\tvar lumaMinNeSe = min(lumaNe, lumaSe);\n/*--------------------------------------------------------------------------*/\n\tvar lumaMax = max(lumaMaxNeSe, lumaMaxNwSw);\n\tvar lumaMin = min(lumaMinNeSe, lumaMinNwSw);\n/*--------------------------------------------------------------------------*/\n\tvar lumaMaxScaled = lumaMax * fxaaConsoleEdgeThreshold;\n/*--------------------------------------------------------------------------*/\n\tvar lumaMinM = min(lumaMin, lumaM);\n\tvar lumaMaxScaledClamped = max(fxaaConsoleEdgeThresholdMin, lumaMaxScaled);\n\tvar lumaMaxM = max(lumaMax, lumaM);\n\tvar dirSwMinusNe = lumaSw - lumaNe;\n\tvar lumaMaxSubMinM = lumaMaxM - lumaMinM;\n\tvar dirSeMinusNw = lumaSe - lumaNw;\n\tvar earlyOut = 0.0;\n\tif(lumaMaxSubMinM < lumaMaxScaledClamped) {\n\t\treturn vec4f(rgbyM.xyz, 1.0);\n\t}\n/*--------------------------------------------------------------------------*/\n\tvar dir: vec2f;\n\tdir.x = dirSwMinusNe + dirSeMinusNw;\n\tdir.y = dirSwMinusNe - dirSeMinusNw;\n/*--------------------------------------------------------------------------*/\n\tvar dir1 = normalize(dir.xy);\n\tvar rcpFrameOpt = fxaaConsoleRcpFrameOpt * invDim;\n\tvar rgbyN1 = FxaaTexTop(pos - dir1 * rcpFrameOpt);\n\tvar rgbyP1 = FxaaTexTop(pos + dir1 * rcpFrameOpt);\n/*--------------------------------------------------------------------------*/\n\tvar dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * fxaaConsoleEdgeSharpness;\n\tvar dir2 = clamp(dir1.xy / dirAbsMinTimesC, vec2f(-2.0), vec2f(2.0));\n/*--------------------------------------------------------------------------*/\n\tvar rcpFrameOpt2 = fxaaConsoleRcpFrameOpt2 * invDim;\n\tvar rgbyN2 = FxaaTexTop(pos - dir2 * rcpFrameOpt2);\n\tvar rgbyP2 = FxaaTexTop(pos + dir2 * rcpFrameOpt2);\n/*--------------------------------------------------------------------------*/\n\tvar rgbyA = rgbyN1 + rgbyP1;\n\tvar rgbyB = ((rgbyN2 + rgbyP2) * 0.25) + (rgbyA * 0.25);\n/*--------------------------------------------------------------------------*/\n\tvar twoTap = (rgbyB.w < lumaMin) || (rgbyB.w > lumaMax);\n\tif(twoTap) {\n\t\treturn vec4f(rgbyA.xyz * 0.5, 1.0);\n\t} else {\n\t\treturn vec4f(rgbyB.xyz, 1.0);\n\t}\n}\n/*==========================================================================*/\n\n";var d=i(29251),f=i(19698);const p="struct BlendUniforms {\n highlightColor: vec4f, //0\n selectionColor: vec4f, //4\n\n objectId: i32, //8\n modelId: i32, //9\n glowFlagInt: i32, //10\n glowCompFunc: i32, //11\n highlightIntensity: f32, //12\n useAO: i32, //13\n encodeLuma: i32, //14\n aoBias: f32, //15\n edgeObjectId: i32, //16\n edgeModelId: i32, //17\n useOverlay: i32 //18 //TODO: combine with useAO into single bitmask uniform\n\n //Enable these if the forward pass renders in HDR-linear target and the Blend shader is doing the tone mapping\n //exposureBias: f32,\n //toneMapMethod: i32,\n}\n@group($0) @binding(0) var u : BlendUniforms;\n";class m extends f.D{constructor(){super(null,32,!0,!1)}init(e){this.setDevice(e)}setAOEnabled(e){this.setInt(13,e?1:0)}setFXAAEnabled(e){let t=e?1:0;this.setInt(14,t)}setHighlightObjectId(e){this.setInt(8,e)}setHighlightModelId(e){this.setInt(9,e)}setHighlightIntensity(e){this.setFloat(12,e)}getHighlightIntensity(){return this.getFloat(12)}setRolloverHighlightColor(e){this.setColor(0,e,1)}setEdgeHighlightObjectId(e,t){this.setInt(16,e),this.setInt(17,t)}setGlowFlag(e){this.setInt(10,e)}setGlowOptions(e,t){this.setInt(11,t)}setAOBias(e){this.setFloat(15,e)}setSelectionColor(e){this.setColor(4,e,1)}setUseOverlay(e){this.setInt(18,e?1:0)}}const g="//post-gamma luminance\nfn luminance_post(rgb: vec3f) -> f32 {\n\treturn dot(rgb, vec3f(0.299, 0.587, 0.114));\n}\n\n//pre-gamma luminance\nfn luminance_pre(rgb: vec3f) -> f32 {\n\treturn dot(rgb, vec3f(0.212671, 0.715160, 0.072169));\n}\n\n\nfn xyz2rgb(xyz: vec3f) -> vec3f {\n\t//XYZ -> RGB conversion matrix using HDTV constants\n\tvar R = vec3f( 3.240479, -1.537150, -0.498535);\n\tvar G = vec3f(-0.969256, 1.875992, 0.041556);\n\tvar B = vec3f( 0.055648, -0.204043, 1.057311);\n\n\tvar rgb: vec3f;\n\trgb.b = dot(xyz, B);\n\trgb.g = dot(xyz, G);\n\trgb.r = dot(xyz, R);\n\n\treturn rgb;\n}\n\nfn rgb2xyz(rgb: vec3f) -> vec3f {\n\t//RGB -> XYZ conversion matrix using HDTV constants\n\tvar X = vec3f(0.412453, 0.35758, 0.180423);\n\tvar Y = vec3f(0.212671, 0.71516, 0.0721688);\n\tvar Z = vec3f(0.0193338, 0.119194, 0.950227);\n\n\tvar xyz: vec3f;\n\txyz.x = dot(rgb, X);\n\txyz.y = dot(rgb, Y);\n\txyz.z = dot(rgb, Z);\n\n\treturn xyz;\n}\n\nfn xyz2xyY(xyz: vec3f) -> vec3f {\n\tvar sum = xyz.x + xyz.y + xyz.z;\n\n\t//Note in case of division by 0, the hardware\n\t//should output zero for sum, so we are still ok with the result\n\tsum = 1.0 / sum;\n\n\tvar xyY: vec3f;\n\txyY.z = xyz.y;\n\txyY.x = xyz.x * sum;\n\txyY.y = xyz.y * sum;\n\n\treturn xyY;\n}\n\nfn xyY2xyz(xyY: vec3f) -> vec3f {\n\tvar x = xyY.x;\n\tvar y = xyY.y;\n\tvar Y = xyY.z;\n\n\tvar xyz: vec3f;\n\txyz.y = Y;\n\txyz.x = x * (Y / y);\n\txyz.z = (1.0 - x - y) * (Y / y);\n\n\treturn xyz;\n}\n\n\n\n//OGS/RaaS Cannon tonemappong with ColorPerserving enabled.\nfn toneMapCanon_T(x: f32) -> f32\n{\n\t// this function fits the measured Canon sigmoid *without gamma correction* through 0.0\n\tvar xpow = pow(x, 1.60525727);\n\tvar tmp = ((1.05542877*4.68037409)*xpow) / (4.68037409*xpow + 1.0);\n\treturn clamp(tmp, 0.0, 1.0);\n}\n\n\nconst Shift = 1.0 / 0.18;\n\n//Best fit of John Hable's generalized filmic function parameters to the Canon curve\n//This is a significantly better and cheaper to compute fit than the power and polynomial\n//least squares fits from OGS/RaaS (which have larger max and average error, and also go negative near\n//the origin).\nfn toneMapCanonFilmic_NoGamma(y: f32) -> f32 {\n\n\t//This extra exposure by 1.0/0.18 mimics what is also done in OGS's implementation\n\t//and the curve fit was done with this scale in mind.\n\tvar x = y;\n\tx *= Shift;\n\n\tconst A = 0.2; //shoulder strength\n\tconst B = 0.34; //linear strength\n\tconst C = 0.002; //linear angle\n\tconst D = 1.68; //toe strength\n\tconst E = 0.0005; //toe numerator\n\tconst F = 0.252; //toe denominator (E/F = toe angle)\n\tconst scale = 1.0/0.833837;\n\n\treturn (((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F) * scale;\n}\n\n\n//Same as above but with 2.2 gamma built into the fit and working on the\n//whole RGB triplet at once (i.e. non color preserving version).\nfn toneMapCanonFilmic_WithGamma(y: vec3f) -> vec3f {\n\n\t//This extra exposure by 1.0/0.18 mimics what is also done in OGS's implementation\n\t//and the curve fit was done with this scale in mind.\n\tvar x = y;\n\tx *= Shift;\n\n\t//Best overall error params\n\t/*\n\tconst float A = 0.2;\n\tconst float B = 0.23;\n\tconst float C = 0.147;\n\tconst float D = 0.26;\n\t//const float E = 0.0;\n\tconst float F = 0.22;\n\tconst float scale = 1.0/0.900202;\n\t*/\n\n\t//Best max deviation params\n\tconst A = 0.27;\n\tconst B = 0.29;\n\tconst C = 0.052;\n\tconst D = 0.2;\n\t//const E = 0.0;\n\tconst F = 0.18;\n\tconst scale = 1.0/0.897105;\n\n\treturn (((x*(A*x+C*B))/(x*(A*x+B)+D*F))) * scale;\n}\n\n\nfn toneMapCanonOGS_WithGamma_WithColorPerserving(x: vec3f) -> vec3f {\n\tvar outColor = x.rgb;\n\toutColor = min(outColor, vec3f(3.0));\n\tvar inLum = luminance_pre(outColor);\n\tif (inLum > 0.0) {\n\t\tvar outLum = toneMapCanon_T(inLum);\n\t\toutColor = outColor * (outLum / inLum);\n\t\toutColor = clamp(outColor, vec3f(0.0), vec3f(1.0));\n\t}\n\tconst gamma = 1.0/2.2;\n\toutColor = pow(outColor, vec3f(gamma));\n\treturn outColor;\n}\n",v="\nfn calculateHatchPatternRaw(hatchSlope: f32, hatchPeriod: f32, coord: vec2f ) -> f32 {\n\t//Note that this condition is inverted from the WebGL version, because\n\t//screen coordinates are Y-down in WebGPU, so the slope is inverted\n\tif (abs(hatchSlope) > 1.0) {\n\t\tvar hatchPhase = f32(coord.y - hatchSlope * coord.x);\n\t\tvar dist = abs(hatchPhase % hatchPeriod);\n\t\treturn dist;\n\t} else {\n\t\tvar hatchPhase = - f32(coord.y / hatchSlope + coord.x);\n\t\tvar dist = abs(hatchPhase % hatchPeriod);\n\t\treturn dist;\n\t}\n}\n\nfn calculateHatchPattern(hatchParams: vec2f, coord: vec2f, fragColor: vec4f, hatchTintColor: vec3f, hatchTintIntensity: f32 ) -> vec4f {\n\n\tvar dist = calculateHatchPatternRaw(hatchParams.x, hatchParams.y, coord);\n\tvar outColor: vec4f;\n\n\tif (dist < 1.0) {\n\t\toutColor = vec4f(0.0,0.0,0.0,1.0);\n\t} else {\n\t\toutColor = vec4f(mix(fragColor.xyz, hatchTintColor, hatchTintIntensity), fragColor.a);\n\t}\n\n\treturn outColor;\n}\n",y="@group(0) @binding(0) var tColor: texture_2d;\n@group(0) @binding(1) var tOverlay: texture_2d;\n@group(0) @binding(2) var tID: texture_2d;\n@group(0) @binding(3) var tID2: texture_2d;\n//@group(0) @binding(4) var tID3: texture_2d;\n@group(0) @binding(4) var tAO: texture_2d;\n\n$blendUniforms\n$tonemap\n$hatch\n\nfn toInt(v: vec4u) -> i32 {\n return i32(v.r | (v.g << 8) | (v.b << 16) | (v.a << 24));\n}\n\n// modify rgb by applying rollOver highlighting.\n// filterValue is an additonal multiplier for highlighting intensity. (always 1.0 if no spatial filter is used)\nfn applyHighlighting(inRgb: vec3f) -> vec3f {\n //rgb += highlightColor * filterValue * u.highlightIntensity * 0.20;\n var rgb = inRgb;\n rgb += vec3(1.0,1.0,1.0) * u.highlightIntensity * 0.20;\n return rgb;\n}\n\n//Color key based edge detection for selection set\nfn isSelectionColor(C : vec3f) -> bool {\n\n //Simple check that assumes the blue selection color\n if (C.b >= C.g && C.b >= C.r) {\n return true;\n }\n\n return false;\n/*\n var minS = min(u.selectionColor.r, min(u.selectionColor.g, u.selectionColor.b));\n var maxS = max(u.selectionColor.r, max(u.selectionColor.g, u.selectionColor.b));\n var satS = maxS - minS;\n var minC = min(C.r, min(C.g, C.b));\n var maxC = max(C.r, max(C.g, C.b));\n var satC = maxC - minC;\n // If one color has low saturation, they only match if both have low saturation.\n if (satC < .01 || satS < .01) {\n return false;\n }\n\n // Now compare the hue. We don't convert to a numeric hue, just\n // the vector representation.\n var S = (u.selectionColor.rgb - minS) / satS;\n var H = (C - minC) / satC;\n var D = H - S;\n var eps = .15;\n // We want to match the hue of selectionColor and C, but if the max component of C is\n // 1, then it may have been clamped which will change the hue. In this case the\n // middle colors should be higher than we expect, so we just make sure that\n // all of C's components are larger than selectionColor's.\n return (abs(D.r) + abs(D.g) + abs(D.b) < eps)\n || (maxC >= (1.0 - eps) && D.r >= -eps && D.g >= -eps && D.b >= -eps);\n */\n}\n\nfn sampleTargetSS(coord: vec2i, offset: vec2i) -> vec4f {\n return textureLoad(tOverlay, coord + offset, 0);\n}\n\nstruct SumNeighbors {\n hasEdge: i32,\n selectionPixel: vec4f,\n maxAlpha: f32\n}\nvar sum: SumNeighbors;\n\nfn checkEdgeSelection(ssCoord: vec2i, offX: i32, offY: i32) {\n var c = sampleTargetSS( ssCoord, vec2i(offX, offY));\n sum.maxAlpha = max(sum.maxAlpha, c.a);\n if (c.a <= 0.0) {\n sum.hasEdge++;\n }\n}\n\n// search neighbors to detect change in pixel coverage\n// the current pixel is outline if is selection && has empty neighbors\nfn overlayEdgeDetect(ssCoord: vec2i) -> vec4f {\n\n //Note that the sampled color here has pre-multiplied alpha,\n //but we don't need to correct for that with the current isSelectionColor check\n var center = sampleTargetSS(ssCoord, vec2i(0));\n var paintOutline = false;\n\n if (center.a > 0.0 && isSelectionColor(center.rgb)) {\n checkEdgeSelection(ssCoord, -1,-1);\n checkEdgeSelection(ssCoord, 0,-1);\n checkEdgeSelection(ssCoord, 1,-1);\n\n checkEdgeSelection(ssCoord, -1, 0);\n checkEdgeSelection(ssCoord, 1, 0);\n\n checkEdgeSelection(ssCoord, -1, 1);\n checkEdgeSelection(ssCoord, 0, 1);\n checkEdgeSelection(ssCoord, 1, 1);\n\n checkEdgeSelection(ssCoord, -2,-2);\n checkEdgeSelection(ssCoord, -1,-2);\n checkEdgeSelection(ssCoord, 0,-2);\n checkEdgeSelection(ssCoord, 1,-2);\n checkEdgeSelection(ssCoord, 2,-2);\n\n checkEdgeSelection(ssCoord, -2,2);\n checkEdgeSelection(ssCoord, -1,2);\n checkEdgeSelection(ssCoord, 0,2);\n checkEdgeSelection(ssCoord, 1,2);\n checkEdgeSelection(ssCoord, 2,2);\n\n checkEdgeSelection(ssCoord, -2, -2);\n checkEdgeSelection(ssCoord, -2, -1);\n checkEdgeSelection(ssCoord, -2, 0);\n checkEdgeSelection(ssCoord, -2, 1);\n checkEdgeSelection(ssCoord, -2, 2);\n\n checkEdgeSelection(ssCoord, 2, -2);\n checkEdgeSelection(ssCoord, 2, -1);\n checkEdgeSelection(ssCoord, 2, 0);\n checkEdgeSelection(ssCoord, 2, 1);\n checkEdgeSelection(ssCoord, 2, 2);\n\n if (sum.hasEdge != 0) { // if has empty neighbors\n paintOutline = true;\n } else {\n center.a = -center.a; // special flag marking inside pixel\n }\n }\n\n // calculate outline color\n if (paintOutline) {\n var rgb = mix(sqrt(u.selectionColor.rgb), vec3f(1.0), 0.65);\n var a = 1.0; //make edge fully opaque so it's easier to see\n center = vec4f(rgb, a);\n }\n\n return center;\n}\n\nfn glowComp(c: i32) -> bool {\n if (u.glowCompFunc == 0) {\n return c == u.glowFlagInt;\n } else {\n return (c != -1) && ((c & u.glowFlagInt) != 0);\n }\n}\n\nvar hasEdgeGlow: i32;\n\nfn checkEdgeId(ssCoord: vec2i, offX: i32, offY: i32, W: i32) {\n //See corresponding comment in UberShader. We currently don't have enough room\n //to encode the object flags in a separate render target, so we put half of it\n //in the upper 2 bytes of the modelId render target (tID2). We need to find a solution\n //for the remaining two bytes, or an alternative solution that doesn't require the extra\n //target during the main pass (e.g. lookup into data texture by model/object ID which we already know)\n var c = toInt(textureLoad(tID2, ssCoord + vec2i(offX, offY), 0)) >> 16;\n if (glowComp(c)) {\n hasEdgeGlow += W;\n }\n}\n\nconst glowColor = vec3f(1.0,1.0,0.0);\n\n// search 3x3 neighbors\n// the current pixel is outline if\n// (is selection && has empty neighbor) || (pixel is empty && has selection neighbor)\nfn glowEdgeDetect(ssCoord: vec2i) -> vec4f {\n\n hasEdgeGlow = 0;\n\n var paintOutline = false;\n\n checkEdgeId(ssCoord, -1,-1, 2);\n checkEdgeId(ssCoord, 0,-1, 4);\n checkEdgeId(ssCoord, 1,-1, 2);\n checkEdgeId(ssCoord,-1, 0, 4);\n checkEdgeId(ssCoord, 1, 0, 4);\n checkEdgeId(ssCoord,-1, 1, 2);\n checkEdgeId(ssCoord, 0, 1, 4);\n checkEdgeId(ssCoord, 1, 1, 2);\n\n checkEdgeId(ssCoord, 2, -1, 1);\n checkEdgeId(ssCoord, 2, 0, 1);\n checkEdgeId(ssCoord, 2, 1, 1);\n\n checkEdgeId(ssCoord, -2, -1, 1);\n checkEdgeId(ssCoord, -2, 0, 1);\n checkEdgeId(ssCoord, -2, 1, 1);\n\n checkEdgeId(ssCoord, -1, 2, 1);\n checkEdgeId(ssCoord, 0, 2, 1);\n checkEdgeId(ssCoord, 1, 2, 1);\n\n checkEdgeId(ssCoord, -1, -2, 1);\n checkEdgeId(ssCoord, 0, -2, 1);\n checkEdgeId(ssCoord, 1, -2, 1);\n\n if (hasEdgeGlow != 0) { // if has object neighbors\n paintOutline = true;\n }\n\n // calculate outline color\n if (paintOutline) {\n return vec4f(glowColor.rgb, min(1.0, f32(hasEdgeGlow)/6.0));\n }\n\n return vec4f(0.0);\n}\n\n\n@fragment\nfn main(\n @builtin(position) coord : vec4f,\n @location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n\n var pixelCoord = vec2i(floor(coord.xy));\n\n var outColor = textureLoad(tColor, pixelCoord, 0);\n\n if (u.useAO != 0) {\n var ao = textureLoad(tAO, pixelCoord, 0).r;\n outColor = vec4f(sqrt(outColor.rgb * outColor.rgb * min(1.0, ao+ u.aoBias)), outColor.a);\n }\n\n if (u.useOverlay != 0) {\n //composite in the overlays texture\n var overlay = overlayEdgeDetect(pixelCoord);\n\n // Negative alpha signals the inside overlay condition, as above.\n if (overlay.a < 0.0) {\n overlay.a = -overlay.a;\n\n if (overlay.a >= 0.99) {\n //Blend the overlay color with the luminance of the underlying\n //pixel so that we do not lose detail from any underlying texture map\n outColor = vec4f(vec3f(luminance_post(outColor.rgb)), 0.75);\n }\n }\n\n // For 3D, apply some hard-wired gamma correction.\n // Todo: When embedding 2D in 3D scenes, the gamma-correction will alter the 2D colors as well.\n //outColor = vec4f(outColor.rgb * (1.0 - overlay.a) + sqrt(overlay.rgb * overlay.a), outColor.a);\n //WEBGPU: do not gamma the overlay because it's currently using the UberShader that applies tone mapping + gamma in the pixel shader\n //Note we use pre-multiplied blend function here, because that's how our blend function is set up\n //to put pixels into the color targets\n outColor = vec4f(outColor.rgb * (1.0 - overlay.a) + overlay.rgb, outColor.a);\n\n //if (useOverlayAlpha != 0) {\n // In case texel (diffuse color) has 0 alpha, but overlay has something to render, make sure to update the alpha accordingly.\n outColor = vec4f(outColor.rgb, outColor.a + overlay.a * (1.0 - outColor.a));\n //}\n\n //test only\n //outColor = overlay;\n }\n\n //rollover highlighting\n if (u.objectId != 0) {\n var objectId = toInt(textureLoad(tID, pixelCoord, 0));\n var modelId = toInt(textureLoad(tID2, pixelCoord, 0)) & 0xffff;\n\n if (u.objectId == objectId && u.modelId == modelId) {\n outColor = vec4f(applyHighlighting(outColor.rgb), outColor.a);\n }\n }\n\n //glow effect\n if (u.glowFlagInt != 0) {\n\n var flagAtPixel = toInt(textureLoad(tID2, pixelCoord, 0)) >> 16;\n\n if (!glowComp(flagAtPixel)) {\n var outline = glowEdgeDetect(pixelCoord);\n outline.a *= u.highlightIntensity;\n outColor = vec4f(outColor.rgb * (1.0 - outline.a) + outline.rgb * outline.a, outColor.a);\n } else {\n var dist = calculateHatchPatternRaw(1.0, 10.0, coord.xy);\n var intensity : f32;\n if (dist <= 0.5) {\n intensity = 1.0;\n } else {\n intensity = 0.10;\n }\n //float intensity = 0.1;\n outColor = vec4f(mix(outColor.rgb, glowColor, intensity * u.highlightIntensity), outColor.a);\n }\n }\n\n\n //Encode luminance in A for the downstream FXAA pass\n //TODO: make this shader constant\n if (u.encodeLuma == 1) {\n outColor.a = luminance_post(outColor.rgb);\n }\n return outColor;\n}\n";function b(e){let t,i,n,r,o,s,a,l,c=e,f=navigator.gpu.getPreferredCanvasFormat(),b=new m,x=[],_=[];this.init=function(){t=c.getDevice(),b.init(t)},this.getBlendSettings=function(){return b},this.resize=function(e,m){!function(e,i){o||(o=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]})),n=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[o]}),vertex:{module:t.createShaderModule({code:h}),entryPoint:"mainFlipY"},fragment:{module:t.createShaderModule({code:u}),entryPoint:"FxaaPixelShader",targets:[{format:f}],constants:{0:1/e,1:1/i}},primitive:{topology:"triangle-list",cullMode:"back"}}),l||(l=t.createSampler({magFilter:"linear",minFilter:"linear"}))}(e,m),function(){var e;r||(r=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]})),i||(i=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[r,b.getLayout()]}),vertex:{module:t.createShaderModule({code:h}),entryPoint:"main"},fragment:{module:t.createShaderModule({code:(0,d.$wgsl)(y,{blendUniforms:(e=1,(0,d.$wgsl)(p,e+0||0)),tonemap:g,hatch:v})}),entryPoint:"main",targets:[{format:f}]},primitive:{topology:"triangle-list",cullMode:"back"}}));let n=c.getRenderTargets().getTargetViewsForBlend().map(((e,t)=>({binding:t,resource:e})));n.push({binding:n.length,resource:c.getSAO().getTargetView()}),a=t.createBindGroup({layout:r,entries:n}),s||(s={colorAttachments:[{view:void 0,clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]})}(),function(e,i){for(let e=0;e<2;e++)_[e]=c.getRenderTargets().getPostTarget(e).createView(),x[e]=t.createBindGroup({layout:o,entries:[{binding:0,resource:_[e]},{binding:1,resource:l}]})}()},this.run=function(e,r){b.setFXAAEnabled(r),b.upload();let o=t.createCommandEncoder();if(r){s.colorAttachments[0].view=_[0];let t=o.beginRenderPass(s);t.setPipeline(i),t.setBindGroup(0,a),t.setBindGroup(1,b.getBindGroup()),t.draw(3),t.end(),s.colorAttachments[0].view=e,t=o.beginRenderPass(s),t.setPipeline(n),t.setBindGroup(0,x[0]),t.draw(3),t.end()}else{s.colorAttachments[0].view=e;let t=o.beginRenderPass(s);t.setPipeline(i),t.setBindGroup(0,a),t.setBindGroup(1,b.getBindGroup()),t.draw(3),t.end()}t.queue.submit([o.finish()])}}const x="depth24plus",_={color:{operation:"add",srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha"},alpha:{operation:"add",srcFactor:"one",dstFactor:"one-minus-src-alpha"}};class E{#rt;#et;#st;#at;#lt;#ct;#ht;#ut;#dt;#ft;#pt=[0,0];#mt;#gt;#vt;#yt;#bt=!0;#xt=!1;#_t;#Et;#St;constructor(e){this.#rt=e}init(e){this.#et=this.#rt.getDevice(),this.#mt=navigator.gpu.getPreferredCanvasFormat(),this.#gt=e?"rgba16float":this.#mt}cleanup(){var e,t,i,n,r,o,s;null===(e=this.#at)||void 0===e||e.destroy(),null===(t=this.#st)||void 0===t||t.destroy(),null===(i=this.#ht)||void 0===i||i.destroy(),null===(n=this.#lt)||void 0===n||n.destroy(),null===(r=this.#ct)||void 0===r||r.destroy(),null===(o=this.#ut)||void 0===o||o.forEach((e=>null==e?void 0:e.destroy())),null===(s=this.#dt)||void 0===s||s.forEach((e=>null==e?void 0:e.destroy())),this.#at=null,this.#st=null,this.#ht=null,this.#lt=null,this.#ut=[],this.#dt=[]}resize(e,t){if(this.#_t=null,this.#Et=null,this.#St=null,this.#pt[0]=e,this.#pt[1]=t,this.#yt=null,this.cleanup(),0!==e&&0!==t){this.#st=this.#et.createTexture({size:[e,t],format:this.#gt,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}),this.#ft=this.#st.createView(),this.#at=this.#et.createTexture({size:[e,t],format:x,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.#ht=this.#et.createTexture({size:[e,t],format:this.#mt,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.#lt=this.#et.createTexture({size:[e,t],format:"rgb10a2unorm",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.#ct=this.#et.createTexture({size:[e,t],format:"rgb10a2unorm",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.#ut=new Array(2);for(let i=0;i0&&(s+=256-a);let l=s*n;var c;(!this.#vt||this.#vt.size<2*l)&&(null===(c=this.#vt)||void 0===c||c.destroy(),this.#vt=this.#et.createBuffer({size:2*l,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}));let h=this.#et.createCommandEncoder();return h.copyTextureToBuffer({texture:this.#ut[0],origin:[e,t]},{buffer:this.#vt,offset:0,bytesPerRow:s},[i,n]),h.copyTextureToBuffer({texture:this.#ut[1],origin:[e,t]},{buffer:this.#vt,offset:l,bytesPerRow:s},[i,n]),this.#et.queue.submit([h.finish()]),this.#vt.mapAsync(GPUMapMode.READ,0).then((()=>{let e=new Uint8Array(this.#vt.getMappedRange());!function(e,t,i,n,r){const o=e[0],s=e[1],a=r*n;for(let e=0;e0&&(i+=256-n);let r=i*t;var o;(!this.#vt||this.#vt.size<2*r)&&(null===(o=this.#vt)||void 0===o||o.destroy(),this.#vt=this.#et.createBuffer({size:2*r,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}));let s=this.#et.createCommandEncoder();return s.copyTextureToBuffer({texture:this.#ut[0],origin:[0,0]},{buffer:this.#vt,offset:0,bytesPerRow:i},[e,t]),s.copyTextureToBuffer({texture:this.#ut[1],origin:[0,0]},{buffer:this.#vt,offset:r,bytesPerRow:i},[e,t]),this.#et.queue.submit([s.finish()]),this.#vt.mapAsync(GPUMapMode.READ,0).then((()=>{let e=new Uint8Array(this.#vt.getMappedRange());this.#yt||(this.#yt=new Uint8Array(e.byteLength)),this.#yt.set(e),this.#vt.unmap(),this.#bt=!1,this.#xt=!1}))}readIdTargetPixelsSyncOrFail(e,t,i,n,r){var o;function s(){for(let e=0;e0&&(a+=256-l),((e,t,i,n,r,o,s)=>{const a=e[0],l=e[1],c=r*this.#pt[1],h=o||0,u=s||0;for(let e=0;e0&&void 0!==arguments[0]?arguments[0]:0,visibility:arguments.length>1&&void 0!==arguments[1]?arguments[1]:GPUShaderStage.FRAGMENT,texture:{sampleType:arguments.length>2&&void 0!==arguments[2]?arguments[2]:"float"}}}function L(){return{binding:arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,visibility:arguments.length>1&&void 0!==arguments[1]?arguments[1]:GPUShaderStage.FRAGMENT,sampler:{}}}function I(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return(0,d.$wgsl)(P,{bindGroup:e})}const R={NO_UNIFORMS:268435456,TEXTURE_MASK:255,MAP_DIFFUSE:1,MAP_SPECULAR:2,MAP_BUMP:4,MAP_NORMAL:8,MAP_ALPHA:16},O=new Float32Array(9);class N extends f.D{#et;#Pt;#Dt;#Lt;#It;constructor(e,t,i){super(e,40,!0,!1),this.#et=e,this.#Pt=i,this.#Dt=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT|GPUShaderStage.VERTEX,buffer:{}},D(1),L(2),D(3),L(4),D(5),L(6),D(7),L(8)]}),t?(this.#It||(this.#It=new C(e)),this.#Rt(t)):this.#Ot()}#Ot(){let e=this.#Pt.view,t=this.#Pt.sampler;this.#Lt=this.#et.createBindGroup({layout:this.#Dt,entries:[{binding:0,resource:{buffer:this.getBuffer()}},{binding:1,resource:e},{binding:2,resource:t},{binding:3,resource:e},{binding:4,resource:t},{binding:5,resource:e},{binding:6,resource:t},{binding:7,resource:e},{binding:8,resource:t}]})}#Nt(e,t){let i=e.offset,n=e.repeat;if(e.matrix)O.set(e.matrix.elements);else for(let e=0;e<9;e++)O[e]=e%4?0:1;O[6]+=i.x,O[7]+=i.y,O[0]*=n.x,O[3]*=n.x,O[1]*=n.y,O[4]*=n.y,this.setMatrix3x3(t,O)}#Rt(e){let t=0,i=[{binding:0,resource:{buffer:this.getBuffer()}}];const n=(n,r,o)=>{let s,a,l=e[n];l?((0,T.i1)(this.#et,this.#It,l),s=l.__gpuTexture.createView(),a=l.__gpuSampler,t|=r):(s=this.#Pt.view,a=this.#Pt.sampler),i.push({binding:o,resource:s}),i.push({binding:o+1,resource:a})};n("map",R.MAP_DIFFUSE,1),n("specularMap",R.MAP_SPECULAR,3),e.bumpMap?n("bumpMap",R.MAP_BUMP,5):n("normalMap",R.MAP_NORMAL,5),n("alphaMap",R.MAP_ALPHA,7);let r=e.map||e.specularMap;r&&this.#Nt(r,0);let o=e.normalMap||e.bumpMap;o&&this.#Nt(o,12);let s=e.alphaMap;return s&&this.#Nt(s,24),e.bumpMap&&(this.setFloat(36,e.bumpScale),this.setFloat(37,e.bumpScale)),e.normalMap&&(this.setFloat(36,e.normalScale.x),this.setFloat(37,e.normalScale.y)),this.upload(),this.#Lt=this.#et.createBindGroup({layout:this.#Dt,entries:i}),t}getLayout(){return this.#Dt}getBindGroup(){return this.#Lt}}function F(e){let t=0;return e.map&&(t|=R.MAP_DIFFUSE),e.specularMap&&(t|=R.MAP_SPECULAR),e.bumpMap&&(t|=R.MAP_BUMP),e.normalMap&&(t|=R.MAP_NORMAL),e.alphaMap&&(t|=R.MAP_ALPHA),t}function U(e){const t=e.target;t.__gpuMaterialUniforms&&(t.__gpuMaterialUniforms.getBuffer().destroy(),t.__gpuMaterialUniforms=void 0),t.removeEventListener("dispose",U)}let B;const k=512,V=96;function G(e){return(0,d.$wgsl)(A,{bindGroup:e})}function z(e,t,i){return 255*e.r|255*e.g<<8|255*e.b<<16|255*t<<24}function H(e){return 255*e.x|255*e.y<<8|255*e.z<<16|255*e.w<<24}function W(e,t){for(let i=0;ie.start-t.start));for(let e=0;en){if(t<=i+1){const e=this.#jt.fragments.length-r,n=e<=this.#Ut?e:this.#Ut,o=this.#et.createBuffer({size:n*V,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});this.#Ht.push(o),t++,this.#ui(this.#Gt,i+1,o)}this.#Wt[i++]=r+s,r+=s,o=a,n=this.#Ht[i].size/V}s=o}this.#Wt[i]=r+s}#mi(e,t){if(this.#jt.hasGlobalTransform||16&this.#jt.vizflags[e])this.#jt.getWorldMatrix(e,j),this.#Bt.set(j.elements,this.#li);else{const t=12*e,i=this.#jt.transforms;this.#Bt[this.#li]=i[t],this.#Bt[this.#li+1]=i[t+1],this.#Bt[this.#li+2]=i[t+2],this.#Bt[this.#li+3]=0,this.#Bt[this.#li+4]=i[t+3],this.#Bt[this.#li+5]=i[t+4],this.#Bt[this.#li+6]=i[t+5],this.#Bt[this.#li+7]=0,this.#Bt[this.#li+8]=i[t+6],this.#Bt[this.#li+9]=i[t+7],this.#Bt[this.#li+10]=i[t+8],this.#Bt[this.#li+11]=0,this.#Bt[this.#li+12]=i[t+9],this.#Bt[this.#li+13]=i[t+10],this.#Bt[this.#li+14]=i[t+11],this.#Bt[this.#li+15]=1}const i=this.#jt.fragments.fragId2dbId[e];this.#kt[this.#li+16]=i,this.#kt[this.#li+17]=this.#Gt,this.#kt[this.#li+18]=this.#jt.objectFlagsCB&&this.#jt.objectFlagsCB(i);const n=this.#jt.db2ThemingColor[i];n&&n.w>0?this.#kt[this.#li+19]=H(n):this.#kt[this.#li+19]=0;let r=80;return t&&(this.#Ft.setMaterialReference(this.#li,t),r=V),r}#Jt(e,t){if(this.#gi())return;const i=this.#mi(e,t),n=this.#Xt[e];this.#vi(n,0,i)}#ni(e,t,i){if(this.#gi())return;this.#Ft.setMaterialReference(this.#li,t);const n=this.#Xt[e];this.#vi(n,80,4),i||this.#rt.invalidateRenderBundles(this.#Vt)}#ti(e){if(this.#gi())return;this.#jt.getWorldMatrix(e,j),this.#Bt.set(j.elements,this.#li);const t=this.#Xt[e];this.#vi(t,0,64)}#ai(e,t){if(this.#gi())return;t.w>0?this.#kt[this.#li+19]=H(t):this.#kt[this.#li+19]=0;const i=this.#Xt[e];this.#vi(i,76,4)}updateBatch(e,t){let i,n;this.#li=0;let r=0,o=e;for(let s=e;s0&&this.#vi(o,0,r*V),this.#li=0}#gi(){return!!this.#ci||++this.#hi>1e3&&(this.#ci=!0,this.#oi(),!0)}resetUpdateHeuristic(){this.#hi=0,this.#ci=!1}#vi(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:V;const n=W(this.#Wt,e),r=this.#Ht[n],o=0===n?e:e-this.#Wt[n-1];this.#et.queue.writeBuffer(r,o*V+t,this.#Bt.buffer,t,i)}}class X extends l{#rt;#et;#Ft;#yi=new Float32Array(12288);#bi=new Int32Array(this.#yi.buffer);#Ht=new Map;#xi;#Ut;#Wt=new Map;#_i=new Map;#Ei=new Map;#Si;#Ai;#wi;#Ti;#Mi;#Ci=new Float32Array(8);#Pi=new Int32Array(this.#Ci.buffer);#Di;#Li;#Ii;#Ri=new Float32Array(4);#Oi=new Int32Array(this.#Ri.buffer);#Ni;#Fi;constructor(e){super(e.getDevice()),this.#rt=e,this.#et=this.#rt.getDevice(),this.MAX_BATCH=k,this.OBJECT_STRIDE_32=24;const t=this.#et.limits.maxStorageBufferBindingSize;this.#xi=Math.floor(t/V)*V,this.#Ut=this.#xi/V,this.#Ui(),this.#Di=this.#Bi.bind(this),this.#Li=this.#ki.bind(this)}#Vi(e){return this.#et.createBindGroup({layout:this.#Ni,entries:[{binding:0,resource:{buffer:e}},{binding:1,resource:{buffer:this.#Mi}},{binding:2,resource:{buffer:this.#Ii}}]})}#ui(e,t,i){const n=this.#_i.get(e);n&&(n[t]=this.#Vi(i))}#Ui(){this.#Ft=this.#et.createBuffer({size:49152,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.#Ii=this.#et.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});const e=this.mAlloc(0);e[0].stride=32,this.#Mi=e[0].buffer,this.#Ni=this.#et.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.#Fi=this.#Vi(this.#Ft)}#Gi(e){let t;if(e.__gpumb)t=e.__gpumbOffset;else{const i=this.mAlloc(32);e.__gpumb=i[0],e.__gpumbOffset=t=i[1];const n=()=>{this.mFree(e),e.removeEventListener("dispose",n)};e.addEventListener("dispose",n)}return t}#zi(e){this.#et.queue.writeBuffer(this.#Mi,e,this.#Ci.buffer,0,this.#Ci.byteLength)}addModel(e){if(this.#Ht.has(e.id))return;const t=e.getFragmentList().fragments.length*V;if(0===t)return;let i=Math.ceil(t/this.#xi);const n=511*(i-1)*V;i*this.#xi2&&void 0!==arguments[2]&&arguments[2];if(i||e.needsUpdate||e.uniformsNeedUpdate){this.#Gi(e);const n=e.opacity<0?1:0,r=e.doNotCut?2:0,o=e.alphaTest>0?4:0,s=e.hatchPattern?8:0;this.#Pi[0]=n|r|o|s|t<<16,e.uniformsNeedUpdate&&(e.__gpuDiffuse=z(e.color,Math.abs(e.opacity)),e.specular?e.__gpuSpecular=z(e.specular,e.reflectivity):e.__gpuSpecular=0,e.uniformsNeedUpdate=!1),this.#Pi[1]=e.__gpuDiffuse,this.#Pi[2]=e.__gpuSpecular,this.#Ci[3]=e.shininess,e.hatchPattern&&(this.#Ci[4]=e.hatchParams.x,this.#Ci[5]=e.hatchParams.y,this.#Ci[6]=e.hatchTintIntensity),this.#Pi[7]=((e.heatmapSensorOffset??0)<<8)+e.heatmapSensorCount??0,this.#zi(e.__gpumbOffset),i||(e.needsUpdate=!1)}}setOneMaterialData2D(e,t){if(e.needsUpdate||e.uniformsNeedUpdate){this.#Gi(e);const i=e.opacity<0?1:0,n=e.doNotCut?2:0,r=e.alphaTest>0?4:0,o=e.hatchPattern?8:0;this.#Pi[0]=i|n|r|o|t<<16,e.uniformsNeedUpdate&&(e.__gpuDiffuse=255*(e.opacity||1)<<24,e.uniformsNeedUpdate=!1),this.#Pi[1]=e.__gpuDiffuse,e.hatchPattern&&(this.#Ci[4]=e.hatchParams.x,this.#Ci[5]=e.hatchParams.y,this.#Ci[6]=e.hatchTintIntensity),this.#zi(e.__gpumbOffset),e.needsUpdate=!1}}setOneObjectData(e,t){let i=24*t;this.#yi.set(e.matrixWorld.elements,i),this.#bi[i+16]=e.dbId,this.#bi[i+17]=e.modelId,this.#bi[i+18]=e.objectFlags||0;const n=e.themingColor;n&&n.w>0?this.#bi[i+19]=H(n):this.#bi[i+19]=0,this.setMaterialReference(i,e.material)}updateBatch(e){var t;const i=e.frags.modelId,n=e.start,r=e.lastItem-n;null===(t=this.#Ei.get(i))||void 0===t||t.updateBatch(n,r)}setEdgeColorInt(e){e!==this.#Oi[0]&&(this.#Oi[0]=e,this.#et.queue.writeBuffer(this.#Ii,0,this.#Ri.buffer,0,this.#Ri.byteLength))}setDoNotCutOverride(e){e!==!!this.#Oi[1]&&(this.#Oi[1]=e,this.#et.queue.writeBuffer(this.#Ii,0,this.#Ri.buffer,0,this.#Ri.byteLength))}getBufferInt(){return this.#bi}getBufferFloat(){return this.#yi}getObjectStride(){return V}writeToQueue(e){let t=e*V;t=t+255&4294967040,this.#et.queue.writeBuffer(this.#Ft,0,this.#yi.buffer,0,t)}resetUpdateHeuristic(e){var t;null===(t=this.#Ei.get(e))||void 0===t||t.resetUpdateHeuristic()}getRenderIndex(e){return e-this.#wi}setBufferLimits(e,t){this.#Wt.set(e,t)}getBindGroup(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(-1!==e){this.MAX_BATCH=1/0;const i=this.#Wt.get(e),n=W(i,t);return e===this.#Si&&n===this.#Ai||(this.#Si=e,this.#Ai=n,this.#wi=0===n?0:i[n-1],this.#Ti=this.#_i.get(e)[n]),this.#Ti}return this.MAX_BATCH=k,this.#Fi}getLayout(){return this.#Ni}}var Y=i(65796);var K=i(12360);const Q=function(e){return(0,d.$wgsl)("const NUM_STOPS = $NUM_HEATMAP_STOPS;\n\n// Interleaving heatmap colors and stops for better alignment\nstruct ColorsAndStops {\n color: vec3f,\n stop: f32\n};\n\nstruct IBLSettings {\n envMapExposure: f32,\n exposureBias: f32,\n tonemapMethod: i32,\n numCutplanes: i32,\n heatmapAlpha: f32,\n pad1: u32,\n pad2: u32,\n pad3: u32,\n colorsAndStops: array\n}\n@group($bindGroupNumber) @binding(0) var ibl : IBLSettings;\n@group($bindGroupNumber) @binding(1) var reflMap: texture_cube;\n@group($bindGroupNumber) @binding(2) var reflSampler: sampler;\n@group($bindGroupNumber) @binding(3) var irrMap: texture_cube;\n@group($bindGroupNumber) @binding(4) var irrSampler: sampler;\n@group($bindGroupNumber) @binding(5) var cutplanes: array; //TODO: could use variable length array of needed\n@group($bindGroupNumber) @binding(6) var heatmapSensors: array;\n\n//TODO: Add lights here if we want to support discrete lights\n\nfn checkCutPlanes(worldPosition: vec3f) {\n for (var i=0; i 0.0) {\n discard;\n }\n }\n}\n",{NUM_HEATMAP_STOPS:5,bindGroupNumber:e})};function Z(e){let t,i=e,n=(0,K.CreateCubeMapFromColors)({x:1,y:1,z:1},{x:1,y:1,z:1}),r=n,o=n;(0,T.rL)(n),(0,T.rL)(r),(0,T.rL)(o);let s,a,l,c,h=1,u=1,d=0,f=new Float32Array(28),p=new Int32Array(f.buffer),m=new Float32Array(24),g=0,v=!1;const y=new Float32Array(20);let b,x,_,E,S,A=!1;this.init=function(){t=i.getDevice(),s=t.createBuffer({size:f.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),c=t.createBuffer({size:m.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),_=t.createBuffer({size:64,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),a=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"cube"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"cube"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:5,visibility:GPUShaderStage.FRAGMENT,buffer:{}},{binding:6,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}}]})},this.setReflectionMap=function(e){e!==r&&(e||=n,(0,T.rL)(e),(0,T.el)(r),r=e,E=!0)},this.setIrradianceMap=function(e){e||=n,(0,T.rL)(e),(0,T.el)(o),o=e,E=!0},this.isComplete=function(){return r&&o},this.setEnvExposure=function(e){const t=Math.pow(2,e);t!==u&&(u=t,S=!0)},this.setExposureBias=function(e){let t=Math.pow(2,e);t!==h&&(h=t,S=!0)},this.setTonemapMethod=function(e){d!==e&&(d=e,S=!0)},this.setEnvRotation=function(e){},this.setCutPlanes=function(e){if(g!==((null==e?void 0:e.length)||0)&&(g=(null==e?void 0:e.length)||0,S=!0),!e)return;e.length>6&&console.warn("too many cut planes");let t=0;for(let i=0;i VertexOutput {\n\n\t\tvar objectUniforms = getObjectUniforms(instance);\n\n\t\tvar output : VertexOutput;\n\t\tvar pos4 = vec4f(in.position.x, in.position.y, in.position.z, 1.0);\n\n\t\tvar mvMatrix = uniforms.viewMatrix * objectUniforms.modelMatrix;\n\t\tvar mvPosition = mvMatrix * pos4;\n\n\t\toutput.Position = uniforms.projectionMatrix * mvPosition;\n\n\t\toutput.vViewPosition = -mvPosition.xyz;\n\t\toutput.vViewNormal = getNormalMatrix(mvMatrix) * decodeNormalInt(in.normal);\n\t\toutput.vWorldPosition = (objectUniforms.modelMatrix * pos4).xyz;\n\n#if $hasTextures\n\t#if $isUVW\n\t\toutput.uvw = textureUniforms.texMatrix * in.uvw;\n\t\toutput.uvwBump = textureUniforms.texMatrixBump * in.uvw;\n\t\toutput.uvwAlpha = textureUniforms.texMatrixAlpha * in.uvw;\n\t#else\n\t\toutput.uv = (textureUniforms.texMatrix * vec3f(in.uv, 1.0)).xy;\n\t\toutput.uvBump = (textureUniforms.texMatrixBump * vec3f(in.uv, 1.0)).xy;\n\t\toutput.uvAlpha = (textureUniforms.texMatrixAlpha * vec3f(in.uv, 1.0)).xy;\n\t#endif\n#else\n\t#if $isUVW\n\t\toutput.uvw = in.uvw;\n\t\toutput.uvwBump = in.uvw;\n\t\toutput.uvwAlpha = in.uvw;\n\t#endif\n#endif\n\t\toutput.instance = instance;\n\t\toutput.depth = mvPosition.z;\n#if $hasVertexColors\n\t\toutput.color = in.color;\n#endif\n\n\t\treturn output;\n\t}\n\n\tstruct PixelOutput {\n\t\t@location(0) color: vec4f,\n\t\t@location(1) normal: vec4f,\n\t\t@location(2) viewDepth: vec4f,\n\t\t@location(3) dbId: vec4u,\n\t\t@location(4) modelId: vec4u,\n\t\t//@location(5) objectFlags: vec4u\n\t}\n\n\n\t//Samples normal map texture (will be treated as either bump map or normal map depending on flags)\n\tfn GET_BUMPMAP(uv: vec2f) -> vec4f {\n\t\t//TODO: this ignores invert and clamp settings, see getMapChunk in WebGLProgram.js for details\n\t\treturn textureSample(mapNormal, smplNormal, uv);\n\t}\n\n\t// Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\n\t// http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\n\t// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\n\tfn dHdxy_fwd(vUvBump: vec2f) -> vec2f {\n\n\t\tvar dSTdx = dpdx( vUvBump );\n\t\tvar dSTdy = dpdy( vUvBump );\n\n\t\tvar Hll = textureUniforms.normalScale.x * GET_BUMPMAP(vUvBump).x;\n\t\tvar dBx = textureUniforms.normalScale.x * GET_BUMPMAP(vUvBump + dSTdx).x - Hll;\n\t\tvar dBy = textureUniforms.normalScale.x * GET_BUMPMAP(vUvBump + dSTdy).x - Hll;\n\n\t\treturn vec2f( dBx, dBy );\n\t}\n\n\tfn perturbNormalArb( surf_pos: vec3f, surf_norm: vec3f, dHdxy: vec2f ) -> vec3f {\n\n\t\tvar vSigmaX = dpdx( surf_pos );\n\t\tvar vSigmaY = dpdy( surf_pos );\n\t\tvar vN = surf_norm; // normalized\n\n\t\tvar R1 = cross( vSigmaY, vN );\n\t\tvar R2 = cross( vN, vSigmaX );\n\n\t\tvar fDet = dot( vSigmaX, R1 );\n\n\t\tvar vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\n\t}\n\n\t// Per-Pixel Tangent Space Normal Mapping\n\t// http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\tfn perturbNormal2Arb( eye_pos: vec3f, surf_norm: vec3f, vUvBump: vec2f ) -> vec3f {\n\n\t\tvar q0 = dpdx( eye_pos.xyz );\n\t\tvar q1 = dpdy( eye_pos.xyz );\n\t\tvar st0 = dpdx( vUvBump.xy );\n\t\tvar st1 = dpdy( vUvBump.xy );\n\n\t\tvar S = normalize( q0 * st1.y - q1 * st0.y );\n\t\tvar T = normalize( -q0 * st1.x + q1 * st0.x );\n\t\tvar N = normalize( surf_norm );\n\n\t\tvar mapN = GET_BUMPMAP(vUvBump).xyz * 2.0 - 1.0;\n\t\tmapN = vec3f(textureUniforms.normalScale * mapN.xy, mapN.z);\n\t\tvar tsn = mat3x3f( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\t}\n\n\n\tfn toIntVec(v: vec4f) -> vec4u\n\t{\n\t\treturn vec4u(v * 255.0);\n\t}\n\n\tfn Schlick_v3(v: vec3f, cosHV: f32) -> vec3f {\n\t\tvar facing = max(1.0 - cosHV, 0.0);\n\t\treturn v + (1.0 - v) * pow(facing, 5.0);\n\t}\n\n\tfn Schlick_f(v: f32, cosHV: f32) -> f32 {\n\t\tvar facing = max(1.0 - cosHV, 0.0);\n\t\treturn v + ( 1.0 - v ) * pow(facing, 5.0);\n\t}\n\n\tfn InputToLinear(v: vec3f) -> vec3f {\n\t\treturn v*v;\n\t}\n\n\tconst AlphaTest = 0.01;\n\n\t@fragment fn psmain(\n\t\tin: VertexOutput\n\t) -> PixelOutput\n\t{\n#if $hasTextures\n\t#if $isUVW\n\t\tvar vUv = in.uvw.xy;\n\t\tvar vUvBump = in.uvwBump.xy;\n\t\tvar vUvAlpha = in.uvwAlpha.xy;\n\t#else\n\t\tvar vUv = in.uv;\n\t\tvar vUvBump = in.uvBump;\n\t\tvar vUvAlpha = in.uvAlpha;\n\t#endif\n#else\n\tconst vUv = vec2f(0.0,0.0);\n\tconst vUvBump = vec2f(0.0,0.0);\n\tconst vUvAlpha = vec2f(0.0,0.0);\n#endif\n\t\tvar output: PixelOutput;\n\t\tvar objectUniforms = getObjectUniforms(in.instance);\n\t\tvar materialUniforms = getMaterialUniforms(objectUniforms.materialIndex);\n\n\t\t//check doNotCut flag\n\t\tif (commonMaterialUniforms.doNotCutOverride + (materialUniforms.renderFlags & 2) == 0) {\n\t\t\tcheckCutPlanes(in.vWorldPosition);\n\t\t}\n\n\t\tvar normal = normalize(in.vViewNormal);\n\n\t\t//With ortho projection, the view direction needs to be\n\t\t//adjusted so that all view direction rays (for all pixels) are parallel\n\t\t//instead of going from the camera position directly to the vertex like\n\t\t//in perspective. In view space, this is kind of easy -- the view vector is along Z.\n\t\t//TODO: Actually the vViewPosition varying is the position of the camera wrt the vertex\n\t\t//so the naming of the variable can be clarified.\n\t\tvar viewDirection: vec3f;\n\t\tif (uniforms.projectionMatrix[3][3] == 0.0) {\n\t\t\tviewDirection = normalize( in.vViewPosition );\n\t\t} else {\n\t\t\tviewDirection = vec3f(0.0, 0.0, 1.0);\n\t\t}\n\t\tnormal = faceForward(normal, -viewDirection, normal);\n\n\t\tvar geomNormal = normal;\n\n#if $hasTextures\n\t\tif ((materialUniforms.renderFlags & (8 << 16)) != 0) {\n\t\t\tnormal = perturbNormal2Arb( -in.vViewPosition, normal, vUvBump );\n\t\t} else if ((materialUniforms.renderFlags & (4 << 16)) != 0) {\n\t\t\tnormal = perturbNormalArb( -in.vViewPosition, normal, dHdxy_fwd(vUvBump) );\n\t\t}\n#endif\n\n\t\t//TODO: vertex color\n#if $hasVertexColors\n\t\tvar diffuse = vec4f(in.color, 1.0);\n#else\n\t\tvar diffuse = intToVecf(materialUniforms.diffuse);\n\t\tif ((materialUniforms.renderFlags & (1 << 16)) != 0) {\n\t\t\tdiffuse *= textureSample(mapDiffuse, smplDiffuse, vUv);\n\t\t}\n#endif\n\t\tvar outAlpha = diffuse.a;\n\n#if $hasTextures\n\t\tif ((materialUniforms.renderFlags & (16 << 16)) != 0) {\n\t\t\tvar alphaTexel = textureSample(mapAlpha, smplAlpha, vUvAlpha);\n\t\t\toutAlpha *= alphaTexel.r;\n\t\t}\n#endif\n\n\t\t//In the WebGL version, alpha test is a configurable parameter of each material,\n\t\t//However, we don't _really_ need to be that generic\n\t\tif ((materialUniforms.renderFlags & 4) != 0 && outAlpha < AlphaTest) {\n\t\t\tdiscard;\n\t\t}\n\n\t\tvar specularR = intToVecf(materialUniforms.specular);\n\t\tvar reflectivity = specularR.a;\n\t\tvar specular = InputToLinear(specularR.xyz);\n\n\t\t//Diffuse from irradiance map\n\t\tvar worldNormal = getMat3(uniforms.viewInverseEnv) * normal;\n\t\tvar indirectDiffuse = sampleIrradianceMap(worldNormal, irrMap, irrSampler, ibl.envMapExposure);\n\n\t\tvar outColor = InputToLinear(diffuse.xyz) * indirectDiffuse;\n\n\t\t//Reflection map\n\t\tvar reflectVec = reflect( -viewDirection, normal );\n\n\t\treflectVec = getMat3(uniforms.viewInverseEnv) * reflectVec;\n\n\t\t//If the reflection vector points into the ground, we will scale\n\t\t//down the reflection intensity, in order to fake interference with the\n\t\t//ground plane and avoid an eclipse-like light-dark line between the object\n\t\t//and its shadow.\n\t\t//The actual scaling is made up so that it gets very dark near the ground facing faces\n\t\t//float reflectScale = 1.0 - clamp(-reflectVec.y, 0.0, 1.0);\n\t\t//reflectScale *= (reflectScale * reflectScale);\n\t\tvar reflectScale = 1.0;\n\n\t\t//The environment cube map is blurred with the assumption that\n\t\t//max shininess is 2048 and every mip drops that by a factor of 4\n\t\t//float MipmapIndex = log4(shininess / 2048.0) / log4(0.25);\n\t\t//The simplification below was given in the original source for this method.\n\t\t//It uses log base 10. We use log base 2 below, which changes the constant.\n\t\t//float MipmapIndex = max(0.0, -1.66096404744368 * logShiny + 5.5);\n\t\tvar logShiny = log2(max(1.0+1e-10, materialUniforms.shininess));\n\t\tvar reflMipIndex = max(0.0, 5.5 - 0.5 * logShiny);\n\t\t//If we get roughness map support, we'd have to sample the roughness map here to get a mip index.\n\n\t\tvar cubeColor = sampleReflection(reflectVec, reflMap, reflSampler, reflMipIndex, ibl.envMapExposure);\n\n\t\tcubeColor *= reflectScale;\n\n\t\tvar facing = dot( viewDirection, normal );\n\n\t\t//Argh. If facing is very much below the horizon, it's probably\n\t\t//a backwards facing polygon, so turn off Fresnel completely.\n\t\t//Otherwise, if it's just slightly below, it's probably some interpolation\n\t\t//artifact, so we treat it as almost oblique facing.\n\t\t// Bypassing Fresnel when reflectivity is set exactly to 0.0 is intentional and provided\n\t\t// as a way to turn off the effect\n\t\tif (facing < -1e-2 || reflectivity == 0.0) {\n\t\t\tfacing = 1.0;\n\t\t} else {\n\t\t\tfacing = max(1e-6, facing);\n\t\t}\n\n#if $hasTextures\n\t\t//Gratuitous hack to make bump mapped materials less shiny at grazing angles.\n\t\t//This has the effect of reducing the Fresnel effect when bumpScale is large.\n\t\t//Assumption is that large bump scale = very rough surface.\n\t\tif ((materialUniforms.renderFlags & (4 << 16)) != 0) {\n\t\t\tfacing = min(1.0, facing + textureUniforms.normalScale.x * 7.0);\n\t\t}\n#endif\n\n#if $metalMaterial\n\n\t\t//Metals do not generally have Fresnel reflection\n\t\tvar schlickRefl = specular;\n\n#else\n\n\t\t//Nonmetals reflect using Fresnel -- so they reflect a lot at grazing angles\n\t\tvar schlickRefl = Schlick_v3(specular, facing);\n\n\t\t//Seems appropriate to also reduce transparency of the material as\n\t\t//the view angle is more oblique:\n\t\t//BOGUS: The scaling by reflectivity is not physical -- here\n\t\t//we use reflectivity as a scale to make transparent ghosted objects look good\n\t\t//while still retaining some physical Fresnel for glass materials.\n\t\t//For ghosted objects the reflectivity is 0 while for physical glass\n\t\t//it is a non-zero value.\n\t\toutAlpha = mix(outAlpha, Schlick_f(outAlpha, facing), reflectivity);\n\n\t\t//Scale down diffuse in order to keep energy conservation\n\t\t//at grazing angles, where specular takes over. The actual equation is\n\t\t//given here: http://www.cs.utah.edu/~shirley/papers/jgtbrdf.pdf.\n\t\t//For the environment map, N.V and N.R are equal so we can just square the one factor\n\t\t//instead of computing two and multiplying them.\n\t\t//TODO: check further on the exact normalization factors needed.\n\t\t//Also note that we drop a factor of PI (we drop that from the specular light as well,\n\t\t//where we use n/8 instead of n/8pi as normalization).\n\t\tvar invSchlick = pow(1.0 - facing * 0.5, 5.0);\n\n\t\t//If contrast is too high, and RaaS complains, set this factor to 1.\n\t\tvar norm_factor = (28.0 / 23.0) * (1.0 - invSchlick) * (1.0 - invSchlick);\n\n\t\toutColor *= norm_factor * (1.0 - specular);\n#endif\n\n\t\toutColor += cubeColor.xyz * schlickRefl.xyz;\n\n\t\tif (ibl.tonemapMethod == 1) {\n\t\t\toutColor = toneMapCanonOGS_WithGamma_WithColorPerserving(ibl.exposureBias * outColor);\n\t\t} else if (ibl.tonemapMethod == 2) {\n\t\t\toutColor = toneMapCanonFilmic_WithGamma(ibl.exposureBias * outColor);\n\t\t}\n\n\t\toutput.color = vec4f(outColor, outAlpha);\n\n\t\t//Store normal and depth information for SSAO (opaque objects only)\n\t\tvar discardNormal = 1.0;\n\t\tif (outAlpha < 0.9) {\n\t\t\tdiscardNormal = 0.0;\n\t\t}\n\n\t\toutput.normal = vec4f(packNormal10(geomNormal), discardNormal);\n\t\tvar unitDepth = (-in.depth - uniforms.near) / (uniforms.far - uniforms.near);\n\t\toutput.viewDepth = vec4f(packDepth10(unitDepth), discardNormal);\n\n\t\t//Store object identity information\n\t\toutput.dbId = intToVec(objectUniforms.dbId);\n\n\n\t\t//Currently we don't have enough room to bind a third ID render target (32 byte limit on render attachments),\n\t\t//so we stash half of the object flags in the modelId\n\t\t//output.objectFlags = intToVec(objectUniforms.objectFlags);\n\n\t\toutput.modelId = intToVec(objectUniforms.modelId | (objectUniforms.objectFlags << 16));\n\n\t\t//If there is theming color, apply it at the end\n\t\t//If we ever use the uber shader for drawing ghosted objects, which are not subject to theming\n\t\t//we will also need to check the ghosting flag here (materialUniforms.renderFlags & 1)\n\t\t//Currently our ghosting effect is edges only.\n\t\tif (objectUniforms.themeColor != 0) {\n\t\t\tvar themingColor = intToVecf(objectUniforms.themeColor);\n\t\t\toutput.color = mix(output.color, themingColor, themingColor.a);\n\t\t}\n\n\t\t// (See the comment on theming above). If this shader is ever used for ghosted objects,\n\t\t// the heatmap chunk needs to check for that.\n\t\t$heatmap\n\n\t\t// cap mesh hatch pattern\n\t\tif ((materialUniforms.renderFlags & 8) != 0) {\n\t\t\toutput.color = calculateHatchPattern(materialUniforms.hatchParams, in.Position.xy, output.color,\n\t\t\t\thatchTintColor, materialUniforms.hatchTintIntensity);\n\t\t}\n\n\t\treturn output;\n\t}\n",{IBL:Q(0),cameraUniforms:te(1),objectUniforms:G(2),materialUniforms:I(3),pack_normals:"//See http://aras-p.info/texts/CompactNormalStorage.html\n//Currently using the slow and simple approach of mapping 3d normal to two spherical coords.\n//TODO try other, cheaper ways to encode the normal.\n\nconst kPI = 3.14159265358979;\n\nfn encodeNormal (n: vec3f) -> vec2f {\n\treturn (vec2f(atan2(n.y,n.x)/kPI, n.z)+1.0)*0.5;\n}\n\nfn decodeNormal (enc: vec2f) -> vec3f {\n\tvar ang = enc * 2.0 - 1.0;\n\tvar scth = vec2f(sin(ang.x * kPI), cos(ang.x * kPI));\n\t//sincos(ang.x * kPI, scth.x, scth.y);\n\tvar scphi = vec2f(sqrt(1.0 - ang.y * ang.y), ang.y);\n\treturn vec3f(scth.y * scphi.x, scth.x * scphi.x, scphi.y);\n}\n\nfn decodeNormalInt (enc: u32) -> vec3f {\n\tvar xy = vec2f(f32(enc & 0xffff), f32((enc >> 16) & 0xffff)) / 65535.0;\n\treturn decodeNormal(xy);\n}",pack_depth:Y,mat_inverse:"\nfn inverse2(m: mat2x2f) -> mat2x2f {\n\treturn mat2x2f(\n\t\tm[1][1],-m[0][1],\n\t\t-m[1][0], m[0][0]\n\t) * (1.0 / (m[0][0]*m[1][1] - m[0][1]*m[1][0]));\n}\n\nfn inverse3(m: mat3x3f) -> mat3x3f {\n\tvar a00 = m[0][0]; var a01 = m[0][1]; var a02 = m[0][2];\n\tvar a10 = m[1][0]; var a11 = m[1][1]; var a12 = m[1][2];\n\tvar a20 = m[2][0]; var a21 = m[2][1]; var a22 = m[2][2];\n\n\tvar b01 = a22 * a11 - a12 * a21;\n\tvar b11 = -a22 * a10 + a12 * a20;\n\tvar b21 = a21 * a10 - a11 * a20;\n\n\tvar det = a00 * b01 + a01 * b11 + a02 * b21;\n\n\treturn mat3x3f(\n\t\tb01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),\n\t\tb11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),\n\t\tb21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)\n\t) * (1.0 / det);\n}\n\nfn inverse4(m: mat4x4f) -> mat4x4f {\n\tvar a00 = m[0][0]; var a01 = m[0][1]; var a02 = m[0][2]; var a03 = m[0][3];\n\tvar a10 = m[1][0]; var a11 = m[1][1]; var a12 = m[1][2]; var a13 = m[1][3];\n\tvar a20 = m[2][0]; var a21 = m[2][1]; var a22 = m[2][2]; var a23 = m[2][3];\n\tvar a30 = m[3][0]; var a31 = m[3][1]; var a32 = m[3][2]; var a33 = m[3][3];\n\n\tvar b00 = a00 * a11 - a01 * a10;\n\tvar b01 = a00 * a12 - a02 * a10;\n\tvar b02 = a00 * a13 - a03 * a10;\n\tvar b03 = a01 * a12 - a02 * a11;\n\tvar b04 = a01 * a13 - a03 * a11;\n\tvar b05 = a02 * a13 - a03 * a12;\n\tvar b06 = a20 * a31 - a21 * a30;\n\tvar b07 = a20 * a32 - a22 * a30;\n\tvar b08 = a20 * a33 - a23 * a30;\n\tvar b09 = a21 * a32 - a22 * a31;\n\tvar b10 = a21 * a33 - a23 * a31;\n\tvar b11 = a22 * a33 - a23 * a32;\n\n\tvar det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n\treturn mat4x4f(\n\t\ta11 * b11 - a12 * b10 + a13 * b09,\n\t\ta02 * b10 - a01 * b11 - a03 * b09,\n\t\ta31 * b05 - a32 * b04 + a33 * b03,\n\t\ta22 * b04 - a21 * b05 - a23 * b03,\n\t\ta12 * b08 - a10 * b11 - a13 * b07,\n\t\ta00 * b11 - a02 * b08 + a03 * b07,\n\t\ta32 * b02 - a30 * b05 - a33 * b01,\n\t\ta20 * b05 - a22 * b02 + a23 * b01,\n\t\ta10 * b10 - a11 * b08 + a13 * b06,\n\t\ta01 * b08 - a00 * b10 - a03 * b06,\n\t\ta30 * b04 - a31 * b02 + a33 * b00,\n\t\ta21 * b02 - a20 * b04 - a23 * b00,\n\t\ta11 * b07 - a10 * b09 - a12 * b06,\n\t\ta00 * b09 - a01 * b07 + a02 * b06,\n\t\ta31 * b01 - a30 * b03 - a32 * b00,\n\t\ta20 * b03 - a21 * b01 + a22 * b00\n\t) * (1.0 / det);\n}\n\nfn getMat3(m: mat4x4f) -> mat3x3f {\n\treturn mat3x3f(\n\t\tm[0].xyz,\n\t\tm[1].xyz,\n\t\tm[2].xyz\n\t);\n}\n\nfn getNormalMatrix(m: mat4x4f) -> mat3x3f\n{\n\tvar nm = getMat3(m);\n\treturn transpose(inverse3(nm));\n}\n",tonemap:g,envMapSample:J(!0,!1,!0),hatch:v,heatmapDecl:"fn lmap(value: f32, inMin: f32, inMax: f32, outMin: f32, outMax: f32) -> f32 {\n return clamp(outMin + ((outMax - outMin) * (value - inMin)) / (inMax - inMin), outMin, outMax);\n}\n\n// Gradient with multiple colors in non-equal intervals\nfn colormap(x: f32) -> vec3f {\n var colorsAndStops = ibl.colorsAndStops;\n for (var i = 1; i < NUM_STOPS; i++) {\n if (x <= colorsAndStops[i].stop) {\n var stopPct = lmap(x, colorsAndStops[i - 1].stop, colorsAndStops[i].stop, 0.0, 1.0);\n return mix(colorsAndStops[i - 1].color, colorsAndStops[i].color, stopPct);\n }\n }\n\n // In case 'x' goes beyond upper bound.\n return colorsAndStops[NUM_STOPS - 1].color;\n}\n",heatmap:"var sensorCount = materialUniforms.heatmapSensorCountAndOffset & 0x000000ff;\nif (sensorCount > 0) {\n\n var sensorOffset = materialUniforms.heatmapSensorCountAndOffset >> 8;\n var heatResult: f32 = 0.0;\n var heatSum: f32 = 0.0;\n var heatWsum: f32 = 0.000001;\n var heatFound: bool = false; // at exact location of the sensor\n var heatmapAlpha = ibl.heatmapAlpha;\n\n for (var i = sensorOffset; i < sensorOffset + sensorCount; i++) {\n var mydist = distance(in.vWorldPosition, heatmapSensors[i].xyz);\n if (mydist < 0.00001) {\n // So the exact pixel of the sensor will get the right color, but pretty much nothing beside it.\n heatResult = heatmapSensors[i][3];\n heatFound = true;\n } else {\n var w = (1.0 / (mydist * mydist));\n heatSum += (heatmapSensors[i][3] * w);\n heatWsum += w;\n }\n }\n\n if (!heatFound) {\n heatResult = heatSum / heatWsum;\n }\n\n // Defaults without influence from any sensor\n var sensorColor = vec3f(0.5);\n if (heatResult >= 0.0) {\n heatResult = clamp(heatResult, 0.0, 1.0);\n sensorColor = colormap(heatResult);\n }\n\n // If this chunk is used in shaders that render ghosted objects, we need to check for that and don't apply the\n // heatmap color, i.e. use 'ghosted ? 0.0 : heatmapAlpha' below.\n output.color = vec4f(mix(vec3f(luminance_post(output.color.rgb)), sensorColor, heatmapAlpha), output.color.a);\n if (heatmapAlpha > 0.0) {\n output.color[3] = max(output.color.a, heatmapAlpha);\n }\n}\n",metalMaterial:e.metal,hasUV:t,hasTextures:i,hasVertexColors:n,isUVW:r,hasUVAndHasVertexColors:t&&n,hasUVAndNotHasVertexColors:t&&!n,notHasUVAndHasVertexColors:!t&&n})}var oe=i(77201);function se(e,t,i,n,r,o){let s=e.__gpuPipelineHash;s||(s=function(e,t,i,n){let r=e.__gpuPipelineHash;if(r)return r;e.vb||oe.BufferGeometryUtils.interleaveGeometry(e,!0),r=255&e.vbstride;const o=e.attributesInterleaved||e.attributes;for(let e in o){let t=o[e];switch(e){case"position":0!==t.itemOffset&&console.log("unexpected itemOffset"),r|=256;break;case"normal":3!==t.itemOffset&&console.log("unexpected itemOffset"),2===t.bytesPerItem?r|=512:r|=1024;break;case"uv":case"uvw":i&&(3===t.itemOffset?r|=2048:4===t.itemOffset?r|=4096:6===t.itemOffset?r|=6144:console.log("unexpected itemOffset for color channel",t.itemOffset));break;case"color":n&&(3===t.itemOffset?r|=8192:4===t.itemOffset?r|=16384:6===t.itemOffset?r|=24576:8===t.itemOffset?r|=32768:console.log("unexpected itemOffset"))}}let s=0;return e.isLines&&(s=1),r|=s<<16,e.__gpuPipelineHash=r,r}(e,e.isLines,n,r));let a=t.__gpuPipelineHash;return!t.needsUpdate&&a||(a=function(e,t){let i=16777216;if(e.depthWrite&&(i|=1),e.depthTest&&(i|=2),e.depthFunc)switch(e.depthFunc){case"less":i|=4;break;case"less-equal":i|=8;break;case"greater":i|=12;break;case"greater-equal":i|=16;break;case"never":i|=20;break;case"always":i|=24;break;default:console.warn("unsupported depthFunc",e.depthFunc)}else i|=8;return i|=(e.side||0)<<5,i|=t?128:0,i|=e.isRoomMaterial&&e.heatmapSensorCount?256:0,e.__gpuPipelineHash=i,i}(t,o)),s|a<<17}function ae(e,t,i,n){let r=[],o=n&&e.attributes.color;if(e.vb){let s={arrayStride:4*e.vbstride,attributes:[]},a=e.attributesInterleaved||e.attributes;for(let r in a){let l=a[r];switch(r){case"position":s.attributes.push({shaderLocation:0,offset:4*l.itemOffset,format:"float32x3"});break;case"normal":!e.isLines&&t&&s.attributes.push({shaderLocation:1,offset:4*l.itemOffset,format:"uint32"});break;case"uv":i&&s.attributes.push({shaderLocation:o?3:2,offset:4*l.itemOffset,format:"float32x2"});break;case"uvw":i&&s.attributes.push({shaderLocation:o?3:2,offset:4*l.itemOffset,format:"float32x3"});break;case"color":n&&s.attributes.push({shaderLocation:2,offset:4*l.itemOffset,format:"float32x3"})}}r.push(s)}else console.log("non-interleaved buffer geometry not yet done");return r}function le(e){let t=[],i={arrayStride:4*e.vbstride,attributes:[]};return i.attributes.push({shaderLocation:0,offset:0,format:"float32x2"}),i.attributes.push({shaderLocation:1,offset:8,format:"float32x4"}),i.attributes.push({shaderLocation:2,offset:24,format:"unorm8x4"}),i.attributes.push({shaderLocation:3,offset:28,format:"uint8x4"}),i.attributes.push({shaderLocation:4,offset:32,format:"uint8x4"}),i.attributes.push({shaderLocation:5,offset:36,format:"uint8x4"}),i.attributes.push({shaderLocation:6,offset:i.arrayStride-8,format:"float32x2"}),t.push(i),t}function ce(e,t,i,n,r,o){let s=e.__gpuPipelineHash;s||(s=function(e){return e.__gpuPipelineHash=e.vbstride,e.__gpuPipelineHash}(e));let a=t.__gpuPipelineHash;return!t.needsUpdate&&a||(t.__gpuPipelineHash=a=16777216),s|a<<24}var he=i(82116);class ue{#rt;#et;#Mt=new Map;#qi;#Xi;#Yi;#Ki;#Qi;#Zi;constructor(e){this.#rt=e,this.#et=e.getDevice(),this.#Qi=this.#rt.getVB(),this.#Zi=se}#Ct(e,t,i,n){const r=t.attributes,o=r.color&&i.vertexColors,s=!!r.uvw,a=r.uv||s,l=a&&0!==n;let c;if(t.isLines){let e=this.#et.createShaderModule({code:(0,d.$wgsl)("$IBL\n$cameraUniforms\n$objectUniforms\n\nstruct VertexOutput {\n @builtin(position) Position : vec4f,\n @location(0) @interpolate(flat) instance: u32,\n @location(4) vWorldPosition: vec3f\n}\n\n@vertex\nfn vsmain(\n @location(0) position : vec3f,\n @builtin(instance_index) instance : u32\n) -> VertexOutput {\n\n var objectUniforms = getObjectUniforms(instance);\n\n var output : VertexOutput;\n var pos4 = vec4f(position.x, position.y, position.z, 1.0);\n\n var mvMatrix = uniforms.viewMatrix * objectUniforms.modelMatrix;\n var mvPosition = mvMatrix * pos4;\n\n output.Position = uniforms.projectionMatrix * mvPosition;\n output.vWorldPosition = (objectUniforms.modelMatrix * pos4).xyz;\n\n output.instance = instance;\n\n //TODO: world position for cutplanes\n\n return output;\n}\n\nstruct PixelOutput {\n @location(0) color: vec4f,\n @location(1) normal: vec4f,\n @location(2) viewDepth: vec4f,\n @location(3) dbId: vec4u,\n @location(4) modelId: vec4u\n //@location(4) objectFlags: vec4u,\n}\n\n@fragment\nfn psmain(\n in: VertexOutput,\n) -> PixelOutput {\n\n var output: PixelOutput;\n\n var objectUniforms = getObjectUniforms(in.instance);\n var materialUniforms = getMaterialUniforms(objectUniforms.materialIndex);\n\n //TODO: vertex color\n var diffuse = intToVecf(materialUniforms.diffuse);\n\n //check doNotCut flag\n if (commonMaterialUniforms.doNotCutOverride + (materialUniforms.renderFlags & 2) == 0) {\n checkCutPlanes(in.vWorldPosition);\n }\n\n //For line geometry, we just return the color as is\n output.color = diffuse;\n output.normal = vec4f(0.0);\n output.viewDepth = vec4f(0.0);\n output.dbId = intToVec(objectUniforms.dbId);\n output.modelId = intToVec(objectUniforms.modelId);\n\n return output;\n}\n",{IBL:Q(0),cameraUniforms:te(1),objectUniforms:G(2)})});c=this.#et.createRenderPipeline({label:"uber shader lines",layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#Yi}),vertex:{module:e,entryPoint:"vsmain",buffers:ae(t,!1,!1,!1)},fragment:{module:e,entryPoint:"psmain",targets:this.#Ki},primitive:{topology:"line-list",cullMode:"none"},depthStencil:{depthWriteEnabled:i.depthWrite,depthCompare:i.depthTest?i.depthFunc||"less-equal":"always",format:x}})}else{const n=this.#et.createShaderModule({label:"uber shader triangles ("+e+")",code:re(i,a,l,o,s)});c=this.#et.createRenderPipeline({label:"uber pipeline triangles ("+e+")",layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#Yi}),vertex:{module:n,entryPoint:"vsmain",buffers:ae(t,!0,a,o)},fragment:{module:n,entryPoint:"psmain",targets:this.#Ki},primitive:{topology:"triangle-list",cullMode:(0,he.oh)(i.side)},depthStencil:{depthWriteEnabled:i.depthWrite,depthCompare:i.depthTest?i.depthFunc||"less-equal":"always",format:x,depthBias:i.isRoomMaterial&&i.heatmapSensorCount?1:2,depthBiasSlopeScale:i.isRoomMaterial&&i.heatmapSensorCount?.5:1}})}return this.#Mt.set(e,c),c}reset(e,t){this.#qi=null,this.#Xi=null,this.#Yi=e,this.#Ki=t}#$i(e,t){let i=0|t.__gpuUniformsMask;return i!==R.NO_UNIFORMS||t.needsUpdate?((0===i||t.needsUpdate)&&(i=function(e,t,i){let n=F(t);if(0!==n){t.__gpuMaterialUniforms&&U({target:t});const n=new N(e,t,i);t.__gpuMaterialUniforms=n,t.addEventListener("dispose",U)}return B&&t.addEventListener("update",B),t.__gpuUniformsMask=n|=R.NO_UNIFORMS,n}(this.#et,t,this.#rt.getPlaceholderTexture()),this.#Xi=null),i===R.NO_UNIFORMS?0:(this.#Xi!==t&&(e.setBindGroup(3,t.__gpuMaterialUniforms.getBindGroup()),this.#Xi=t),i)):0}drawOne(e,t,i,n){if(i instanceof THREE.Geometry)return 0;const r=this.#$i(e,n)&R.TEXTURE_MASK,o=i.attributes,s=o.color&&n.vertexColors,a=o.uv,l=a&&0!==r,c=this.#Zi(i,n,!0,a,s,l);let h=this.#Mt.get(c);return h||(h=this.#Ct(c,i,n,r)),h!==this.#qi&&(e.setPipeline(h),this.#qi=h),this.#Qi.draw(e,i,t),r}}const de='\nfn orderedDithering(coord: vec2i) -> f32 {\n\n\t//Matrix for 4x4 ordered dithering. (http://en.wikipedia.org/wiki/Ordered_dithering)\n\tconst thresholdMatrix = mat4x4f(\n\t\t 1.0, 9.0, 3.0, 11.0,\n\t\t13.0, 5.0, 15.0, 7.0,\n\t\t 4.0, 12.0, 2.0, 10.0,\n\t\t16.0, 8.0, 14.0, 6.0) * (1.0 / 17.0);\n\n\tvar i = coord.x & 3;\n\tvar j = coord.y & 3;\n\n\treturn thresholdMatrix[i][j];\n\n}\n\n\n//Screen door transparency for "ghosted" elements, indicated by opacity < 0\nfn checkGhosting(coord: vec2i, isGhosted: bool) {\n\tif (isGhosted) {\n\t\tif (orderedDithering(coord) < 0.5) {\n\t\t\tdiscard;\n\t\t}\n\t}\n}\n';function fe(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return(0,d.$wgsl)("$ghosting\n$IBL\n$cameraUniforms\n$objectUniforms\n$materialUniforms\n\n\nstruct VertexOutput {\n @builtin(position) Position : vec4f,\n @location(0) @interpolate(flat) instance: u32,\n @location(4) vWorldPosition: vec3f\n}\n\n@vertex\nfn vsmain(\n @location(0) position : vec3f,\n @builtin(instance_index) instance : u32\n) -> VertexOutput {\n\n var objectUniforms = getObjectUniforms(instance);\n\n var output : VertexOutput;\n var pos4 = vec4f(position.x, position.y, position.z, 1.0);\n\n var mvMatrix = uniforms.viewMatrix * objectUniforms.modelMatrix;\n var mvPosition = mvMatrix * pos4;\n\n output.Position = uniforms.projectionMatrix * mvPosition;\n output.vWorldPosition = (objectUniforms.modelMatrix * pos4).xyz;\n\n //TODO: world position for cutplanes\n\n output.instance = instance;\n\n return output;\n}\n\n@fragment\nfn psmain(\n in: VertexOutput\n) -> @location(0) vec4f {\n\n var objectUniforms = getObjectUniforms(in.instance);\n var materialUniforms = getMaterialUniforms(objectUniforms.materialIndex);\n\n //check doNotCut flag\n if (commonMaterialUniforms.doNotCutOverride + (materialUniforms.renderFlags & 2) == 0) {\n checkCutPlanes(in.vWorldPosition);\n }\n\n var color = intToVecf(commonMaterialUniforms.edgeColor);\n\n #if $ghosted\n checkGhosting(vec2i(floor(in.Position.xy)), true);\n #endif\n\n return vec4(color.r, color.g, color.b, color.a);\n}\n",{ghosting:de,ghosted:e,IBL:Q(0),cameraUniforms:te(1),objectUniforms:G(2),materialUniforms:I(3)})}class pe{#rt;#et;#Mt=new Map;#qi;#Yi;#Ki;#Qi;#Zi=se;constructor(e){this.#rt=e,this.#et=e.getDevice()}#Ct(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=this.#et.createShaderModule({code:fe(n)}),o=this.#et.createRenderPipeline({layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#Yi}),vertex:{module:r,entryPoint:"vsmain",buffers:ae(t,!1,!1,!1)},fragment:{module:r,entryPoint:"psmain",targets:this.#Ki},primitive:{topology:"line-list",cullMode:"none"},depthStencil:{depthWriteEnabled:i.depthWrite,depthCompare:i.depthTest?i.depthFunc||"less-equal":"always",format:x,depthBias:0,depthBiasSlopeScale:0}});return this.#Mt.set(e,o),o}reset(e,t){this.#qi=null,this.#Yi=e,this.#Ki=t,this.#Qi=this.#rt.getVB()}drawOne(e,t,i,n){if(i instanceof THREE.Geometry)return 0;if(i.isLines)return;let r=this.#Zi(i,n,!1,!1,!1),o=this.#Mt.get(r);o||(o=this.#Ct(r,i,n)),o!==this.#qi&&(e.setPipeline(o),this.#qi=o),this.#Qi.drawEdges(e,i,t)}drawOneGhosted(e,t,i,n){let r=this.#Zi(i,n,!1,!1,!1,!0),o=this.#Mt.get(r);o||(o=this.#Ct(r,i,n,!0)),o!==this.#qi&&(e.setPipeline(o),this.#qi=o),i.isLines?this.#Qi.draw(e,i,t):this.#Qi.drawEdges(e,i,t)}}const me="//Uniforms\nstruct Line2DUniforms {\n pixelsPerUnit: f32,\n aaRange: f32,\n size: vec2f,\n\n viewportId: f32,\n swap: f32,\n tanHalfFov: f32,\n opacity: f32,\n\n lineStyleWidth: u32,\n miterLimit: f32,\n miterScaleFactor: f32,\n miterCp: f32,\n}\n@group($group) @binding(0) var u: Line2DUniforms;\n@group($group) @binding(1) var lineStyles : array;\n";var ge=i(30514);class ve extends f.D{#et;#Dt;#Lt;#Ji;#en;constructor(e){super(e,16,!0,!0),this.setFloat(5,0),this.setFloat(7,1),this.#et=e,this.#Dt=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT|GPUShaderStage.VERTEX,buffer:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}}]}),this.#en=this.#et.createBuffer({size:64,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.setInt(8,0),this.setMiterData(ge.VBB_MITER_SEGMENT_LIMIT,ge.VBB_MITER_SEGMENT_SCALE_FACTOR,ge.VBB_MITER_SEGMENT_CP),this.#Vi()}#Vi(){this.#Lt=this.#et.createBindGroup({layout:this.#Dt,entries:[{binding:0,resource:{buffer:this.getBuffer()}},{binding:1,resource:{buffer:this.#en}}]})}updatePixelScale(e,t){if(this.#Ji=e,this.setFloat(1,.5),null!=t&&t.isPerspective){const e=t.fov*Math.PI/180;this.setFloat(6,Math.tan(.5*e))}else this.setFloat(6,0);this.setFloat(0,e)}setLineStyleBuffer(e,t){this.#en&&this.#en.size!==e.byteLength&&(this.#en.destroy(),this.#en=null),this.#en||(this.#en=this.#et.createBuffer({size:e.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST})),this.#et.queue.writeBuffer(this.#en,0,e.buffer,0,e.byteLength),this.setInt(8,t)}setTargetSize(e,t){this.setFloat(2,e),this.setFloat(3,t)}setMiterData(e,t,i){this.setFloat(9,e),this.setFloat(10,t),this.setFloat(11,i)}getLayout(){return this.#Dt}getBindGroup(){return this.#Lt}}function ye(e){return(0,d.$wgsl)("$IBL\n$cameraUniforms\n$objectUniforms\n$lineUniforms\n$hatch\n\nconst hatchTintColor = vec3f(1, 1, 1);\n\n// Common defines\nconst TAU = 6.28318530718;\nconst PI = 3.14159265358979;\nconst HALF_PI = 1.57079632679;\nconst PI_1_5 = 4.71238898038; // 1.5 * PI\n\n// discard fragments if they belong to ghosted layers\n@id(0) override ENABLE_ID_DISCARD: u32 = 1;\n\n// Geometry type defines\nconst VBB_GT_TRIANGLE_INDEXED = 0;\nconst VBB_GT_LINE_SEGMENT = 1;\nconst VBB_GT_ARC_CIRCULAR = 2;\nconst VBB_GT_ARC_ELLIPTICAL = 3;\nconst VBB_GT_TEX_QUAD = 4;\nconst VBB_GT_ONE_TRIANGLE = 5;\nconst VBB_GT_MSDF_TRIANGLE_INDEXED = 6;\nconst VBB_GT_TEX_TRIANGLE_INDEXED = 7;\nconst VBB_GT_LINE_SEGMENT_CAPPED = 8;\nconst VBB_GT_LINE_SEGMENT_CAPPED_START = 9;\nconst VBB_GT_LINE_SEGMENT_CAPPED_END = 10;\nconst VBB_GT_LINE_SEGMENT_MITER = 11;\n\n// ID defines\nconst VBB_INSTANCED_FLAG = 0;\nconst VBB_SEG_START_RIGHT = 0;\nconst VBB_SEG_START_LEFT = 1;\nconst VBB_SEG_END_RIGHT = 2;\nconst VBB_SEG_END_LEFT = 3;\n\n// Defines scaling of line style patterns (e.g. for dashed and dotted lines)\n// We define some fixed scaling here.\n//\n// Why 0.25?: The choice is currently sort-of arbitrary - just manually adjusted\n// to look reasonable when drawing into 2D overlays. If this is not sufficient, we could make it\n// adjustable per shader parameter.\n//\n// AutoCAD will scale patterns based on the LTSCALE setting, and currently this is ignored here.\nconst LTSCALE = 0.25;\n\n//Attributes\nstruct VsInput {\n\t@builtin(instance_index) instance : u32,\n\t@location(0) fields1: vec2f,\n\t@location(1) fields2: vec4f,\n\t@location(2) color4b: vec4f,\n\t@location(3) dbId4b: vec4u,\n\t@location(4) flags4b: vec4u,\n\t@location(5) layerVp4b: vec4u,\n\t@location(6) extraParams: vec2f,\n}\n\n// Varyings\nstruct VsOutput {\n\t@builtin(position) position : vec4f,\n\t//TODO: most of these should be tagged @interpolate(flat)\n\t@location(0) @interpolate(flat) fsColor: vec4f,\n\t@location(1) fsOffsetDirection: vec2f,\n\t@location(2) fsMultipurpose: vec4f,\n\t//fsGeomType: f32,\n\t@location(3) @interpolate(flat) fsHalfWidth: f32,\n\t@location(4) fsVpTC: vec2f,\n\t@location(5) @interpolate(flat) fsGhosting: f32,\n\t@location(6) @interpolate(flat) dbId: vec4u,\n\t@location(7) vWorldPosition: vec3f, //for cutplanes\n\t@location(8) @interpolate(flat) instance: u32,\n#if $materialHasLineStyles\n\t@location(9) vPixelsPerUnit: f32\n#endif\n}\n\n// used internally by the VS\nvar centralVertex: vec2f;\nvar offsetPosition: vec2f;\nvar offsetPosDepth: vec2f;\nvar mvpMatrix: mat4x4f;\n\nfn cos_sin(angle: f32) -> vec2f {\n\treturn vec2f(cos(angle), sin(angle));\n}\n\nfn getVertexId(in: VsInput) -> u32 { return in.flags4b.x; }\n\nfn isStartVertex(in: VsInput) -> bool { return (getVertexId(in) < VBB_SEG_END_RIGHT); }\nfn isLeftVertex(in: VsInput) -> bool { var id = getVertexId(in); return ((id == VBB_SEG_END_LEFT || id == VBB_SEG_START_LEFT)); }\n\nfn min_max(minPt: ptr, maxPt: ptr, p: vec2f) {\n\t*minPt = min(*minPt, p);\n\t*maxPt = max(*maxPt, p);\n}\n\nfn setMvp(instance: u32) {\n\tvar objectUniforms = getObjectUniforms(instance);\n\tmvpMatrix = uniforms.projectionMatrix * uniforms.viewMatrix * objectUniforms.modelMatrix;\n}\n\n// Get the 2d screenspace position of a model-space position.\nfn posToSs(pos: vec4f) -> vec2f {\n\treturn clipPosToSs(mvpMatrix * pos);\n}\n\n// Get the 2d screenspace position of a clip-space position.\n// Visible positions will be within [0, width] x [0, height].\nfn clipPosToSs(clip: vec4f) -> vec2f {\n\treturn (clip.xy / clip.w + vec2f(1)) * 0.5 * u.size;\n}\n\n// Get the 2d screenspace transformation of a model-space vector.\nfn vecToSs(inVec: vec4f) -> vec2f {\n\tvar clip = mvpMatrix * inVec;\n\t// Don't divide by w, and don't translate vectors.\n\treturn clip.xy * 0.5 * u.size;\n}\n\n// Convert screenspace position back to clip space position.\nfn ssToClip(ssPos: vec2f, clipZw: vec2f) -> vec4f {\n\treturn vec4((ssPos / u.size * 2.0 - vec2f(1)) * clipZw[1], clipZw);\n}\n\nstruct SegmentData {\n\tangle: f32,\n\tdistAlong: f32,\n\tdistTotal: f32,\n\tlineWidthHalf: f32,\n\tlineType: u32\n};\n\nfn decodeSegmentData(in: VsInput) -> SegmentData {\n\tvar seg: SegmentData;\n\tseg.angle = in.fields2.x * TAU - PI;\n\tseg.distAlong = in.fields2.y;\n\tseg.distTotal = in.fields2.w;\n\tseg.lineWidthHalf = in.fields2.z;\n\tseg.lineType = in.flags4b.z;\n\n\treturn seg;\n}\n\nfn strokeLineSegment(in: VsInput, geomType: u32, out: ptr) {\n\tvar seg = decodeSegmentData(in);\n\n\t//Compute output point based on start point plus segment length and direction\n\t//This is because the line segment's 4 vertices are all equal to the start\n\t//point to begin with. We move the vertex to the correct place in the quad\n\t//based on vertex flags indicating whether it's left/right/top/bottom vertex in the\n\t//quad.\n\tvar isStartCapVertex = select(1.0, -1.0, isStartVertex(in));\n\tvar isLeftSide = select(-1.0, 1.0, isLeftVertex(in));\n\n\tsetMvp(in.instance);\n\n\t// Clip-space start position\n\tvar clipStart = (mvpMatrix * vec4f(centralVertex.xy, 0.0, 1.0));\n\n\tvar distanceAlong = seg.distAlong;\n\tvar along = distanceAlong * cos_sin(seg.angle);\n\n\tvar clipEnd = (mvpMatrix * vec4f(centralVertex.xy + along, 0.0, 1.0));\n\n\tvar screenStart = clipPosToSs(clipStart);\n\tvar screenEnd = clipPosToSs(clipEnd);\n\tvar roundedEnd = 0.0;\n\n\tif (isStartCapVertex < 0.0) {\n\t\toffsetPosition = screenStart;\n\t\tcentralVertex = screenStart;\n\t\toffsetPosDepth = clipStart.zw;\n\t\t// use 0.5 instead of 1.0 so that floor(roundedEnd)==roundedEnd\n\t\troundedEnd = select(0.0, 0.5, geomType == VBB_GT_LINE_SEGMENT || geomType == VBB_GT_LINE_SEGMENT_CAPPED_END);\n\t} else {\n\t\toffsetPosition = screenEnd;\n\t\tcentralVertex = screenEnd;\n\t\toffsetPosDepth = clipEnd.zw;\n\t\t// use 0.5 instead of 1.0 so that floor(roundedEnd)==roundedEnd\n\t\troundedEnd = select(0.0, 0.5, geomType == VBB_GT_LINE_SEGMENT || geomType == VBB_GT_LINE_SEGMENT_CAPPED_START);\n\t}\n\n#if $materialHasLineStyles\n\t// For consistency, disable butt capped ends for any pattern other\n\t// than a solid line (seg.lineType will be >0 and thus roundedEnd\n\t// will be >0, i.e., true)\n\t// See note in fragment shader\n\n\t// transport roundedEnd as fractional part of the integer lineType\n\troundedEnd += seg.lineType;\n#endif\n\n\t// Apply transverse line width offset to the start/endpoint\n\tvar screenDelta = screenEnd - screenStart;\n\tvar screenAngle = 0.0;\n\tif (distanceAlong != 0.0) {\n\t\tscreenAngle = atan2(screenDelta.y, screenDelta.x);\n\t}\n\tvar angleTransverse = screenAngle - isLeftSide * HALF_PI;\n\tvar lwAdjustment = (*out).fsHalfWidth + u.aaRange;\n\tvar transverseDir = cos_sin(angleTransverse);\n\toffsetPosition += transverseDir * lwAdjustment;\n\n\t// Apply start/end-cap extension offsets if needed\n\t// for rounded ends, the extension is lwAdjustment,\n\t// for butt capped ends it's aaRange\n\tvar segmentExtension = select(u.aaRange, lwAdjustment, roundedEnd > 0.0);\n\tvar moveOffset = isStartCapVertex * isLeftSide * vec2f(-transverseDir.y, transverseDir.x) * segmentExtension;\n\toffsetPosition += moveOffset;\n\tcentralVertex += moveOffset;\n\n\t// Distance we care about beyond the actual line segment vertex.\n\t// For start vertex, this is negative and equal to half a line weight\n\t// For end vertex this is the segment length plus the half line weight adjustment.\n\tvar distanceFromStart = max(0.0, isStartCapVertex) * length(screenDelta);\n\n\t(*out).fsMultipurpose = vec4f(\n\t\t// distance after end point that we want to fill with cap/join\n\t\t(isStartCapVertex * segmentExtension) + distanceFromStart,\n\t\tlength(screenDelta),\n\t\tseg.distTotal,\n\t\troundedEnd\n\t);\n\n\tif (seg.lineWidthHalf < 0.0) {\n\t\t(*out).fsHalfWidth = -(*out).fsHalfWidth;\n\t}\n\n\t// Vector from logical line centerline to the pixel position of the thick\n\t// line being shaded. We use this distance for antialiasing and line caps clipping\n\t(*out).fsOffsetDirection = offsetPosition - centralVertex;\n\n\t// Back to clip space coords\n\t(*out).position = ssToClip(offsetPosition, offsetPosDepth);\n}\n\nstruct MiterSegmentData {\n\tangle: f32,\n\tdistAlong: f32,\n\tdistAlongPN: f32,\n\tanglePrev: f32,\n\tangleNext: f32,\n\tlineWidthHalf: f32,\n\tlineType: u32,\n};\n\nfn decodeMiterSegment(in: VsInput) -> MiterSegmentData {\n\tvar seg: MiterSegmentData;\n\tseg.angle = in.fields2.x * TAU - PI;\n\tseg.distAlong = in.fields2.y;\n\tseg.anglePrev = in.fields2.w * TAU - PI;\n\tseg.lineWidthHalf = in.fields2.z;\n\tseg.lineType = in.flags4b.z;\n\tseg.angleNext = in.extraParams.x * TAU - PI;\n\tseg.distAlongPN = in.extraParams.y;\n\treturn seg;\n}\n\nfn strokeMiterLineSegment(in: VsInput, out: ptr) {\n\tvar seg = decodeMiterSegment(in);\n\n\t// Compute output point based on a starting point plus three directions to get the\n\t// previous, current, and next line segment. Using this information, each line\n\t// segment can calculate the correct miter joints on the start and end vertices.\n\t// The vertex flags indicate whether it's left/right/top/bottom vertex in the joint.\n\n\tvar isStartCapVertex = select(1.0, -1.0, isStartVertex(in));\n\tvar isLeftSide = select(-1.0, 1.0, isLeftVertex(in));\n\n\tsetMvp(in.instance);\n\n\t// Unpack previous and next line segment lengths. Precision was lost during compression.\n\t// These lengths are used along with the angles to determine if the line segments are\n\t// self intersecting and if so to draw a regular line segment with no miter joints.\n\tvar next = floor(seg.distAlongPN / u.miterCp);\n\tvar prev = seg.distAlongPN - (next * u.miterCp);\n\tvar distanceAlongNext = floor(next) / u.miterScaleFactor;\n\tvar distanceAlongPrev = floor(prev) / u.miterScaleFactor;\n\n\t// Screen space start position\n\tvar distanceAlong = seg.distAlong;\n\tvar along = cos_sin(seg.anglePrev) * distanceAlongPrev;\n\tvar along2 = cos_sin(seg.angle) * distanceAlong;\n\tvar along3 = along2 + cos_sin(seg.angleNext) * distanceAlongNext;\n\n\tvar screenPrev = posToSs(vec4(centralVertex.xy - along, 0.0, 1.0));\n\tvar screenNext = posToSs(vec4(centralVertex.xy + along3, 0.0, 1.0));\n\n\tvar clipStart = mvpMatrix * vec4(centralVertex.xy, 0.0, 1.0);\n\tvar screenStart = clipPosToSs(clipStart);\n\tvar clipEnd = mvpMatrix * vec4(centralVertex.xy + along2, 0.0, 1.0);\n\tvar screenEnd = clipPosToSs(clipEnd);\n\n\tif (isStartCapVertex < 0.0) {\n\t\toffsetPosition = screenStart;\n\t\toffsetPosDepth = clipStart.zw;\n\t} else {\n\t\toffsetPosition = screenEnd;\n\t\toffsetPosDepth = clipEnd.zw;\n\t}\n\tcentralVertex = offsetPosition;\n\n\tvar screenDelta = screenEnd - screenStart;\n\n\tvar AB = normalize(screenStart.xy - screenPrev.xy);\n\tvar BC = normalize(screenDelta);\n\tvar CD = normalize(screenNext.xy - screenEnd.xy);\n\n\tvar a = screenPrev;\n\tvar b = screenStart;\n\tvar c = screenEnd;\n\tvar d = screenNext;\n\tvar p = select(d, a, isStartCapVertex < 0.0);\n\n\tvar a2 = select(c, a, isStartCapVertex < 0.0);\n\tvar b2 = select(d, b, isStartCapVertex < 0.0);\n\tvar p2 = select(b, c, isStartCapVertex < 0.0);\n\tvar PP = select(CD, AB, isStartCapVertex < 0.0);\n\n\tvar normalBC = vec2(-BC.y, BC.x);\n\tvar normalPP = vec2(-PP.y, PP.x);\n\n\t// Check if the line segment at the start/end is interecting with the previous/next\n\t// line segment's start/end.\n\tvar pIsLeftOfBC = select(-1.0, 1.0, ((c.x - b.x)*(p.y - b.y) - (c.y - b.y)*(p.x - b.x)) > 0.0);\n\tvar bN = b + normalBC * (*out).fsHalfWidth * pIsLeftOfBC;\n\tvar cN = c + normalBC * (*out).fsHalfWidth * pIsLeftOfBC;\n\tvar pN = p + normalPP * (*out).fsHalfWidth * pIsLeftOfBC;\n\tvar isPIntersecting = ((cN.x - bN.x)*(pN.y - bN.y) - (cN.y - bN.y)*(pN.x - bN.x)) * pIsLeftOfBC;\n\n\tvar p2IsLeftOfPP = select(-1.0, 1.0, ((b2.x - a2.x)*(p2.y - a2.y) - (b2.y - a2.y)*(p2.x - a2.x)) > 0.0);\n\tvar a2N = a2 + normalPP * (*out).fsHalfWidth * p2IsLeftOfPP;\n\tvar b2N = b2 + normalPP * (*out).fsHalfWidth * p2IsLeftOfPP;\n\tvar p2N = p2 + normalBC * (*out).fsHalfWidth * p2IsLeftOfPP;\n\tvar isP2Intersecting = ((b2N.x - a2N.x)*(p2N.y - a2N.y) - (b2N.y - a2N.y)*(p2N.x - a2N.x)) * p2IsLeftOfPP;\n\n\t// calculate the miter joint\n\tvar tangentLength = select(length(BC + CD), length(AB + BC), isStartCapVertex < 0.0);\n\tvar tangent = select(normalize(BC + CD), normalize(AB + BC), isStartCapVertex < 0.0);\n\tvar miter = vec2(-tangent.y, tangent.x);\n\tvar normal = select(vec2(-BC.y, BC.x), vec2(-AB.y, AB.x), isStartCapVertex < 0.0);\n\tvar miterLength = abs(1.0 / dot(miter, normal));\n\n\tvar moveOffset: vec2f;\n\tvar lwAdjustment = (*out).fsHalfWidth + u.aaRange;\n\tif (miterLength > u.miterLimit || min(isPIntersecting, isP2Intersecting) < 0.0) {\n\t\tmoveOffset = isLeftSide * lwAdjustment * normalBC;\n\t} else {\n\t\tmoveOffset = isLeftSide * miter * lwAdjustment * miterLength;\n\t}\n\n\toffsetPosition += moveOffset;\n\n\tvar distanceFromStart = max(0.0, isStartCapVertex) * (length(screenDelta) + dot(moveOffset, BC));\n\t(*out).fsMultipurpose.x = distanceFromStart;\n\t(*out).fsMultipurpose.y = length(screenDelta) + dot(moveOffset, BC);\n\t(*out).fsMultipurpose.z = 0.0;\n#if $materialHasLineStyles\n\t(*out).fsMultipurpose.w = seg.lineType + 0.5; // enforce round line ends\n#else\n\t(*out).fsMultipurpose.w = 0.5; // enforce round line ends\n#endif\n\n\tif (seg.lineWidthHalf < 0.0) {\n\t\t(*out).fsHalfWidth = -(*out).fsHalfWidth;\n\t}\n\n\t// Vector from logical line centerline to the pixel position of the thick\n\t// line being shaded. We use this distance for antialiasing and line caps clipping\n\t(*out).fsOffsetDirection = offsetPosition - BC * dot(moveOffset, BC) - centralVertex;\n\n\t// Back to clip space coords\n\t(*out).position = ssToClip(offsetPosition, offsetPosDepth);\n}\n\nstruct ArcData {\n\tc: vec2f,\n\tstart: f32,\n\tend: f32,\n\tmajor: f32,\n\tminor: f32,\n\ttilt: f32,\n\tlineWidthHalf: f32,\n};\n\nfn decodeArcData(in: VsInput) -> ArcData {\n\tvar arc : ArcData;\n\tarc.c = in.fields1.xy;\n\tarc.start = in.fields2.x * TAU;\n\tarc.end = in.fields2.y * TAU;\n\tarc.major = in.fields2.w;\n\tarc.minor = in.extraParams.x;\n\tarc.tilt = in.extraParams.y * TAU;\n\tarc.lineWidthHalf = in.fields2.z;\n\treturn arc;\n}\n\nfn strokeArc(in: VsInput, circle: bool, out: ptr) {\n\tvar arc = decodeArcData(in);\n\tif (circle) {\n\t\t// This doesn't get set for circles.\n\t\tarc.minor = arc.major;\n\t}\n\n\t// TODO: Handle rotation/tilt.\n\n\t// Compute a tighter bounding quad for arcs if possible,\n\t// to avoid massive overdraw in case of very small angular range\n\tvar minPt: vec2f;\n\tvar maxPt: vec2f;\n\n\tvar angles: vec2f = vec2f(arc.start, arc.end);\n\tvar endsX: vec2f = vec2f(arc.c.x) + arc.major * cos(angles);\n\tvar endsY: vec2f = vec2f(arc.c.y) + arc.minor * sin(angles);\n\tminPt = vec2f(endsX.x, endsY.x);\n\tmaxPt = minPt;\n\tmin_max(&minPt, &maxPt, vec2f(endsX.y, endsY.y));\n\n\tif (arc.end > arc.start) {\n\t\tif (arc.start < HALF_PI && arc.end > HALF_PI) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x, arc.c.y + arc.minor));\n\t\t}\n\t\tif (arc.start < PI && arc.end > PI) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x - arc.major, arc.c.y));\n\t\t}\n\t\tif (arc.start < PI_1_5 && arc.end > PI_1_5) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x, arc.c.y - arc.minor));\n\t\t}\n\t} else {\n\t\t// In this case, CW arcs, we know it passes through angle 0:\n\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x + arc.major, arc.c.y));\n\n\t\t// All other checks are also reversed\n\t\t// TODO: verify this logic -- it might be overestimating\n\t\tif (arc.start < HALF_PI || arc.end > HALF_PI) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x, arc.c.y + arc.minor));\n\t\t}\n\t\tif (arc.start < PI || arc.end > PI) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x - arc.major, arc.c.y));\n\t\t}\n\t\tif (arc.start < PI_1_5 || arc.end > PI_1_5) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x, arc.c.y - arc.minor));\n\t\t}\n\t}\n\n\tminPt -= arc.lineWidthHalf;\n\tmaxPt += arc.lineWidthHalf;\n\n\tvar isStart = isStartVertex(in);\n\tvar isLeft = isLeftVertex(in);\n\tvar offsetPos: vec2f;\n\toffsetPos.x = select(maxPt.x, minPt.x, isStart);\n\toffsetPos.y = select(maxPt.y, minPt.y, isLeft);\n\n\tsetMvp(in.instance);\n\n\tvar clipPos = mvpMatrix * vec4(offsetPos, 0, 1);\n\toffsetPosition = clipPosToSs(clipPos);\n\n\t// Apply the aaRange offset in the correct screenspace direction.\n\tvar aaDir: vec2f;\n\taaDir.x = select(1.0, -1.0, isStart);\n\taaDir.y = select(1.0, -1.0, isLeft);\n\tvar ssAaDir = normalize(vecToSs(vec4(aaDir, 0, 0)));\n\toffsetPosition += u.aaRange * sqrt(2.0) * ssAaDir;\n\n\tcentralVertex = posToSs(vec4(arc.c, 0, 1));\n\t(*out).fsOffsetDirection = vec2(offsetPosition - centralVertex);\n\n\t// Back to clip space coords\n\t(*out).position = ssToClip(offsetPosition, clipPos.zw);\n\n\t// Get the screenspace lengths of the major and minor axis vectors.\n\tvar ssMajor = length(vecToSs(vec4(arc.major, 0, 0, 0)));\n\tvar ssMinor = length(vecToSs(vec4(0, arc.minor, 0, 0)));\n\n\t(*out).fsMultipurpose.x = arc.start;\n\t(*out).fsMultipurpose.y = -ssMajor;\n\t(*out).fsMultipurpose.z = arc.end;\n\t(*out).fsMultipurpose.w = ssMinor;\n}\n\nstruct CommonAttribs {\n\tpos: vec2f,\n\tcolor: vec4f,\n\tlayerTC: vec2f,\n\tvpTC: vec2f,\n\tlineWidthHalf: f32,\n\tgeomType: u32,\n\tghosting: u32\n}\n\nfn decodeCommonAttribs(in: VsInput) -> CommonAttribs {\n\tvar attribs : CommonAttribs;\n\tattribs.pos = in.fields1.xy;\n\tattribs.color = in.color4b;\n\tattribs.geomType = in.flags4b.y;\n\tattribs.layerTC = vec2f(in.layerVp4b.xy) / 255.0;\n\tattribs.vpTC = vec2f(in.layerVp4b.zw) / 255.0;\n\tattribs.lineWidthHalf = in.fields2.z;\n\tattribs.ghosting = in.flags4b.w;\n\treturn attribs;\n}\n\nfn strokeIndexedTriangle(in: VsInput, out: ptr) {\n\t// nothing to go, since centralVertex = attribs.pos already happened in main()...\n\t(*out).fsHalfWidth = 0.0;\n\t(*out).fsMultipurpose = vec4f(0.0);\n\tvar objectUniforms = getObjectUniforms(in.instance);\n\t(*out).position = uniforms.projectionMatrix * uniforms.viewMatrix * objectUniforms.modelMatrix * vec4(centralVertex.xy, 0.0, 1.0);\n}\n\nfn getColor(attribs: CommonAttribs) -> vec4f {\n\t//Check layer visibility\n\t//TODO:\n\t//if (isLayerOff(attribs)) { return vec4(0.0); }\n\treturn attribs.color;\n}\n\n@vertex fn vsmain(in: VsInput) -> VsOutput {\n\n\tvar out: VsOutput;\n\n\tvar objectUniforms = getObjectUniforms(in.instance);\n\tvar attribs = decodeCommonAttribs(in);\n\n\tout.instance = in.instance;\n\tout.fsColor = getColor(attribs);\n\n\n\t// LMV-1133: Add AutoCAD-like display functionality, swapping black and white line and fill elements.\n\t/*\n\tif (u.swap != 0.0 ) {\n\t\t// if black, go to white\n\t\tif ( fsColor.r == 0.0 && fsColor.g == 0.0 && fsColor.b == 0.0 ) {\n\t\t\tfsColor.rgb = vec3(1.0,1.0,1.0);\n\t\t// if white, go to black\n\t\t} else if ( fsColor.r == 1.0 && fsColor.g == 1.0 && fsColor.b == 1.0 ) {\n\t\t\tfsColor.rgb = vec3(0.0,0.0,0.0);\n\t\t}\n\t}\n\t*/\n\n\tcentralVertex = attribs.pos;\n\toffsetPosition = attribs.pos;\n\n\tvar lineWeight = attribs.lineWidthHalf;\n\n\tvar ppu = u.pixelsPerUnit;\n\t// For perspective camera calculate pixelsPerUnit according to vertex distance from camera.\n\t// Previously this was done as a general value with distance taken from center of the model,\n\t// but this is more accurate\n\tif (u.tanHalfFov > 0.0) { // For ortho camera, tanHalfFov is set to 0 in the uniform\n\n\t\t// There's a bit of chicken and egg problem here. The offsetPosition is modified later\n\t\t// (e.g. see strokeLineSegment) but fsHalfWidth needs to be calculated beforehand for that,\n\t\t// and that in itself is based on the pixelsPerUnit. So if we wait until the end to calculate\n\t\t// ppu according to the final offsetPosition it will be too late anyway and would need to be recalculated.\n\t\t// This should be a good enough approximation, though.\n\t\tvar cameraPos = uniforms.viewMatrixInverse[3].xyz;\n\t\tvar worldPos = objectUniforms.modelMatrix * vec4f(offsetPosition.xy, 0.0, 1.0);\n\t\tvar distanceToCamera = length(cameraPos - worldPos.xyz);\n\t\tppu = u.size.y / (2.0 * distanceToCamera * u.tanHalfFov);\n\t}\n\n#if $materialHasLineStyles\n\tout.vPixelsPerUnit = ppu; // Fragment shader only uses for linestyles (in the meantime...)\n#endif\n\n\tif (lineWeight > 0.0) {\n\t\t//Do not go below a line width of one pixel\n\t\t//Since we store, half-widths, the comparison is to 0.5 instead of 1.0\n\t\tlineWeight = max(0.5, lineWeight * ppu);\n\t}\n\telse {\n\t\t//Negative line weight means device space (pixel) width.\n\t\t//Currently used for antialiasing of polygon outlines.\n\t\tlineWeight = max(0.5, abs(lineWeight));\n\t}\n\n\tout.fsHalfWidth = lineWeight;\n\n\tout.dbId = vec4u(in.dbId4b);\n\n\tout.fsVpTC = attribs.vpTC;\n\tout.fsGhosting = f32(attribs.ghosting);\n\n\tif (attribs.geomType == VBB_GT_LINE_SEGMENT\n\t\t|| attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED\n\t\t|| attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_START\n\t\t|| attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_END) {\n\t\tstrokeLineSegment(in, attribs.geomType, &out);\n\t} else if (attribs.geomType == VBB_GT_LINE_SEGMENT_MITER) {\n\t\tstrokeMiterLineSegment(in, &out);\n\t} else if (attribs.geomType == VBB_GT_ARC_CIRCULAR) {\n\t\tstrokeArc(in, true, &out);\n\t} else if (attribs.geomType == VBB_GT_ARC_ELLIPTICAL) {\n\t\tstrokeArc(in, false, &out);\n\t} else /*if (attribs.geomType == VBB_GT_TRIANGLE_INDEXED)*/ {\n\t\tstrokeIndexedTriangle(in, &out);\n\t}\n\n\t//fsGeomType = attribs.geomType;\n\n\t// pass world-pos for cut planes\n\tvar worldPosition = objectUniforms.modelMatrix * vec4f( offsetPosition.xy, 0.0, 1.0 );\n\tout.vWorldPosition = worldPosition.xyz;\n\n\treturn out;\n}\n\n\n//Gaussian falloff function\nfn curveGaussian(r : f32, width: f32) -> f32 {\n\tvar amt = clamp(abs(r / (width * 1.0)), 0.0, 1.0);\n\tamt = max(amt - 0.0, 0.0);\n\n\tvar exponent = amt * 2.0;\n\n\treturn clamp(exp(-exponent*exponent), 0.0, 1.0);\n}\n\n#if $materialHasLineStyles\nfn getLinePatternPixel(i: u32, j: u32) -> f32 {\n\treturn f32(lineStyles[j * u.lineStyleWidth + i]) * 255.0;\n}\n\nfn getPatternLength(whichPattern: u32) -> f32 {\n\tvar p1 = getLinePatternPixel(0, whichPattern);\n\tvar p2 = getLinePatternPixel(1, whichPattern);\n\treturn (p2 * 256.0 + p1);\n}\n#endif\n\n\nfn fillLineSegment(in: VsOutput, out: ptr) {\n\n\tvar radius = abs(in.fsHalfWidth);\n\tvar parametricDistance = in.fsMultipurpose.x;\n\tvar segmentLength = in.fsMultipurpose.y;\n\tvar totalDistance = in.fsMultipurpose.z;\n\tvar roundedEnd = in.fsMultipurpose.w;\n\n\t//Apply any dot/dash linetype\n#if $materialHasLineStyles\n\tvar whichPattern = u32(in.fsMultipurpose.w);\n\n\tif (whichPattern > 0) {\n\t\tconst TEX_TO_UNIT = 1.0 / 96.0;\n\n\t\tvar patternScale: f32;\n\n\t\t//If line width is negative it means device space line style (zoom invariant)\n\t\t//line width, which also implies the same about the line pattern -- check for this here.\n\t\tif (in.fsHalfWidth < 0.0) {\n\t\t\tpatternScale = LTSCALE;\n\t\t} else {\n\t\t\tpatternScale = LTSCALE * TEX_TO_UNIT * in.vPixelsPerUnit;\n\t\t}\n\n\t\tvar patLen = patternScale * getPatternLength(whichPattern);\n\t\tvar phase = (totalDistance + parametricDistance) % patLen;\n\n\t\tvar onPixel = true;\n\t\tvar radiusPixels = radius + u.aaRange;\n\n\t\tfor (var i: u32 = 2; i < u.lineStyleWidth; i += 2) {\n\n\t\t\tvar on = getLinePatternPixel(i, whichPattern);\n\t\t\tif (on == 1.0) {\n\t\t\t\ton = 0.0; //special handling for dots, map length 1 to 0\n\t\t\t}\n\t\t\ton *= patternScale;\n\n\t\t\tonPixel = true;\n\t\t\tphase -= on;\n\t\t\tif (phase < 0.0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (phase <= radiusPixels) {\n\t\t\t\tonPixel = false;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar off = getLinePatternPixel(i+1, whichPattern);\n\t\t\tif (off <= 1.0) {\n\t\t\t\toff = 0.0; //special handling for dots, map length 1 to 0\n\t\t\t}\n\t\t\toff *= patternScale;\n\n\t\t\tonPixel = false;\n\t\t\tphase -= off;\n\t\t\tif (phase < -radiusPixels) {\n\t\t\t\tdiscard;\n\t\t\t}\n\t\t\tif (phase <= 0.0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Modify the parametricDistance value used for round cap\n\t\t//rendering to reflect the current position along the dash,\n\t\t//so that dashes get caps also.\n\t\tif (!onPixel && (abs(phase) <= radiusPixels)) {\n\t\t\tsegmentLength = 0.0;\n\t\t\tparametricDistance = phase;\n\t\t}\n\t}\n#endif // HAS_LINESTYLES\n\n\t//Check for end cap or join region -- here we reduce\n\t///allowed distance from centerline in a circular way\n\t//to get a round cap/join\n\tvar dist: f32;\n\tvar offsetLength2 = dot(in.fsOffsetDirection, in.fsOffsetDirection);\n\t/*\n\t if (parametricDistance < 0.0) {\n\t var d = parametricDistance;\n\t dist = sqrt(d * d + offsetLength2);\n\t } else if (parametricDistance >= segmentLength) {\n\t var d = parametricDistance - segmentLength;\n\t dist = sqrt(d * d + offsetLength2);\n\t } else {\n\t dist = sqrt(offsetLength2);\n\t }\n\t*/\n\n\t//Branchless version of the above ifs (because who doesn't like to do boolean logic with float ops?):\n\tvar ltz = max(0.0, sign(-parametricDistance));\n\tvar gtsl = max(0.0, sign(parametricDistance - segmentLength));\n\tvar d = (ltz + gtsl) * (parametricDistance - gtsl * segmentLength);\n\tdist = sqrt(max(0.0, offsetLength2 + d*d));\n\n\t//pixel is too far out of the line center\n\t//so discard it\n\tvar range = dist - radius;\n\n\t// Handle butt capped ends:\n\t// Any line pattern != 0 (solid line) will automatically use round line ends. This behavior is on purpose!\n\t// Patterned lines must use the (unknown) actual line end style for each dash, not the style of either segment end.\n\t// The actual line end style would have to get passed in from Javascript (e.g., as extra bit in the pattern)\n\tif (roundedEnd < 0.25) {\n\t\t// this pixel is close to a butt capped end. Get its distance to the closer line end.\n\t\tvar buttRange = max(-parametricDistance, parametricDistance - segmentLength);\n\t\trange = max(range, buttRange);\n\t}\n\n\t//Here aaRange will always be 0.5 pixels.\n\t//The logic below blurs a thickness of 1 pixel, a distance of\n\t//(halfLineWidth - 0.5) to (halfLineWidth + 0.5) away from the centerline.\n\n\t//Fully outside, discard\n\tif (range > u.aaRange) {\n\t\tdiscard;\n\t}\n\n\t//The geometry covers this pixel -- do AA.\n\t(*out).color = in.fsColor;\n\n\t//Blur if we are in the blur range.\n\t//The exact parameters to the gaussian function (and inside it)\n\t//are based on personal preference observations\n\tif (range > -u.aaRange) {\n\t\t(*out).color = vec4f((*out).color.xyz, curveGaussian(range+u.aaRange, u.aaRange * 2.0));\n\t}\n\t//out.color.a *= curveGaussian(range, 1.0);\n}\n\nfn EllipticalApprox(\n\t\titers: i32,\n\t\tt0: ptr, t1: ptr,\n\t\ty: vec2f, e: vec2f, ey: vec2f, esqr: vec2f) -> f32 {\n\tvar r: vec2f;\n\tfor (var i = 0; i < 10; i++) { // maximum 10 iterations\n\t\tif (i >= iters) {\n\t\t\tbreak; // early out if we don't want the max number of iterations\n\t\t}\n\n\t\tvar t = mix(*t0, *t1, 0.5); // 0.5*(t0 + t1);\n\t\tr = ey / (vec2(t) + esqr);\n\n\t\tvar rsq = r * r;\n\t\tvar f = rsq.x + rsq.y - 1.0;\n\n\t\tif (f > 0.0) {\n\t\t\t*t0 = t;\n\t\t} else {\n\t\t\t*t1 = t;\n\t\t}\n\t}\n\n\tvar closestPoint = e * r;\n\treturn distance(closestPoint, y);\n}\n\nfn EllipseDistanceSpecial(\n\t\te: vec2f, y: vec2f, width: f32, aaRange: f32) -> f32 {\n\tvar dist: f32;\n\n\t// Bisect to compute the root of F(t) for t >= -e1*e1.\n\tvar esqr = e * e;\n\tvar ey = e * y;\n\tvar t0 = -esqr[1] + ey[1];\n\tvar t1 = -esqr[1] + length(ey);\n\n\t//Do a few initial iterations without loop break checks\n\t//to get approximately close to the result\n\tdist = EllipticalApprox(6, &t0, &t1, y, e, ey, esqr);\n\n\t//Early out -- point is going to be too far to matter for the ellipse outline\n\tif (dist > max(2.0 * (width + aaRange), e[0] * 0.05)) {\n\t\treturn dist;\n\t}\n\n\t//Do a few more iterations to get really close to the result...\n\tdist = EllipticalApprox(6, &t0, &t1, y, e, ey, esqr);\n\n\t//Early out -- point is too far to matter for the ellipse outline\n\t//The bigger the eccentricity, the worse the estimate, so increse\n\t//the tolerance based on that.\n\tvar ecc = 1.0 + 0.1 * e[0] / e[1];\n\n\tif (dist > max(ecc * (width + aaRange), e[0] * 0.001)) {\n\t\treturn dist;\n\t}\n\tif (dist < (width - aaRange) / ecc) {\n\t\treturn dist;\n\t}\n\n\t//Finally get an almost exact answer since\n\t//we are near the line width boundary\n\tdist = EllipticalApprox(10, &t0, &t1, y, e, ey, esqr);\n\treturn dist;\n}\n\n\n//----------------------------------------------------------------------------\n// The ellipse is (x0/e0)^2 + (x1/e1)^2 = 1. The query point is (y0,y1).\n// The function returns the distance from the query point to the ellipse.\n//----------------------------------------------------------------------------\nfn EllipseDistance(\n\t\te: vec2f, y: vec2f, width: f32, aaRange: f32) -> f32 {\n\tvar locE = e;\n\tvar locY = y;\n\tif (e[0] < e[1]) {\n\t\t// Determine the axis order for decreasing extents\n\t\tlocE = locE.yx;\n\t\tlocY = locY.yx;\n\t}\n\n\t// Determine reflections for y to the first quadrant.\n\tvar refl = sign(locY);\n\tlocY *= refl;\n\n\treturn EllipseDistanceSpecial(locE, locY, width, aaRange);\n}\n\nfn fillArc(in: VsOutput, out: ptr) {\n\tvar dist = length(in.fsOffsetDirection);\n\tvar angles = in.fsMultipurpose.xz; // (start, end) angles\n\tvar radiusX = abs(in.fsMultipurpose.y);\n\tvar radiusY = in.fsMultipurpose.w;\n\n\tvar edgeDist: f32;\n\tvar angle: f32;\n\tif (radiusX == radiusY) {\n\t\tedgeDist = abs(dist - radiusX);\n\t\tangle = atan2(in.fsOffsetDirection.y, in.fsOffsetDirection.x);\n\t} else {\n\t\tedgeDist = EllipseDistance(\n\t\t\tvec2(radiusX, radiusY), in.fsOffsetDirection, in.fsHalfWidth, u.aaRange);\n\t\tvar aspect = radiusX / radiusY;\n\t\tangle = atan2(aspect * in.fsOffsetDirection.y, in.fsOffsetDirection.x);\n\t}\n\tedgeDist -= in.fsHalfWidth;\n\n\t// pixel is too far out of the line center\n\t// so discard it\n\tif (edgeDist > u.aaRange) {\n\t\tdiscard;\n\t}\n\n\t// Handle clockwise arcs, which happen when the arc\n\t// crosses the X axis -- convert to CCW arc starting\n\t// at negative angle instead.\n\tif (angles.x > angles.y) {\n\t\t// Handle the case that 0 < angleStart < PI.\n\t\tif (angle > angles.x && angle < PI) {\n\t\t\tangle -= TAU;\n\t\t}\n\t\tangles.x -= TAU;\n\t\t// Fixed for https://jira.autodesk.com/browse/TREX-508: some arcs in this drawing are trimmed after translating\n\t\t// We need to handle the case that -PI < angle < angleStart < 0\n\t\t// In the case, angle needs to add 2*PI to ensure angle in the range of [angleStart, angleEnd]\n\t\tif (angle < angles.x) {\n\t\t\tangle += TAU;\n\t\t}\n\t} else if (angle < 0.0) {\n\t\tangle += TAU;\n\t}\n\n\t// TODO: Do we need this?\n\t// # ifdef LOADING_ANIMATION\n\t// \tif ((angle - angles.x) / (angles.y - angles.x) > loadingProgress) {\n\t// \t\tdiscard;\n\t// \t}\n\t// # endif\n\n\t// Are we in the exact range of the arc?\n\tif (angle > angles.x && angle < angles.y) {\n\t\t(*out).color = in.fsColor;\n\n\t\tif (edgeDist > -u.aaRange) {\n\t\t\t(*out).color.a *= curveGaussian(edgeDist + u.aaRange, u.aaRange * 2.0);\n\t\t}\n\t} else {\n\t\tdiscard;\n\t}\n}\n\n\nfn fillTriangle(in: VsOutput, out: ptr) {\n\t(*out).color = in.fsColor;\n}\n\n\n// Checks whether C is on the right/left of the AB vector\n// Returns 0 on the line\n// -1 on right side\n// 1 on left side\nfn getSide(a: vec2f, b: vec2f, c: vec2f) -> f32 {\n\treturn sign((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x));\n}\n\n\nstruct PixelOutput {\n\t@location(0) color: vec4f,\n\t@location(1) normal: vec4f,\n\t@location(2) viewDepth: vec4f,\n\t@location(3) dbId: vec4u,\n\t@location(4) modelId: vec4u,\n\t//@location(5) objectFlags: vec4u\n}\n\n@fragment fn psmain(in: VsOutput) -> PixelOutput {\n\n\tvar out: PixelOutput;\n\n\tvar objectUniforms = getObjectUniforms(in.instance);\n\tvar materialUniforms = getMaterialUniforms(objectUniforms.materialIndex);\n\n\t//Is visibility off?\n\t//Note we check for all components to be zero,\n\t//because we still want the ability to mark the ID buffer\n\t//with IDs that do not render anything into the color buffer\n\tif (in.fsColor.a == 0.0 && in.fsColor.r == 0.0 && in.fsColor.g == 0.0 && in.fsColor.b == 0.0) {\n\t\tdiscard;\n\t}\n\n\tif (in.fsHalfWidth == 0.0) {\n\t\t// Filled triangle, not a line, no need for extra math\n\t\tfillTriangle(in, &out);\n\n\t\t// cap mesh hatch pattern\n\t\tif ((materialUniforms.renderFlags & 8) != 0) {\n\t\t\tout.color = calculateHatchPattern(materialUniforms.hatchParams, in.position.xy, out.color,\n\t\t\t\thatchTintColor, materialUniforms.hatchTintIntensity);\n\t\t}\n\t} else if (in.fsMultipurpose.y < 0.0) {\n\t\tfillArc(in, &out);\n\t} else {\n\t\tfillLineSegment(in, &out);\n\t}\n\n\t// The LineShader requires the ability to discard IDs independent of color. This is needed for ghosted 2D\n\t// objects, which are visible, but not selectable (allowing to select the object below).\n\t// To support this, the id_frag shader chunk supports the ENABLE_ID_DISCARD macro, which is always defined\n\t// by LineShader. If this macro is set, id_frag requires a variable writeId to control whether the id is\n\t// written (writeId=1.0) or not (writeId=0.0).\n\tvar writeId = 1.0;\n\n\tout.color.a *= u.opacity;\n\t// For fully transparent pixels we can discard\n\tif (out.color.a == 0.0) {\n\t\tdiscard;\n\t}\n\n\t// Apply ghosting, i.e., make an object transparent and exclude it from ID buffer if...\n\t// a) It is in the ghosting layer (see FragmentList.js)\n\t// b) We are in 2D measure mode and it belongs to a different viewport than the first selected one\n\tif (in.fsGhosting != 0.0)\n\t\t//|| ((in.viewportId != 0.0) && (abs(in.fsVpTC.x * 255.0 + in.fsVpTC.y) >= 0.5 && abs(in.fsVpTC.x * 255.0 + in.fsVpTC.y - in.viewportId) >= 0.5)))\n\t{\n\t\t// apply ghosting\n\t\twriteId = 0.0;\n\n\t\t// When swapping black and white, must kick up faded inks a bit to give them more contrast\n\t\t// with the (likely to be black) background. By visual test, 0.21 looks good.\n\t\t//DT gl_FragColor.a *= ((u.swap == 1.0) ? 0.21 : 0.1);\n\t\tout.color.a *= 0.30;\n\t}\n\n\t//check doNotCut flag\n\tif (commonMaterialUniforms.doNotCutOverride + (materialUniforms.renderFlags & 2) == 0) {\n\t\tcheckCutPlanes(in.vWorldPosition);\n\t}\n\n\tif (writeId == 1.0) {\n\t\t//Store object identity information\n\t\tout.dbId = in.dbId;\n\n\t\t//Currently we don't have enough room to bind a third ID render target (32 byte limit on render attachments),\n\t\t//so we stash half of the object flags in the modelId\n\t\t//output.objectFlags = intToVec(objectUniforms.objectFlags);\n\n\t\tout.modelId = intToVec(objectUniforms.modelId | (objectUniforms.objectFlags << 16));\n\t}\n\n\treturn out;\n}\n",{IBL:Q(0),cameraUniforms:te(1),objectUniforms:G(2),lineUniforms:(t=3,(0,d.$wgsl)(me,{group:t})),hatch:v,materialHasLineStyles:e.hasLineStyles});var t}class be{#rt;#et;#Mt=new Map;#qi;#Yi;#Ki;#Qi;#tn;constructor(e){this.#rt=e,this.#et=e.getDevice(),this.#Qi=this.#rt.getVB(),this.#tn=ce}#Ct(e,t,i){let n,r=this.#et.createShaderModule({code:ye(i)});return n=this.#et.createRenderPipeline({layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#Yi}),vertex:{module:r,entryPoint:"vsmain",buffers:le(t)},fragment:{module:r,entryPoint:"psmain",targets:this.#Ki},primitive:{topology:"triangle-list",cullMode:"none"},depthStencil:{depthWriteEnabled:i.depthWrite,depthCompare:i.depthTest?i.depthFunc||"less-equal":"always",format:x}}),this.#Mt.set(e,n),n}reset(e,t){this.#qi=null,this.#Yi=e,this.#Ki=t}drawOne(e,t,i,n){const r=this.#tn(i,n);let o=this.#Mt.get(r);o||(o=this.#Ct(r,i,n)),o!==this.#qi&&(e.setPipeline(o),this.#qi=o),this.#Qi.draw(e,i,t)}}var xe=i(72091),_e=i.n(xe);let Ee,Se=[],Ae=[],we=new(_e().Vector3),Te=new(_e().Frustum),Me=!1;function Ce(e,t){return e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?e.z-t.z:e.id-t.id}function Pe(e,t){return e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?t.z-e.z:e.id-t.id}function De(e,t,i){if(i||!1!==e.visible){if(e instanceof _e().Scene||e instanceof _e().Group);else if(e instanceof S.RenderBatch);else if(e instanceof _e().Light);else if((e instanceof _e().Mesh||e instanceof _e().Line)&&(!1===e.frustumCulled||!0===Te.intersectsObject(e))){const i=e.material;i&&(i.transparent?Ae.push(e):Se.push(e),i.is2d&&(Me=!0)),!0===t&&(we.setFromMatrixPosition(e.matrixWorld),we.applyProjection(Ee),e.z=we.z)}if(e.children)for(let n=0,r=e.children.length;n0&&(e-r>n?(e=r+n,o=e):n=Math.max(0,n-(e-r)));r0&&a-r>n&&(a=r+n,o=a+s);r1.5?1:.6;Ue.w=i,this.#xn=H(Ue),this.#Tn(e,t),this.#pn.setTargetSize(e,t)}#Mn(e){let t=this.#et.createCommandEncoder();t.beginRenderPass(e).end(),this.#et.queue.submit([t.finish()])}clearMainTargets(){this.#Mn(this.#rn)}clearOverlayTargets(){this.#Mn(this.#on)}setGhostingBrightness(e){this.#_n=H(e?Be:ke)}updatePixelScale(e,t){this.#pn&&(this.#pn.updatePixelScale(e,t),this.#pn.upload())}setLineStyleBuffer(e,t){this.#pn&&(this.#pn.setLineStyleBuffer(e,t),this.#pn.upload())}getIBL(){return this.#dn}#Cn(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=e.beginRenderPass(t),s=o;if(i){if(!i.record)return o;s=i}return s.setBindGroup(0,this.#dn.getBindGroup()),s.setBindGroup(1,this.#fn.getBindGroup()),s.setBindGroup(2,this.#Ft.getBindGroup(n,r)),s.setBindGroup(3,this.#Mi.getBindGroup()),o}#Pn(e,t){let i=e.beginRenderPass(t);return i.setBindGroup(0,this.#dn.getBindGroup()),i.setBindGroup(1,this.#fn.getBindGroup()),i.setBindGroup(2,this.#Ft.getBindGroup(-1)),i.setBindGroup(3,this.#pn.getBindGroup()),i}#Dn(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.finish();if(i&&t&&this.#Ft.writeToQueue(t),!i)return n;this.#et.queue.submit([n])}beginScene(e,t){this.#fn.update(e),this.#dn.update()}#Ln(e,t,i){let n;if(!this.#cn||this.#hn.record){const r=this.#Ft.getRenderIndex(i);this.#An[this.#A]=e,this.#wn[this.#A]=r,n=this.#mn.drawOne(this.#un,r,e,t),this.#Ft.initMaterialUpdateHook(t,n),t.needsUpdate=!1,this.#A++}}#In(e,t,i){const n=this.#Ft.getRenderIndex(i);this.#gn.drawOneGhosted(this.#un,n,e,Fe)}#Rn(e){const t=e.geometry,i=e.material;this.#An[this.#A]=t,this.#wn[this.#A]=this.#A;const n=this.#mn.drawOne(this.#un,this.#A,t,i);this.#Ft.setOneObjectData(e,this.#A),this.#Ft.setOneMaterialData(i,n),this.#A++}#On(e){this.#Ft.setOneObjectData(e,this.#A),this.#gn.drawOneGhosted(this.#un,this.#A,e.geometry,Fe),this.#A++}#Nn(e){const t=this.#et.createRenderBundleEncoder(e);return t.record=!0,t}#Fn(e,t,i,n){if(n){let r=n;n.record&&(r=n.finish(),e.setRenderBundle(t,r)),i.executeBundles([r])}}renderScenePart(e,t){let i,n,r,o,s,a,l,c,h=this.#rt.getRenderTargets();if(h.setTargetsDirty(),this.#cn=!1,e instanceof S.RenderBatch)i=e,n=i.frags.modelId,r=!0,o=this.#Ln.bind(this),s=this.#In.bind(this),this.#Ft.resetUpdateHeuristic(n),i.uniformsNeedUpdate&&(this.#Ft.updateBatch(i),i.uniformsNeedUpdate=!1),this.#cn=i.useRenderBundles,this.#rt.clearModelVisibilityDirty(n),this.#cn&&(a=i.getRenderBundle(0),l=i.getRenderBundle(1),t&&a&&!l&&(a=null),!t&&l&&(i.setRenderBundle(1,null),l=null),c=i.getRenderBundle(2));else{if(i=Ie(e,this.#fn.getViewProjectionMatrix()),!i)return;n=-1,r=!1,o=this.#Rn.bind(this),s=this.#On.bind(this)}if(i.is2d())return void this.#Un(i);let u=h.getTargetsListMainPass(),d=h.getTargetsListEdgePass();this.#Ft.setDoNotCutOverride(!1);let f,p=0;do{this.#A=0;let h=this.#et.createCommandEncoder();if(e.edgesOnly){this.#Ft.setEdgeColorInt(this.#_n),this.#cn&&!c&&(c=this.#Nn(this.#ln));let e=this.#Cn(h,this.#nn,c,n,i.start);this.#un=c||e,this.#gn.reset(this.#En,d),this.#A=0;let t=0;this.#cn&&!c.record||(t=i.forEachWGPU(p,this.#Ft.MAX_BATCH,s)),this.#Fn(i,2,e,c),e.end(),f=this.#Dn(h,this.#A,!r),p=t}else{this.#Ft.setEdgeColorInt(this.#xn),this.#cn&&(a||(a=this.#Nn(this.#an)),this.#hn=a);let e=this.#Cn(h,this.#in,a,n,i.start);this.#un=a||e,this.#mn.reset(this.#En,u);let s=0;if(this.#cn&&!a.record||(s=i.forEachWGPU(p,this.#Ft.MAX_BATCH,o)),this.#Fn(i,0,e,a),e.end(),t){this.#cn&&!l&&(l=this.#Nn(this.#ln));let e=this.#Cn(h,this.#nn,l,n,i.start);if(this.#un=l||e,this.#gn.reset(this.#En,d),!this.#cn||l.record)for(let e=0;e0);return this.#un=null,this.#hn=null,f}#Un(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this.#rt.getRenderTargets();n.setTargetsDirty();let r=e,o=i?n.getOverlayTargetsList():n.getTargetsListMainPass();this.#Ft.setDoNotCutOverride(!1);let s=0;do{let e=0,n=this.#et.createCommandEncoder();const a=i?this.#sn:this.#in;let l=this.#Pn(n,a);const c=i?this.#bn:this.#yn;c.reset(this.#Sn,o);let h=r.forEachWGPU(s,this.#Ft.MAX_BATCH,(i=>{const n=i.geometry,r=t||i.material;c.drawOne(l,e,n,r),this.#Ft.setOneObjectData(i,e),this.#Ft.setOneMaterialData2D(r,0),e++}));l.end(),this.#Dn(n,e),s=h}while(s>0)}renderOverlay(e,t,i,n,r,o,s){this.#fn.update(t);let a=Ie(e,this.#fn.getViewProjectionMatrix());if(a.is2d())return void this.#Un(a,i,!0);let l=this.#rt.getRenderTargets().getOverlayTargetsList();this.#Ft.setDoNotCutOverride(!0);let c,h=0;do{let e,t=0,s=this.#et.createCommandEncoder();i&&(e=i),this.#Ft.setEdgeColorInt(H(o||Ge));let u=this.#Cn(s,this.#sn);if(this.#vn.reset(this.#En,l),c=a.forEachWGPU(h,this.#Ft.MAX_BATCH,(i=>{const n=i.geometry,r=i.material;this.#An[t]=n;const o=e||r,s=this.#vn.drawOne(u,t,n,o);i.material=o,this.#Ft.setOneObjectData(i,t),this.#Ft.setOneMaterialData(o,s),t++})),u.end(),n){if(r){let e=this.#Cn(s,this.#sn);this.#gn.reset(this.#En,l);for(let i=0;i{const r=this.#vn.drawOne(e,t,n.geometry,i);this.#Ft.setMaterialReference(t*this.#Ft.OBJECT_STRIDE_32,i),this.#Ft.setOneMaterialData(i,r),t++})),e.end()}}if(r){let e=this.#Cn(s,this.#sn);this.#gn.reset(this.#En,l);for(let i=0;i0)}}const He="$0 // ghosting\n\n@id(0) override r1: f32 = 0.9;\n@id(1) override g1: f32 = 0.9;\n@id(2) override b1: f32 = 0.9;\n\n@id(3) override r2: f32 = 0.59;\n@id(4) override g2: f32 = 0.59;\n@id(5) override b2: f32 = 0.59;\n\n@fragment\nfn main(\n @builtin(position) coord : vec4f,\n @location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n var outColor = mix(vec3f(r2, g2, b2), vec3f(r1, g1, b1), vUv.y);\n return vec4f(outColor + orderedDithering(vec2i(floor(coord.xy))) / 256.0, 1.0);\n}\n";function We(e){let t,i,n,r,o,s,a,l,c,u,f,p=e,m=!1;function g(){i=t.createRenderPipeline({layout:"auto",vertex:{module:r,entryPoint:"main"},fragment:{module:o,entryPoint:"main",targets:[{format:p.getRenderTargets().getColorTarget().format}],constants:{0:s,1:a,2:l,3:c,4:u,5:f}},primitive:{topology:"triangle-list",cullMode:"back"}})}this.init=function(){t=p.getDevice(),r||(r=t.createShaderModule({code:h})),o||(o=t.createShaderModule({code:(0,d.$wgsl)(He,de)})),!i&&m&&g(),n||(n={colorAttachments:[{view:void 0,clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]})},this.run=function(){if(!t||!m)return;let e=t.createCommandEncoder();n.colorAttachments[0].view=p.getRenderTargets().getColorTargetView();let r=e.beginRenderPass(n);r.setPipeline(i),r.draw(3),r.end(),t.queue.submit([e.finish()])},this.setClearColors=function(e,n,r,o,h,d){s=e,a=n,l=r,c=o,u=h,f=d,i=null,t&&g(),m=!0},this.getClearColors=function(){return[s,a,l,c,u,f]}}const je="@group(0) @binding(0) var envMap: texture_cube;\n@group(0) @binding(1) var envSampler: sampler;\n\nstruct EnvMapUniforms {\n\tuCamDir: vec4f,\n\tuCamUp: vec4f,\n\tuResolution: vec2f,\n\tuHalfFovTan: f32,\n\tenvMapExposure: f32,\n\texposureBias: f32,\n\ttonemapMethod: i32\n}\n@group(1) @binding(0) var u : EnvMapUniforms;\n\n$tonemap\n$envMapSample\n\nfn rayDir(vUv: vec2f) -> vec3f {\n var A = (u.uResolution.x/u.uResolution.y)*normalize(cross(u.uCamDir.xyz,u.uCamUp.xyz)) * (u.uHalfFovTan * 2.0);\n var B = normalize(u.uCamUp.xyz) * (u.uHalfFovTan * 2.0);\n var C = normalize(u.uCamDir.xyz);\n\n var ray = normalize( C + (2.0*vUv.x - 1.0)*A + (2.0*vUv.y - 1.0)*B );\n return ray;\n}\n\n\n@fragment\nfn main\t(\n\t@builtin(position) coord : vec4f,\n\t@location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n\n\tvar rd = rayDir(vUv);\n\n\tvar outColor = sampleIrradianceMap(rd, envMap, envSampler, u.envMapExposure).xyz;\n\n#if $tonemapMethod1\n\toutColor = toneMapCanonOGS_WithGamma_WithColorPerserving(u.exposureBias * outColor.xyz);\n#elif $tonemapMethod2\n\toutColor = toneMapCanonFilmic_WithGamma(u.exposureBias * outColor.xyz);\n#endif\n\n\treturn vec4f(outColor, 1.0);\n}\n";var qe=i(96118);let Xe=new qe.LmvVector3;class Ye extends f.D{constructor(e){super(e,14,!0,!1)}update(e,t,i,n,r,o){let s=e.worldUpTransform?e.getWorldDirection(Xe).applyMatrix4(e.worldUpTransform):e.getWorldDirection(Xe);this.setVector3(0,s);let a=e.worldUpTransform?e.up.clone().applyMatrix4(e.worldUpTransform):e.up;this.setVector3(4,a),this.setFloat(8,t[0]),this.setFloat(9,t[1]),this.setFloat(10,Math.tan(THREE.Math.degToRad(.5*e.fov))),this.setFloat(11,n),this.setFloat(12,r),this.setInt(13,o)}}function Ke(e){let t,i,n,r,o,s,a,l=e,c=1,u=1,f=0;this.init=function(){var e,i;t=l.getDevice(),n=new Ye(t),o||(o=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"cube"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]})),r||(r=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[o,n.getLayout()]}),vertex:{module:t.createShaderModule({code:h}),entryPoint:"main"},fragment:{module:t.createShaderModule({code:(e=!0,i=2,(0,d.$wgsl)(je,{tonemap:g,envMapSample:J(e,!e,i>0),tonemapMethod1:1===i,tonemapMethod2:2===i}))}),entryPoint:"main",targets:[{format:l.getRenderTargets().getColorTarget().format}]},primitive:{topology:"triangle-list",cullMode:"back"}})),a||(a={colorAttachments:[{view:void 0,clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]})},this.setCubeMap=function(e){(0,T.rL)(e),(0,T.el)(i),i=e},this.getCubeMap=function(){return i},this.hasCubeMap=function(){return!!i},this.setEnvExposure=function(e){const t=Math.pow(2,e);t!==u&&(u=t)},this.setExposureBias=function(e){let t=Math.pow(2,e);t!==c&&(c=t)},this.setTonemapMethod=function(e){f!==e&&(f=e)},this.setEnvRotation=function(e){},this.setCamera=function(e,i){if(!t)return;let r=l.getRenderTargets().getTargetSize();n.update(e,r,i,u,c,f)},this.run=function(){if(!t)return;!i.needsUpdate&&s||((0,T.eY)(t,i),s=t.createBindGroup({layout:o,entries:[{binding:0,resource:i.__gpuTextureCube.createView({dimension:"cube"})},{binding:1,resource:i.__gpuSampler}]})),n.upload();let e=t.createCommandEncoder();a.colorAttachments[0].view=l.getRenderTargets().getColorTargetView();let c=e.beginRenderPass(a);c.setPipeline(r),c.setBindGroup(0,s),c.setBindGroup(1,n.getBindGroup()),c.draw(3),c.end(),t.queue.submit([e.finish()])}}const Qe='$pack_depth\n\n// Total number of direct samples to take at each pixel\nconst NUM_SAMPLES = 17;\n\n// If using depth mip levels, the log of the maximum pixel offset before we need to switch to a lower\n// miplevel to maintain reasonable spatial locality in the cache\n// If this number is too small (< 3), too many taps will land in the same pixel, and we\'ll get bad variance that manifests as flashing.\n// If it is too high (> 5), we\'ll get bad performance because we\'re not using the MIP levels effectively\nconst LOG_MAX_OFFSET: i32 = 3;\n\n// This must be less than or equal to the MAX_MIP_LEVEL defined in SSAO.cpp\nconst MAX_MIP_LEVEL: i32 = 5;\n\n// This is the number of turns around the circle that the spiral pattern makes. This should be prime to prevent\n// taps from lining up. This particular choice (5) was tuned for NUM_SAMPLES == 17\n// Here is the table. The one\'s digit is the column, the ten\'s is the row to look at.\n// +0 1 2 3 4 5 6 7 8 9\n// 1, 1, 1, 2, 3, 2, 5, 2, 3, 2, // 00\n// 3, 3, 5, 5, 3, 4, 7, 5, 5, 7, // 10\n// 9, 8, 5, 5, 7, 7, 7, 8, 5, 8, // 20\n// 11, 12, 7, 10, 13, 8, 11, 8, 7, 14, // 30\n// 11, 11, 13, 12, 13, 19, 17, 13, 11, 18, // 40\n// 19, 11, 11, 14, 17, 21, 15, 16, 17, 18, // 50\n// 13, 17, 11, 17, 19, 18, 25, 18, 19, 19, // 60\n// 29, 21, 19, 27, 31, 29, 21, 18, 17, 29, // 70\n// 31, 31, 23, 18, 25, 26, 25, 23, 19, 34, // 80\n// 19, 27, 21, 25, 39, 29, 17, 21, 27, 29}; // 90\n\nconst NUM_SPIRAL_TURNS = 5;\n\nconst MIN_RADIUS = 3.0; // pixels\n\nconst TAU = 6.28318530718;\n\n//////////////////////////////////////////////////\n\n//\n// Uniforms and functions to reconstruct camera-space and world-space positions.\n// in post-processing passes from the (linear) depth texture.\n//\nstruct SAOUniforms {\n\t// vec4 used to reconstruct camera-space positions from screen-space + zValue (from tDepth).\n\t// It is computed from canvas resolution and projection matrix used during scene rendering by:\n\t// (see RenderContext.beginScene)\n\t//\n\t// vec4(-2.0f / (width*P[0][0]),\n\t// -2.0f / (height*P[1][1]),\n\t// ( 1.0f - P[0][2]) / P[0][0],\n\t// ( 1.0f + P[1][2]) / P[1][1])\n\t//\n\t// where P is the projection matrix that maps camera space points\n\t// to [-1, 1] x [-1, 1].\n\tprojInfo: vec4f,\n\n\t/* The height in pixels of a 1m object if viewed from 1m away.\n\t You can compute it from your projection matrix. The actual value is just\n\t a scale factor on radius; you can simply hardcode this to a constant (~500)\n\t and make your radius value unitless (...but resolution dependent.) */\n\tprojScale: f32,\n\n\tcameraNear: f32,\n\tcameraFar: f32,\n\tlumInfluence: f32,// how much luminance affects occlusion\n\n\t/* World-space AO radius in scene units (r). e.g., 1.0m */\n\tradius: f32,\n\t/* Bias to avoid AO in smooth corners, e.g., 0.01m */\n\tbias: f32,\n\tintensity: f32,\n\tisOrtho: i32 // 1 if ortho-camera is used, 0 for perspective\n}\n\n// Negative, "linear" depth values in world-space units\n@group(0) @binding(0) var tNormals: texture_2d;\n@group(0) @binding(1) var tDepth: texture_2d;\n@group(0) @binding(2) var u: SAOUniforms;\n\n#if $USE_MIPMAP\n\t@group(0) @binding(3) var tDepth_mip: texture_2d;\n#endif\n\n\n/* intensity / radius^6 */\n//uniform float intensityDivR6;\n//float intensityDivR6 = intensity / pow(radius, 6.0);\n\n/* Returns a unit vector and a screen-space radius for the tap on a unit disk (the caller should scale by the actual disk radius) */\nfn tapLocation(sampleNumber: i32, spinAngle: f32) -> vec3f {\n\t// Radius relative to ssR\n\tvar alpha = (f32(sampleNumber) + 0.5) * (1.0 / f32(NUM_SAMPLES));\n\tvar angle = alpha * (f32(NUM_SPIRAL_TURNS) * TAU) + spinAngle;\n\n\treturn vec3f(cos(angle), sin(angle), alpha);\n}\n\n\n/* Used for packing Z into the GB channels */\nfn CSZToKey(z: f32) -> f32 {\n\t// convert from z in camera space to 0-1 space:\n\t// z is a negative value, near and far are positive\n\t// (-z-cameraNear) / (cameraFar-cameraNear)\n\treturn clamp( (z + u.cameraNear) / (u.cameraNear - u.cameraFar), 0.0, 1.0);\n}\n\n\n/* Used for packing Z into the GB channels */\nfn packKey(key: f32) -> vec2f {\n\tvar p: vec2f;\n\n\t// Round to the nearest 1/256.0\n\tvar temp = floor(key * 255.0);\n\n\t// Integer part\n\tp.x = temp * (1.0 / 255.0);\n\n\t// Fractional part\n\tp.y = key * 255.0 - temp;\n\n\treturn p;\n}\n\n//Used to unpack depth value when input depth texture is RGBA8\nfn unpackDepthNearFar( packedDepth: vec3f ) -> f32 {\n\tvar depth = unpackDepth10(packedDepth);\n\tif (depth == 0.0) {\n\t\t//pixel is sky box\n\t\treturn -u.cameraFar * 1.0e10;\n\t}\n\treturn -(depth * (u.cameraFar - u.cameraNear) + u.cameraNear);\n}\n\n/*\n Clipping plane constants for use by reconstructZ\n\n clipInfo = (z_f == -inf()) ? Vector3(z_n, -1.0f, 1.0f) : Vector3(z_n * z_f, z_n - z_f, z_f);\n */\n//"uniform vec3 clipInfo;",\n//"vec3 clipInfo = vec3(cameraNear * cameraFar, cameraNear - cameraFar, cameraFar);",\n\n//"float reconstructCSZ(float d) {",\n// "return clipInfo[0] / (clipInfo[1] * d + clipInfo[2]);",\n//"}",\n\n/* Reconstructs screen-space unit normal from screen-space position */\n//vec3 reconstructCSFaceNormal(vec3 C) {\n// return normalize(cross(dFdy(C), dFdx(C)));\n//}\n\n//vec3 reconstructNonUnitCSFaceNormal(vec3 C) {\n// return cross(dFdy(C), dFdx(C));\n//}\n\n\n// Reconstruct camera-space P.xyz from screen-space fragCoords = (x, y) in\n// pixels and camera-space z < 0. Assumes that the upper-left pixel center\n// is at (0.5, 0.5) [but that need not be the location at which the sample tap\n// was placed!]\n//\n// Costs 3 MADD. Error is on the order of 10^3 at the far plane, partly due to z precision.\nfn reconstructCSPosition(fragCoords: vec2f, z: f32) -> vec3f {\n\tvar ndc = (fragCoords * u.projInfo.xy + u.projInfo.zw);\n\n\tif (u.isOrtho != 0) {\n\t\treturn vec3f(ndc * -1.0, z);\n\t} else {\n\t\treturn vec3f(ndc * z, z);\n\t}\n}\n\n/* Read the camera-space position of the point at screen-space pixel ssP */\nfn getPosition(ssP: vec2, depth: f32) -> vec3f {\n\t// Offset to pixel center\n\tvar P = reconstructCSPosition(vec2f(ssP) + vec2f(0.5), depth);\n\treturn P;\n}\n\n/* Read the camera-space position of the point at screen-space pixel ssP + unitOffset * ssR. Assumes length(unitOffset) == 1 */\nfn getOffsetPosition(ssC: vec2i, unitOffset: vec2f, ssR: f32) -> vec3f {\n\n\tvar ssP = vec2i(ssR * unitOffset) + ssC;\n\n\tvar z: f32;\n\n\t// We need to divide by 2^mipLevel to read the appropriately scaled coordinate from a MIP-map.\n\t// Manually clamp to the texture size because texelFetch bypasses the texture unit\n\t//"ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(CS_Z_buffer, mipLevel) - ivec2(1));",\n\t//"ivec2 mipP = ssP;",\n\t//"P.z = texelFetch(tDepth, mipP, 0).z;",\n\n#if $USE_MIPMAP\n\tvar mipLevel: u32 = u32(clamp(i32(floor(log2(ssR))) - LOG_MAX_OFFSET, 0, MAX_MIP_LEVEL));\n\n\tif (mipLevel == 0) {\n\t\tz = unpackDepthNearFar(textureLoad(tDepth, ssP, 0).rgb);\n\t}\n\telse {\n\t\tmipLevel -= 1;\n\t\tvar mipP: vec2i = clamp(ssP >> vec2u(mipLevel + 1), vec2i(0), vec2i(textureDimensions(tDepth_mip, mipLevel)) - vec2i(1));\n\t\tz = unpackDepthNearFar(textureLoad(tDepth_mip, mipP, mipLevel).rgb);\n\t}\n#else\n\tz = unpackDepthNearFar(textureLoad(tDepth, ssP, 0).rgb);\n#endif\n\n\n\t// Offset to pixel center\n\treturn reconstructCSPosition(vec2f(ssP) + vec2f(0.5), z);\n}\n\n/** Compute the occlusion due to sample with index \\a i about the pixel at \\a ssC that corresponds\n to camera-space point \\a C with unit normal \\a n_C, using maximum screen-space sampling radius \\a ssDiskRadius\n\n Note that units of H() in the HPG12 paper are meters, not\n unitless. The whole falloff/sampling function is therefore\n unitless. In this implementation, we factor out (9 / radius).\n\n Four versions of the falloff function are implemented below\n */\nfn sampleAO(ssC: vec2i, C: vec3f, n_C: vec3f, ssDiskRadius: f32, tapIndex: i32, randomPatternRotationAngle: f32) -> f32 {\n\t// Offset on the unit disk, spun for this pixel\n\tvar unitOffset = tapLocation(tapIndex, randomPatternRotationAngle);\n\tvar ssR = unitOffset.z;\n\n\t// Ensure that the taps are at least 1 pixel away\n\tssR = max(0.75, ssR * ssDiskRadius);\n\n\t// The occluding point in camera space\n\tvar Q = getOffsetPosition(ssC, unitOffset.xy, ssR);\n\n\t// aoValueFromPositionsAndNormal() in original code\n\tvar v = Q - C;\n\n\tvar vv = dot(v, v);\n\tvar vn = dot(v, n_C);\n\n\tconst epsilon = 0.001; // was 0.01, but in G3D code it\'s 0.001\n\n\t// Without the angular adjustment term, surfaces seen head-on have less AO\n\tvar angAdjust = mix(1.0, max(0.0, 1.5 * n_C.z), 0.35);\n\n\t// fallOffFunction()\n\t// comment out this line for lower quality function:\n//#define HIGH_QUALITY\n\t// A: From the HPG12 paper\n\t// Note large epsilon to avoid overdarkening within cracks\n\t//"return angAdjust * float(vv < radius * radius) * max((vn - bias) / (epsilon + vv), 0.0) * (radius * radius) * 0.6;",\n\n\t// B: Smoother transition to zero (lowers contrast, smoothing out corners). [Recommended]\n//#ifdef HIGH_QUALITY\n\n\t// Higher quality version:\n\t// Epsilon inside the sqrt for rsqrt operation\n\tvar f = max(1.0 - vv / (u.radius * u.radius), 0.0); return angAdjust * f * max((vn - u.bias) / sqrt(epsilon + vv), 0.0);\n//# else\n\t// Avoid the square root from above.\n\t// Assumes the desired result is intensity/radius^6 in main()\n\t//var f = max(u.radius * u.radius - vv, 0.0); return angAdjust * f * f * f * max((vn - u.bias) / (epsilon + vv), 0.0);\n//# endif\n\n\t// C: Medium contrast (which looks better at high radii), no division. Note that the\n\t// contribution still falls off with radius^2, but we\'ve adjusted the rate in a way that is\n\t// more computationally efficient and happens to be aesthetically pleasing.\n\t//"return angAdjust * 4.0 * max(1.0 - vv / (radius * radius), 0.0) * max(vn - bias, 0.0);",\n\n\t// D: Low contrast, no division operation\n\t//"return angAdjust * 2.0 * float(vv < radius * radius) * max(vn - bias, 0.0);",\n}\n\n\n// user variables\n\n\n// random angle in radians between 0 and 2 PI\nfn getRandomAngle(pos: vec2f) -> f32 {\n\t// from http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\n\tvar dt = dot(pos ,vec2f(12.9898,78.233));\n\treturn TAU * fract(sin(dt % 3.14) * 43758.5453);\n}\n\n@fragment fn psmain(\n\t@builtin(position) position: vec4f,\n\t@location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n\n\t// Pixel being shaded\n\tvar ssC = vec2i(floor(position.xy));\n\n\t//get the normal and depth from our normal+depth texture\n\tvar nrmz = textureLoad(tNormals, ssC, 0);\n\tvar depth = unpackDepth10(textureLoad(tDepth, ssC, 0).rgb);\n\n\t//TODO: figure out how to hook this up with a depth test\n\t// Unneccessary with depth test.\n\tif (depth == 0.0) {\n\t\t// We\'re on the skybox\n\t\treturn vec4f(1.0, packKey(1.0), 0.0);\n\t}\n\n\tdepth = -(depth * (u.cameraFar - u.cameraNear) + u.cameraNear);\n\n\tvar output: vec4f;\n\n\t// Camera space point being shaded\n\tvar C = getPosition(ssC, depth);\n\n\tvar outputGB = packKey(CSZToKey(C.z));\n\toutput.g = outputGB.x;\n\toutput.b = outputGB.y;\n\n\t// Choose the screen-space sample radius\n\t// proportional to the projected area of the sphere.\n\t// If orthographic, use 1.0 for the divisor, else use the world-space point\'s Z value.\n\tvar ssDiskRadius = u.projScale * u.radius;\n\tif (u.isOrtho == 0) {\n\t\tssDiskRadius /= -C.z;\n\t}\n\n\tvar A: f32;\n\tif (ssDiskRadius <= MIN_RADIUS) {\n\t\t// There is no way to compute AO at this radius\n\t\tA = 1.0;\n\t} else {\n\n\t\tvar sum = 0.0;\n\n\t\t// Hash function used in the HPG12 AlchemyAO paper\n\t\t//var randomPatternRotationAngle = modXXX(f32((((3 * ssC.x) ^ (ssC.y + ssC.x * ssC.y))) * 10), TAU);\n\t\tvar randomPatternRotationAngle = getRandomAngle(vUv);\n\n\t\t// Reconstruct normals from positions. These will lead to 1-pixel black lines\n\t\t// at depth discontinuities, however the blur will wipe those out so they are not visible\n\t\t// in the final image.\n\t\t//vec3 n_C = reconstructCSFaceNormal(C);\n\t\tvar n_C = unpackNormal10(nrmz.xyz);\n\n\t\tfor (var i = 0; i < NUM_SAMPLES; i++) {\n\t\t\tsum += sampleAO(ssC, C, n_C, ssDiskRadius, i, randomPatternRotationAngle);\n\t\t}\n\n\t\t//var intensityDivR6 = u.intensity / pow(u.radius, 6.0);\n\t\t// high quality:\n\t//#ifdef HIGH_QUALITY\n\t\tA = pow(max(0.0, 1.0 - sqrt(sum * (3.0 / f32(NUM_SAMPLES)))), u.intensity);\n\n\t//# else\n\t\t// lower quality:\n\t\t//A = max(0.0, 1.0 - sum * intensityDivR6 * (5.0 / float(NUM_SAMPLES)));\n\t\t// Use the following line only with the lower quality formula.\n\t\t// Anti-tone map to reduce contrast and drag dark region farther\n\t\t// (x^0.2 + 1.2 * x^4)/2.2\n\t\t//A = (pow(A, 0.2) + 1.2 * A*A*A*A) / 2.2;\n\t//# endif\n\n\t\t// This code has been removed by the creator of the algorithm, see:\n\t\t// http://g3d.cs.williams.edu/websvn/filedetails.php?repname=g3d&path=%2FG3D10%2Fdata-files%2Fshader%2FAmbientOcclusion%2FAmbientOcclusion_AO.pix\n\t\t// In practice it seems to make no difference visually, but matters for\n\t\t// time spent in the benchmark! We see drops on 80 spheres metal and red of 20%. Weird.\n\t\t// So, we\'ll leave it in.\n\t\t// Bilateral box-filter over a quad for free, respecting depth edges\n\t\t// (the difference that this makes is subtle)\n\t\t//"if (abs(dFdx(C.z)) < 0.02) {",\n\t\t// "A -= dFdx(A) * ((ssC.x & 1) - 0.5);",\n\t\t//"}",\n\t\t//"if (abs(dFdy(C.z)) < 0.02) {",\n\t\t// "A -= dFdy(A) * ((ssC.y & 1) - 0.5);",\n\t\t//"}",\n\t\t/*\n\t\tif (abs(dFdx(C.z)) < 0.02) {\n\t\t\tA -= dFdx(A) * (mod(float(ssC.x), 2.0) - 0.5);\n\t\t}\n\t\tif (abs(dFdy(C.z)) < 0.02) {\n\t\t\tA -= dFdy(A) * (mod(float(ssC.y), 2.0) - 0.5);\n\t\t}\n\t\t*/\n\n\t\t// Fade in as the radius reaches 2 pixels\n\t\tA = mix(1.0, A, clamp(ssDiskRadius - MIN_RADIUS,0.0,1.0));\n\t}\n\n\toutput.r = A;\n\toutput.a = 1.0;\n\n\t// to show depths instead of SAO, uncomment:\n\t//output.r = CSZToKey(C.z);\n\t// to show normal component (pick one, x or y):\n\t//output.r = nrmz.y;\n\n\treturn output;\n\n}\n',Ze=!0;const $e="@group(0) @binding(0) var tDepth: texture_2d;\n\n@fragment\nfn psmain(\n\t@builtin(position) coord : vec4f,\n) -> @location(0) vec4f {\n\n\t// Rotated grid subsampling to avoid XY directional bias or Z precision bias while downsampling.\n\tvar ssP = vec2i(coord.xy);\n\treturn textureLoad(tDepth, clamp(ssP * 2 + vec2i(ssP.y & 1, ssP.x & 1), vec2i(0), vec2i(textureDimensions(tDepth)) - vec2i(1)), 0);\n}\n",Je='/* Increase to make depth edges crisper (though possibly noisier. Decrease to reduce flicker. */\nconst EDGE_SHARPNESS = 3.0;\n\n/* Step in 2-pixel intervals since we already blurred against neighbors in the\n first AO pass. This constant can be increased while R decreases to improve\n performance at the expense of some dithering artifacts.\n\n Morgan found that a scale of 3 left a 1-pixel checkerboard grid that was\n unobjectionable after shading was applied but eliminated most temporal incoherence\n from using small numbers of sample taps.\n */\nconst SCALE = 2;\n\n/* Filter radius in pixels. This will be multiplied by SCALE. */\n// Don\'t change this value, as the loop using it had to be unwound and hardcoded.\nconst R = 4;\n\n//////////////////////////////////////////////////////////////////////////////////////////////\n\n/* Swizzle to use to extract the channels of source. This macro allows\n the same blur shader to be used on different kinds of input data. */\n//#define VALUE_COMPONENTS r\n\n//#define VALUE_IS_KEY 0\n\n/* Channel encoding the bilateral key value (which must not be the same as VALUE_COMPONENTS) */\n//#define KEY_COMPONENTS gb\n\n\n// Gaussian coefficients (must be of length R+1)\nconst gaussian = array(\n// float[](0.356642, 0.239400, 0.072410, 0.009869);\n// float[](0.398943, 0.241971, 0.053991, 0.004432, 0.000134); // stddev = 1.0\n0.153170, 0.144893, 0.122649, 0.092902, 0.062970 // stddev = 2.0\n// float[](0.111220, 0.107798, 0.098151, 0.083953, 0.067458, 0.050920, 0.036108); // stddev = 3.0\n);\n\n@id(0) override axisX : i32 = 1;\n\nstruct SAOBlurUniforms {\n\tradius: f32\n}\n\n@group(0) @binding(0) var tAO: texture_2d;\n@group(0) @binding(1) var u: SAOBlurUniforms;\n\n//#define result gl_FragColor.r\n//#define keyPassThrough gl_FragColor.gb\n\n/* Returns a number on (0, 1) */\nfn unpackKey(p: vec2f) -> f32 {\n return p.x + p.y * (1.0 / 255.0);\n}\n\n\n@fragment fn psmain(\n\t@builtin(position) position: vec4f,\n\t@location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n\n\tvar axis = vec2i(axisX, 1 - axisX);\n\tvar output: vec4f;\n\n\tvar ssC = vec2i(floor(position.xy));\n\tvar temp = textureLoad(tAO, ssC, 0);\n\n\toutput.g = temp.g;\n\toutput.b = temp.b;\n\toutput.a = temp.a;\n\n\tvar sum = temp.r;\n\n\tif (temp.a == 0.0) {\n\t\t// Sky pixel (we encoded that flag in the A component in the SAO shader)\n\t\toutput.r = sum;\n\t\treturn output;\n\t}\n\n\tvar key = unpackKey(output.gb);\n\n\t// Base weight for depth falloff. Increase this for more blurriness,\n\t// decrease it for better edge discrimination\n\tvar BASE = gaussian[0];\n\tvar totalWeight = BASE;\n\tsum *= totalWeight;\n\n\tvar scale = 1.5 / u.radius;\n\n\tfor (var r = -R; r <= R; r++) {\n\t\t// We already handled the zero case above. This loop should be unrolled and the static branch optimized out,\n\t\t// so the IF statement has no runtime cost\n\t\tif (r != 0) {\n\t\t\ttemp = textureLoad(tAO, ssC + axis * r * SCALE, 0);\n\n\t\t\tvar tapKey = unpackKey(temp.gb);\n\t\t\tvar value = temp.r;\n\n\t\t\t// spatial domain: offset gaussian tap\n\t\t\tvar weight = 0.3 + gaussian[abs(r)];\n\n\t\t\t// range domain (the "bilateral" weight). As depth difference increases, decrease weight.\n\t\t\tvar dz = tapKey - key;\n\t\t\tweight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n\n\t\t\tsum += value * weight;\n\t\t\ttotalWeight += weight;\n\t\t}\n\t}\n\n\tconst epsilon = 0.0001;\n\toutput.r = sum / (totalWeight + epsilon);\n\n\treturn output;\n}\n';class et extends f.D{constructor(e){super(e,48,!0,!1)}setCamera(e,t,i){let n=e.near,r=e.far;this.setFloat(5,n),this.setFloat(6,r);let o=e.projectionMatrix.elements;e.isPerspective?this.setFloat4(0,-2/(t*o[0]),2/(i*o[5]),(1-o[8])/o[0],-(1+o[9])/o[5]):this.setFloat4(0,-2/(t*o[0]),2/(i*o[5]),(1-o[12])/o[0],-(1-o[13])/o[5]);let s=e.isPerspective?0:1;this.setInt(11,s);let a=i*o[5]*.125;this.setFloat(4,a)}setAOOptions(e,t,i){void 0!==e&&this.setFloat(8,e),void 0!==t&&this.setFloat(9,t),void 0!==i&&this.setFloat(10,i)}}class tt extends f.D{constructor(e){super(e,16,!0,!1)}setRadius(e){this.setFloat(0,e),this.upload()}}function it(){return{binding:arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,visibility:arguments.length>1&&void 0!==arguments[1]?arguments[1]:GPUShaderStage.FRAGMENT,texture:{sampleType:arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unfilterable-float"}}}function nt(){return{binding:arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,visibility:arguments.length>1&&void 0!==arguments[1]?arguments[1]:GPUShaderStage.FRAGMENT,buffer:{}}}const rt={topology:"triangle-list",cullMode:"back"},ot=5;function st(e){let t,i,n,r,o,s,a,l,c,u,f,p,m,g,v,y,b,x,_,E,S,A,w,T=e;this.init=function(){t=e.getDevice(),n=new et(t),n.setAOOptions(8,.01,1),u=new tt(t),u.setRadius(8);const i=t.createShaderModule({code:h}),r=t.createShaderModule({label:"sao mip shader",code:$e}),o=t.createShaderModule({code:Je}),s=T.getRenderTargets().getPreferredFormat();"bgra8unorm"!==s&&"rgba8unorm"!==s&&console.warn("post-processing render target format",s,"may not work with SSAO"),a=t.createBindGroupLayout({label:"sao bind group layout",entries:[it(0),it(1),nt(2),it(3)]}),y=t.createBindGroupLayout({label:"sao mip bind group layout",entries:[it(0)]}),f=t.createBindGroupLayout({entries:[it(0),nt(1)]}),l=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[a]}),vertex:{module:i,entryPoint:"mainFlipY"},fragment:{module:t.createShaderModule({code:(0,d.$wgsl)(Qe,{pack_depth:Y,USE_MIPMAP:Ze})}),entryPoint:"psmain",targets:[{format:s}]},primitive:rt}),x=t.createRenderPipeline({label:"sao mip pipeline",layout:t.createPipelineLayout({bindGroupLayouts:[y]}),vertex:{module:i,entryPoint:"mainFlipY"},fragment:{module:r,entryPoint:"psmain",targets:[{format:"rgb10a2unorm"}]},primitive:rt}),g=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[f]}),vertex:{module:i,entryPoint:"mainFlipY"},fragment:{module:o,entryPoint:"psmain",targets:[{format:s}],constants:{0:1}},primitive:rt}),v=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[f]}),vertex:{module:i,entryPoint:"mainFlipY"},fragment:{module:o,entryPoint:"psmain",targets:[{format:s}],constants:{0:0}},primitive:rt}),c={colorAttachments:[{view:void 0,clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]}},this.cleanup=function(){var e;null===(e=i)||void 0===e||e.destroy()},this.setAOOptions=function(e,t,i){n.setAOOptions(e,t,i),u.setRadius(e)},this.setUnitScale=function(e){},this.resize=function(e,l){r=e,o=l;const c=T.getRenderTargets();i&&i.destroy(),_&&_.destroy(),i=t.createTexture({size:[e,l],format:c.getPreferredFormat(),usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),A=i.createView(),w=c.getPostTarget(0).createView();const h=c.getViewDepthTarget().createView();E=null,S=[],b=[];const d=Math.min(ot,Math.min(Math.floor(Math.log2(e)),Math.floor(Math.log2(l)))),g=0|e/2,v=0|l/2;g>=1&&v>=1&&(_=t.createTexture({label:"saoMipTarget",size:[g,v],format:"rgb10a2unorm",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING,mipLevelCount:d}),E=_.createView({baseMipLevel:0,mipLevelCount:d}));for(let e=0;e4&&void 0!==arguments[4]?arguments[4]:"ground shadow texture bind group";return e.createBindGroup({label:r,layout:t,entries:[{binding:0,resource:n},{binding:1,resource:i}]})}function ft(e,t){return(0,d.$wgsl)("$pack_depth\n$groundShadowTexture\n\nconst PI: f32 = 3.14159265358979;\n@id(0) override KERNEL_SCALE: f32;\n@id(1) override KERNEL_RADIUS: f32;\noverride SIGMA: f32 = (2.0 * KERNEL_RADIUS + 1.0) / 6.0;\noverride SIGMASQ2: f32 = 2.0 * SIGMA * SIGMA;\noverride QUOTIENT: f32 = sqrt(PI * SIGMASQ2);\n\n#if $horizontal\n fn getUv(vUv: vec2f, x: f32) -> vec2f {\n\t\treturn vec2f(vUv.x + KERNEL_SCALE * x, vUv.y);\n\t}\n#else\n fn getUv(vUv: vec2f, y: f32) -> vec2f {\n return vec2f(vUv.x, vUv.y + KERNEL_SCALE * y);\n }\n#endif\n\nfn kernelVal(x: f32) -> f32 {\n return (1.0 / QUOTIENT) * exp(-x * x / SIGMASQ2);\n}\n\n@fragment\nfn psmain(\n @builtin(position) coord: vec4f,\n @location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n var depthVal: f32 = 0.0;\n var sum: f32 = 0.0;\n var kVal: f32;\n\n for (var x = -KERNEL_RADIUS; x <= KERNEL_RADIUS; x += 1.0) {\n kVal = kernelVal(x);\n depthVal += unpackDepth(textureSample(map, smpl, getUv(vUv, x))) * kVal;\n sum += kVal;\n }\n\n return packDepth(depthVal / sum);\n}\n",{pack_depth:Y,groundShadowTexture:ut(t),horizontal:e})}class pt{#rt;#et;#Bn={ibl:0,camera:1,object:2};#En=[];#kn=[];#Mt=new Map;#qi;#Qi;#Vn={};constructor(e,t,i,n,r){this.#rt=e,this.#et=e.getDevice();for(let e in this.#Bn)switch(e){case"ibl":this.#En[this.#Bn[e]]=t;break;case"camera":this.#En[this.#Bn[e]]=i;break;case"object":this.#En[this.#Bn[e]]=n}this.#kn.push({format:r})}getBindGroupOrder(){return this.#Bn}getPipeline(e){const t=se(e,this.#Vn,0,!1,!1,!1);let i=this.#Mt.get(t);if(i)return i;const n=this.#et.createShaderModule({label:"ground shadow shader",code:(r=this.#Bn.ibl,o=this.#Bn.camera,s=this.#Bn.object,(0,d.$wgsl)("// We don't need IBL here, but this is where cut planes are currently implemented\n$IBL\n$cameraUniforms\n$objectUniforms\n$pack_depth\n\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location(0) vWorldPosition: vec3f,\n //@location(1) @interpolate(flat) doNotCut: u32\n}\n\n@vertex fn vsmain(\n @location(0) position: vec3f,\n @builtin(instance_index) instance: u32\n) -> VertexOutput {\n\n var objectUniforms = getObjectUniforms(instance);\n\n var output: VertexOutput;\n\n var pos4 = vec4f(position.x, position.y, position.z, 1.0);\n var mvMatrix = uniforms.viewMatrix * objectUniforms.modelMatrix;\n var mvPosition = mvMatrix * pos4;\n\n output.position = uniforms.projectionMatrix * mvPosition;\n output.vWorldPosition = (objectUniforms.modelMatrix * pos4).xyz;\n\n return output;\n}\n\n@fragment fn psmain(\n in: VertexOutput\n) -> @location(0) vec4f {\n // if (in.doNotCut == 0) {\n checkCutPlanes(in.vWorldPosition);\n // }\n\n var depth = 1.0 - in.position.z / in.position.w;\n\n return packDepth(depth);\n}\n",{IBL:Q(r),cameraUniforms:te(o),objectUniforms:G(s),pack_depth:Y}))});var r,o,s;const a={label:"ground shadow pipeline",layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#En}),vertex:{module:n,entryPoint:"vsmain",buffers:ae(e,!1,!1,!1)},fragment:{module:n,entryPoint:"psmain",targets:this.#kn},primitive:{cullMode:"none"},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:x,depthBias:1,depthBiasSlopeScale:1}};return e.isLines?a.primitive.topology="line-list":a.primitive.topology="triangle-list",i=this.#et.createRenderPipeline(a),this.#Mt.set(t,i),i}reset(){this.#qi=null,this.#Qi=this.#rt.getVB()}drawOne(e,t,i){const n=this.getPipeline(i);n!==this.#qi&&(e.setPipeline(n),this.#qi=n),this.#Qi.draw(e,i,t)}}class mt{#rt;#et;#Gn;#Bn={camera:0,texture:1};#En=[];#kn=[];constructor(e,t,i,n,r){this.#rt=e,this.#et=e.getDevice();for(let e in this.#Bn)switch(e){case"camera":this.#En[this.#Bn[e]]=t;break;case"texture":this.#En[this.#Bn[e]]=i}this.#kn.push({format:n,blend:_});const o=this.#et.createShaderModule({label:"ground shadow color shader",code:(s=this.#Bn.camera,a=this.#Bn.texture,(0,d.$wgsl)("$cameraUniforms\n$groundShadowTexture\n$pack_depth\n\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location(0) vUv: vec2f\n}\n\n@vertex fn vsmain(\n @location(0) position: vec3f,\n @location(1) uv: vec2f,\n @builtin(instance_index) instance: u32\n) -> VertexOutput {\n\n var output: VertexOutput;\n\n var pos4 = vec4f(position.x, position.y, position.z, 1.0);\n var mvPosition = uniforms.viewMatrix * pos4;\n\n output.position = uniforms.projectionMatrix * mvPosition;\n output.vUv = uv;\n\n return output;\n}\n\n@fragment fn psmain(\n in: VertexOutput\n) -> @location(0) vec4f {\n var depthVal = unpackDepth(textureSample(map, smpl, in.vUv));\n var shadowColor = vec4f(0, 0, 0, 1);\n\n return vec4f(shadowColor.rgb, shadowColor.a * depthVal);\n}\n",{cameraUniforms:te(s),groundShadowTexture:ut(a),pack_depth:Y}))});var s,a;this.#Gn=this.#et.createRenderPipeline({label:"ground shadow color pipeline",layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#En}),vertex:{module:o,entryPoint:"vsmain",buffers:[{arrayStride:4*r,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"}]}]},fragment:{module:o,entryPoint:"psmain",targets:this.#kn},primitive:{cullMode:"back",topology:"triangle-list"},depthStencil:{depthWriteEnabled:!1,depthCompare:"less",format:x,depthBias:0,depthBiasSlopeScale:0}})}getPipeline(){return this.#Gn}getBindGroupOrder(){return this.#Bn}}class gt{#rt;#et;#Gn;#zn;#Hn;#Wn;#Bn={texture:0};#En=[];#kn=[];constructor(e,t,i,n,r,o){this.#rt=e,this.#et=e.getDevice(),this.#zn=n,this.#Hn=r,this.#Wn=o;for(let e in this.#Bn)if("texture"===e)this.#En[this.#Bn[e]]=t;this.#kn.push({format:i});const s=this.#et.createShaderModule({label:"ground shadow blur vertex shader",code:h}),a=this.#et.createShaderModule({label:"ground shadow blur fragment shader",code:ft(this.#zn,this.#Bn.texture)});this.#Gn=this.#et.createRenderPipeline({label:"ground shadow blur pipeline",layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#En}),vertex:{module:s,entryPoint:"mainFlipY"},fragment:{module:a,entryPoint:"psmain",targets:this.#kn,constants:{0:this.#Hn,1:this.#Wn}},primitive:{cullMode:"back",topology:"triangle-list"}})}getPipeline(){return this.#Gn}getBindGroupOrder(){return this.#Bn}}class vt{#rt;#et;#jn=64;#qn=1;#Xn=7;#Yn;#Kn;#at;#Qn;#Zn;#$n;#Jn;#fn;#Ft;#er;#tr;#ir;#nr;#rr;#rn;#or;#sr;#ar;#lr;#cr;#hr;#ur;#dr=new Float32Array(20);#fr;#pr=new Uint16Array(6);#mr=new qe.LmvVector3;#gr=new THREE.Quaternion;#vr=new THREE.Euler;#yr=new qe.LmvVector3(1,1,1);#We=new THREE.OrthographicCamera;#br=new at.FrustumIntersector;#xr=!0;#_r=lt.GroundFlags.GROUND_FINISHED;#Er=!1;#Sr=new qe.LmvVector3(0,0,0);#Ar=new qe.LmvVector3(0,0,0);#wr=new qe.LmvVector3(0,0,0);#Tr=new qe.LmvVector3(0,0,0);#le=new THREE.Box3;#Mr=[];#Cr;#Pr=0;#Dr=0;#Lr=0;constructor(e){this.#rt=e,this.enabled=!1}init(e){this.#et=this.#rt.getDevice(),this.#fn=new ne(this.#et),this.#Ft=e,this.#ar=this.#et.createBindGroupLayout({label:"ground shadow texture bind group layout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),this.#Ir(),this.#er=new pt(this.#rt,this.#rt.getIBL().getLayout(),this.#fn.getLayout(),this.#Ft.getLayout(!1),this.#Yn.format),this.#tr=new mt(this.#rt,this.#fn.getLayout(),this.#ar,navigator.gpu.getPreferredCanvasFormat(),5),this.#nr=new gt(this.#rt,this.#ar,this.#Kn.format,!1,(this.#qn/this.#jn).toFixed(4),this.#Xn.toFixed(2)),this.#ir=new gt(this.#rt,this.#ar,this.#Yn.format,!0,(this.#qn/this.#jn).toFixed(4),this.#Xn.toFixed(2)),this.#Rr(),this.setTransform(new qe.LmvVector3(0,0,0),new qe.LmvVector3(1,1,1),new qe.LmvVector3(0,1,0),new qe.LmvVector3(0,1,0))}#Ir(){this.#Yn=this.#et.createTexture({label:"ground shadow h texture",size:{width:this.#jn,height:this.#jn},format:navigator.gpu.getPreferredCanvasFormat(),usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.#Qn=this.#Yn.createView({label:"ground shadow h texture view"}),this.#Kn=this.#et.createTexture({label:"ground shadow v texture",size:[this.#jn,this.#jn],format:navigator.gpu.getPreferredCanvasFormat(),usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.#Zn=this.#Kn.createView({label:"ground shadow v texture view"}),this.#at=this.#et.createTexture({size:[this.#jn,this.#jn],format:x,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.#$n=this.#at.createView(),this.#Jn=this.#et.createSampler({label:"ground shadow texture sampler",magFilter:"linear",minFilter:"linear"}),this.#rn={label:"ground shadow clear pass descriptor",colorAttachments:[{view:this.#Qn,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"},{view:this.#Zn,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"}],depthStencilAttachment:{view:this.#$n,depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}},this.#rr={label:"ground shadow pass descriptor",colorAttachments:[{view:this.#Qn,loadOp:"load",storeOp:"store"}],depthStencilAttachment:{view:this.#$n,depthLoadOp:"load",depthStoreOp:"store"}},this.#sr={label:"ground shadow color pass descriptor",colorAttachments:[{loadOp:"load",storeOp:"store"}],depthStencilAttachment:{depthLoadOp:"load",depthStoreOp:"store"}},this.#or={label:"ground shadow blur pass descriptor",colorAttachments:[{loadOp:"load",storeOp:"store"}]},this.#hr=dt(this.#et,this.#ar,this.#Jn,this.#Qn,"ground shadow color texture bind group"),this.#lr=dt(this.#et,this.#ar,this.#Jn,this.#Zn,"ground shadow blur h texture bind group"),this.#cr=dt(this.#et,this.#ar,this.#Jn,this.#Qn,"ground shadow blur v texture bind group"),this.#ur=this.#et.createBuffer({label:"ground shadow plane buffer",size:this.#dr.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),this.#fr=this.#et.createBuffer({label:"ground shadow plane index buffer",size:this.#pr.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST})}#Rr(){this.#dr.set([-.5,.5,0,0,0,.5,.5,0,1,0,-.5,-.5,0,0,1,.5,-.5,0,1,1]),this.#pr.set([1,3,2,1,2,0])}#Or(e,t,i,n){const r=new w.LmvMatrix4(!1),o=new qe.LmvVector3,s=new qe.LmvVector3;o.subVectors(e,i),r.lookAt(o,e,n),s.copy(i).multiplyScalar(-.5*t.y).add(e),this.#mr.copy(s),this.#vr.setFromRotationMatrix(r),this.#gr.setFromEuler(this.#vr,!1),this.#yr.set(t.z,t.x,t.y),r.compose(this.#mr,this.#gr,this.#yr);for(let e=0;e<4;++e)o.set(this.#dr[5*e],this.#dr[5*e+1],this.#dr[5*e+2]),o.applyMatrix4(r),this.#dr[5*e]=o.x,this.#dr[5*e+1]=o.y,this.#dr[5*e+2]=o.z}setTransform(e,t,i,n){e.equals(this.#Sr)&&t.equals(this.#Ar)&&i.equals(this.#wr)&&n.equals(this.#Tr)||(this.setDirty(),this.#Sr.copy(e),this.#Ar.copy(t),this.#wr.copy(i),this.#Tr.copy(n),this.#We.left=-t.z/2,this.#We.right=t.z/2,this.#We.top=t.x/2,this.#We.bottom=-t.x/2,this.#We.near=1,this.#We.far=t.y+this.#We.near,this.#We.updateProjectionMatrix(),this.#Rr(),this.#Or(e,t,i,n),this.#We.position.addVectors(e,i.clone().multiplyScalar(-t.y/2-this.#We.near)),n&&this.#We.up.set(n.x,n.y,n.z),this.#We.lookAt(e),this.#We.orthoScale=t.x,this.#We.clientHeight=this.#jn,this.#br.reset(this.#We),this.#br.areaCullThreshold=2)}#Nr(){this.#fn.update(this.#We),this.#rt.getIBL().update()}#Dn(e){const t=e.finish();this.#et.queue.submit([t])}#Fr(e,t){if(e.length!==t.length)return!0;for(let i=0;i{e.frags.getWorldBounds(t,this.#le);const i=e.frags.vizflags[t]&ct.MeshFlags.MESH_VISIBLE,n=this.#br.estimateProjectedDiameter(this.#le){s=this.#Ft.getRenderIndex(n),this.#er.drawOne(i,s,e)})),i.end(),this.#Dn(t)}prepareGroundShadow(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if(!this.enabled||e.isEmpty())return this.#_r=lt.GroundFlags.GROUND_FINISHED,i;const r=e.getGeomScenesPerModel();if(this.#xr=this.#Fr(this.#Mr,r)||this.#xr,this.#xr)this.clear(),this.#xr=!1,this.#Nr(),this.#Mr=r,this.#Cr=e.getGeomScenes(),this.#Pr=this.#Cr.length,this.#Dr=0,this.#Lr=t?Math.max(Math.ceil(this.#Pr/100),t):this.#Pr;else{if(this.#_r===lt.GroundFlags.GROUND_RENDERED||this.#_r===lt.GroundFlags.GROUND_FINISHED)return this.#_r=lt.GroundFlags.GROUND_FINISHED,i;0===t&&(this.#Lr=this.#Pr)}let o,s,a;i&&(o=performance.now(),s=n*i);let l=0;for(;l{const t=e.target;(t.__gpuUniformsMask&R.TEXTURE_MASK)!==F(t)&&this.invalidateRenderBundles()},this.initSync=function(e,t){l=new X(this),a=navigator.gpu.getPreferredCanvasFormat(),i.configure({device:u,format:a,alphaMode:"premultiplied"}),r=!0,function(){let e=u.createTexture({dimension:"2d",format:"bgra8unorm",size:[4,4],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),t=e.createView(),i=u.createSampler({addressModeU:"repeat",addressModeV:"repeat"});h={texture:e,sampler:i,view:t};const n=new Uint32Array(16),r=4294967295,o=4294901760;n[0]=o,n[1]=r,n[2]=r,n[3]=o,n[4]=o,n[5]=r,n[6]=o,n[7]=o,n[8]=o,n[9]=o,n[10]=r,n[11]=o,n[12]=r,n[13]=r,n[14]=o,n[15]=r,u.queue.writeTexture({texture:e},n,{offset:0,bytesPerRow:16},[4,4])}(),s=new c(this),g.init(),v.init(l),S.init(),y.init(),A.init(l),this.setSize(e,t),x.init(),_.init(),u.lost.then((e=>{console.error(`WebGPU device was lost: ${e.message}`),u=null,this.fireEvent({type:yt.WEBGPU_DEVICE_LOST})}))},this.clearModelVisibilityDirty=function(e){m.get(e).visibilityDirty=!1},this.addModel=function(e){f.add(e),l.addModel(e);const t={visibilityDirty:!1},i=w.bind(t,e,this);t.callback=i,e.getFragmentList().registerVisibilityDirtyCallback(i),m.set(e.id,t)},this.removeModel=function(e){f.delete(e),l.removeModel(e);const t=m.get(e.id).callback;e.getFragmentList().removeVisibilityDirtyCallback(t),m.delete(e.id),this.invalidateRenderBundles(e);const i=e.getIterator().getGeomScenes();for(const e of i)e&&(e.isComplete=!1,e.useRenderBundles=!1)},this.getPixelRatio=function(){var e;return o||(null===(e=window)||void 0===e?void 0:e.devicePixelRatio)||1},this.setPixelRatio=function(e){o=e},this.setSize=function(e,t,i){n.width=e*this.getPixelRatio(),n.height=t*this.getPixelRatio(),!1!==i&&(n.style.width=e+"px",n.style.height=t+"px"),g.resize(n.width,n.height),v.resize(n.width,n.height),S.resize(n.width,n.height),y.resize(n.width,n.height)},this.renderBackground=function(e){e&&_.hasCubeMap()?_.run():x.run()},this.present=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(r){if(n){const t=g.getPostTarget(1);y.run(t.createView(),e),n.run(i.getCurrentTexture(),t)}else y.run(i.getCurrentTexture().createView(),e);t&&u.queue.onSubmittedWorkDone().then((()=>{this.fireEvent({type:yt.WEBGPU_RENDER_DONE})}))}else this.fireEvent({type:yt.WEBGPU_RENDER_DONE})},this.beginScene=function(e,t){r&&(p.clear(),v.beginScene(e,t))},this.renderScenePart=function(e,t){if(!r)return;const i=v.renderScenePart(e,t);i&&(d.push(i),d.length>=bt&&(u.queue.submit(d),d.length=0))},this.renderOverlay=function(e,t,i,n,o,s,a){r&&v.renderOverlay(e,t,i,n,o,s,a)},this.flushCommandQueue=function(){d.length&&(u.queue.submit(d),d.length=0)},this.getDevice=function(){return u},this.getRenderTargets=function(){return g},this.getVB=function(){return s},this.getGradientPass=function(){return x},this.getEnvMapPass=function(){return _},this.getIBL=function(){return v.getIBL()},this.getSAO=function(){return S},this.getMainPass=function(){return v},this.getGroundShadowPass=function(){return A},this.getBlendSettings=function(){return y.getBlendSettings()},this.setRenderTarget=function(e){},this.clearTarget=function(e){},this.clearMainTargets=function(){r&&v.clearMainTargets()},this.clearOverlayTargets=function(){r&&v.clearOverlayTargets()},this.clear=function(){},this.depthFunc=function(){},this.updateTimestamp=function(e){},this.getMaxAnisotropy=function(){return 16},this.supportsMRT=function(){return!0},this.verifyMRTWorks=function(){return!0},this.cleanup=function(){},this.getPlaceholderTexture=function(){return h},this.stats=function(){s.stats()},this.setLineStyleBuffer=function(e,t){v.setLineStyleBuffer(e,t)},this.invalidateRenderBundles=function(e){let t;t=e?[e]:f,t.forEach((e=>{if(!p.has(e.id)){const t=e.getIterator().getGeomScenes();for(const e of t)e&&e.clearRenderBundles();p.set(e.id)}}))},this.getContext=function(){return this.context}}xt.Events=yt},26027:(e,t,i)=>{"use strict";i.d(t,{eY:()=>a,el:()=>h,i1:()=>l,rL:()=>c});var n=i(82116),r=i(99315);function o(e,t){if(e.width<=t&&e.height<=t)return e;if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){var i=t/Math.max(e.width,e.height),n=Math.max(Math.floor(e.width*i),1),r=Math.max(Math.floor(e.height*i),1),o=document.createElement("canvas");return o.width=n,o.height=r,o.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,n,r),o}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}function s(e,t){return e.createSampler({addressModeU:(0,n.X9)(t.wrapS),addressModeV:(0,n.X9)(t.wrapT),magFilter:(0,n.X9)(t.magFilter),minFilter:(0,n.X9)(t.minFilter),mipmapFilter:(0,n.X9)(t.minFilter,!0),maxAnisotropy:t.anisotropy||1})}function a(e,t){if(6!==(null==t?void 0:t.image.length))return;if(!0!==t.needsUpdate)return;let i=t instanceof THREE.CompressedTexture,r=t.image[0]instanceof THREE.DataTexture,a=[];for(let n=0;n<6;n++)a[n]=i||r?r?t.image[n].image:t.image[n]:o(t.image[n],e.limits.maxTextureDimension2D||8192);var l;t.__gpuTextureCube||(t.addEventListener("dispose",(()=>{var e;null===(e=t.__gpuTextureCube)||void 0===e||e.destroy(),t.__gpuTextureCube=null,t.__gpuSampler=null})),t.__gpuTextureCube=e.createTexture({dimension:"2d",format:(0,n.L0)(t.format,t.type),mipLevelCount:(null===(l=a[0].mipmaps)||void 0===l?void 0:l.length)||1,size:[a[0].width,a[0].height,6],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),t.__gpuSampler=s(e,t));for(let n=0;n<6;n++)if(i){let i=a[n].mipmaps;for(let r=0,o=i.length;r{var e;null===(e=i.__gpuTexture)||void 0===e||e.destroy(),i.__gpuTexture=null,i.__gpuSampler=null})),i.__gpuTexture=e.createTexture(u),i.__gpuSampler=s(e,i));let d=i.image,f=i.mipmaps;if(c||l)if(f.length>0){for(let t=0,n=f.length;t0){for(let t=0,n=f.length;t{"use strict";i.d(t,{D:()=>n});class n{#et;#Vr;#Gr;#zr;#Dt;#Lt;#Hr;#Wr=!1;constructor(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];this.#et=e;let r=t,o=t%4;o&&(r+=4-o),this.#Vr=new Float32Array(r),this.#Gr=new Int32Array(this.#Vr.buffer);let s=0;i&&(s|=GPUShaderStage.FRAGMENT),n&&(s|=GPUShaderStage.VERTEX),this.#Hr=s,this.#et&&this.#Ir()}#Ir(){this.#zr||(this.#zr=this.#et.createBuffer({size:this.#Vr.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.#Dt=this.#et.createBindGroupLayout({entries:[{binding:0,visibility:this.#Hr,buffer:{}}]}),this.#Lt=this.#et.createBindGroup({layout:this.#Dt,entries:[{binding:0,resource:{buffer:this.#zr}}]}))}setDevice(e){this.#et=e,this.#Ir()}getLayout(){return this.#Dt}getBindGroup(){return this.#Lt}getBuffer(){return this.#zr}setFloat(e,t){this.#Vr[e]=t}getFloat(e){return this.#Vr[e]}setFloat2(e,t,i){this.#Vr[e]=t,this.#Vr[e+1]=i}setFloat4(e,t,i,n,r){this.#Vr[e]=t,this.#Vr[e+1]=i,this.#Vr[e+2]=n,this.#Vr[e+3]=r}setVector3(e,t){this.#Vr[e]=t.x,this.#Vr[e+1]=t.y,this.#Vr[e+2]=t.z}setVector4(e,t){this.#Vr[e]=t.x,this.#Vr[e+1]=t.y,this.#Vr[e+2]=t.z,this.#Vr[e+3]=t.w}setColor(e,t,i){this.#Vr[e]=t.r,this.#Vr[e+1]=t.g,this.#Vr[e+2]=t.b,void 0!==i&&(this.#Vr[e+3]=i)}setMatrix3x3(e,t){for(let i=0;i<3;i++)for(let n=0;n<3;n++)this.#Vr[e+n+4*i]=t[n+3*i]}setInt=function(e,t){this.#Gr[e]=t};getInt(e){return this.#Gr[e]}setBuffer(e,t){this.#Vr.set(t,e)}upload(){this.#et.queue.writeBuffer(this.#zr,0,this.#Vr.buffer,0,this.#Vr.byteLength)}}},99315:(e,t,i)=>{"use strict";function n(e){return Math.floor(Math.log2(Math.max(e.width,e.height)))+1}function r(){return"\n\tvar pos : array, 3> = array, 3>(\n\t\tvec2(-1.0, -1.0), vec2(-1.0, 3.0), vec2(3.0, -1.0)\n\t);\n\n\tstruct VertexOutput {\n\t\t@builtin(position) position : vec4,\n\t\t@location(0) texCoord : vec2,\n\t};\n\n\t@vertex\n\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\tvar output : VertexOutput;\n\t\toutput.texCoord = pos[vertexIndex] * vec2(0.5, -0.5) + vec2(0.5);\n\t\toutput.position = vec4(pos[vertexIndex], 0.0, 1.0);\n\t\treturn output;\n\t}\n\n\t@group(0) @binding(0) var imgSampler : sampler;\n\t@group(0) @binding(1) var img : texture_2d;\n\n\t@fragment\n\tfn fragmentMain(@location(0) texCoord : vec2) -> @location(0) vec4 {\n\t\treturn textureSample(img, imgSampler, texCoord);\n\t}\n\t"}i.d(t,{E:()=>r,J:()=>n})},82116:(e,t,i)=>{"use strict";i.d(t,{L0:()=>s,X9:()=>o,oh:()=>a});var n=i(72091),r=i.n(n);function o(e,t){switch(e){case r().RepeatWrapping:return"repeat";case r().ClampToEdgeWrapping:return"clamp-to-edge";case r().MirroredRepeatWrapping:return"mirror-repeat";case r().NearestFilter:case r().NearestMipMapNearestFilter:return"nearest";case r().NearestMipMapLinearFilter:return t?"linear":"nearest";case r().LinearFilter:return"linear";case r().LinearMipMapNearestFilter:return t?"nearest":"linear";case r().LinearMipMapLinearFilter:return"linear";default:return console.warn("unknown filter param",e),""}}function s(e,t){let i,n;switch(e){case r().AlphaFormat:i="r";break;case r().RGBFormat:i="rgb is unsupported";break;case r().RGBAFormat:i="rgba";break;case r().LuminanceFormat:i="r";break;case r().LuminanceAlphaFormat:i="rg";break;case r().RGB_S3TC_DXT1_Format:return"bc1-rgb-unorm unsupported";case r().RGBA_S3TC_DXT1_Format:return"bc1-rgba-unorm";case r().RGBA_S3TC_DXT3_Format:return"bc2-rgba-unorm";case r().RGBA_S3TC_DXT5_Format:return"bc3-rgba-unorm";default:i=e}switch(t){case r().UnsignedByteType:n="8unorm";break;case r().ByteType:n="8snorm";break;case r().ShortType:n="16sint";break;case r().UnsignedShortType:n="16uint";break;case r().IntType:n="32sint";break;case r().UnsignedIntType:n="32uint";break;case r().FloatType:n="32float";break;case r().HalfFloatType:n="16float";break;default:console.warn("unknown type",t),n=""}return""+i+n}function a(e){switch(e){case r().FrontSide:return"back";case r().BackSide:return"front";case r().DoubleSide:return"none"}}},40508:(e,t,i)=>{"use strict";i.d(t,{cS:()=>o,f6:()=>r});let n=null;async function r(e){if(!n)return n=await async function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const i=Object.assign({},{powerPreference:"high-performance"},t),n=await(null===(e=navigator)||void 0===e||null===(e=e.gpu)||void 0===e?void 0:e.requestAdapter(i));if(!n)return void console.warn("Couldn't request WebGPU adapter. WebGPU will not be available.");const r=n.info||await n.requestAdapterInfo();console.log(r);const o=await n.requestDevice({});return console.log(o.limits),o}(e),n}function o(){return n}},98233:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CPUTexture:()=>_});var n=i(5732),r=i(55280);const o="rgba8unorm",s="bgra8unorm",a="rgba8uint",l="rgb10a2unorm",c="depth32float",h="depth24plus",u="r32float",d="rgba32float",f={unknown:"unknown",uint8:"uint8",float32:"float32"};function p(e){switch(e){case o:case s:case a:case l:return f.uint8;case c:case u:case d:return f.float32}return console.error("Unsupported format: "+e),f.unknown}function m(e){switch(e){case o:case s:case a:case l:return 4;case c:case h:case u:return 1;case d:return 4;default:return console.error("Unsupported format: "+e),0}}function g(e){switch(e){case f.uint8:return Uint8Array;case f.float32:return Float32Array;default:return null}}async function v(e){const t=await async function(e){return new Promise((t=>{e.toBlob(t)}))}(e);return URL.createObjectURL(t)}const y=(e,t)=>{t.r=.5*(e.r+1)*255,t.g=.5*(e.g+1)*255,t.b=.5*(e.b+1)*255,t.a=255};const b=(e,t)=>{const i=e.r|e.g<<8|e.b<<16|e.a<<24,n=i?(1103515245*i+12345)%2**31:0;t.r=255&n,t.g=n>>8&255,t.b=n>>16&255,t.a=255},x=(e,t)=>{const i=255*e.r;t.r=i,t.g=i,t.b=i,t.a=255};class _{width=0;height=0;data=null;format=null;constructor(){}init(e,t,i,n){let r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(this.width=e,this.height=t,this.format=i,n)this.data=r?n.slice():n;else{const n=m(i),r=p(i),o=e*t*n;this.data=function(e,t){return new(g(e))(t)}(r,o)}return this}static async createFromTexture(e,t){const i=t.usage&GPUTextureUsage.COPY_SRC,r=t.usage&GPUTextureUsage.TEXTURE_BINDING;if(!i&&!r)return console.error("GPUTexture must have COPY_SRC or TEXTURE_BINDING usage for readback."),null;let o=i?t:(0,n.copyGPUTexture)(e,t);const s=await(new _).mapFromTexture(e,o),a=(new _).copyFrom(s,0,0,t.width,t.height);return s.unmap(),a}isEmpty(){return null===this.data}copyFrom(e,t,i,n,r){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0;if(this.isEmpty()){const t=o+n,i=s+r;this.init(t,i,e.format)}const a=m(e.format);for(let l=0;l2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:t.width,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:t.height;const s=function(e){switch(e){case"depth24plus":case"depth32float":case"bgra8unorm":case"rgba8uint":case"rgb10a2unorm":case"r32float":return 4;case"rgba32float":return 16;default:throw new Error("Unsupported texture format: "+e)}}(t.format);let a=(l=t.width*s,256*Math.ceil(l/256));var l;let c=a*t.height;const h=a/s,u=e.createBuffer({size:c,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}),d=e.createCommandEncoder(),f=[i,n,0];d.copyTextureToBuffer({texture:t,origin:f},{buffer:u,bytesPerRow:a},[r,o]),e.queue.submit([d.finish()]),await u.mapAsync(GPUMapMode.READ);const m=new(g(p(t.format)))(u.getMappedRange());return this.init(h,o,t.format,m,!1),this.unmap=()=>{u.unmap(),u.destroy()},this}static async createFromColorTarget(e){const t=e.getRenderTargets(),i=e.getDevice(),n=t.getColorTarget();return await _.createFromTexture(i,n)}static async createFromViewDepthTarget(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=e.getRenderTargets(),r=e.getDevice(),o=i.getViewDepthTarget();let s=o;if(t){const e=r.createTexture({size:[o.width,o.height],format:"r32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});(0,n.convertTexture)(r,o,e,n.UnpackRGB10DepthShader),s=e}return await _.createFromTexture(r,s)}static async createFromNormalsTarget(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=e.getRenderTargets(),r=e.getDevice(),o=i.getNormalsTarget();let s=o;if(t){const e=r.createTexture({size:[o.width,o.height],format:"rgba32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});(0,n.convertTexture)(r,o,e,n.UnpackRGB10NormalsShader),s=e}return await _.createFromTexture(r,s)}static async createFromIdTarget(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=e.getRenderTargets(),n=e.getDevice(),r=i.getIdTarget(t);return await _.createFromTexture(n,r)}swizzelRGChannels(){const e=this.format===_.Formats.rgba8unorm,t=this.format===_.Formats.bgra8unorm;if(!e&&!t)return console.error("SwizzelRGChannels only supported for rgba8unorm and bgra8unorm formats."),null;for(var i=0;i1&&(i.g=this.data[r+1]),n>2&&(i.b=this.data[r+2]),n>3&&(i.a=this.data[r+3])}setPixel(e,t,i){const n=m(this.format),r=n*(t*this.width+e);this.data[r]=i.r,n>1&&(this.data[r+1]=i.g),n>2&&(this.data[r+2]=i.b),n>3&&(this.data[r+3]=i.a)}toColorImage(e){const t=(new _).init(this.width,this.height,o),i={r:0,g:0,b:0,a:0},n={r:0,g:0,b:0,a:0};for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.width,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.height,s=this;"r32float"===this.format&&(s=this.toColorImage(x)),e=e||(0,r.getGlobal)().document.createElement("canvas"),e.width=n,e.height=o;var a,l=e.getContext("2d"),c=new Uint8ClampedArray(s.data);return a=new ImageData(c,n,o),l.putImageData(a,t,i,0,0,n,o),e}async toImageUrl(){return v(this.toCanvas())}async showInNewTab(){const e=await this.toImageUrl();window.open(e)}}},5732:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CopyFragmentShader:()=>l,DummyFragmentShader:()=>a,ShaderPassWebGPU:()=>u,UnpackRGB10DepthShader:()=>c,UnpackRGB10NormalsShader:()=>h,convertTexture:()=>d,copyGPUTexture:()=>f});var n=i(29251),r=i(43851),o=i(41007),s=i(65796);const a=n.wgsl` + @fragment + fn main( + @builtin(position) coord : vec4f, + @location(0) @interpolate(linear) vUv: vec2f + ) -> @location(0) vec4f { + var outColor = vec4f(vUv, 0.0, 1.0); + return outColor; + } +`,l=n.wgsl` + @group(0) @binding(1) var texture: texture_2d; + @group(0) @binding(2) var texSampler: sampler; + + @fragment + fn main( + @builtin(position) coord: vec4f, + @location(0) @interpolate(linear) vUv: vec2f + ) -> @location(0) vec4f { + var outColor = textureSample(texture, texSampler, vUv); + return outColor; + } +`,c=n.wgsl` + ${s} + + @group(0) @binding(1) var texture: texture_2d; + @group(0) @binding(2) var texSampler: sampler; + + @fragment + fn main( + @builtin(position) coord: vec4f, + @location(0) @interpolate(linear) vUv: vec2f + ) -> @location(0) vec4f { + + var packedDepth = textureSample(texture, texSampler, vUv); + var depth = unpackDepth10(packedDepth.rgb); + return vec4f(depth, 0, 0, 1); + } +`,h=n.wgsl` + // Note that pack_normals chunk is only needed for int-packed vertex-normals. + // The rgb10-packed normals need unpackNormals10 instead. + ${s} + + @group(0) @binding(1) var texture: texture_2d; + @group(0) @binding(2) var texSampler: sampler; + + @fragment + fn main( + @builtin(position) coord: vec4f, + @location(0) @interpolate(linear) vUv: vec2f + ) -> @location(0) vec4f { + + var packedNormal = textureSample(texture, texSampler, vUv); + var normal = unpackNormal10(packedNormal.xyz); + return vec4f(normal, 1.0f); + } +`;class u{#et;#Gn;#jr;#qr;#Xr;#Yr;#Kr;#Qr;#Zr=[];#$r;#Jr;#eo;#to;#io=0;#no=0;#ro=0;#Pt;constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.#et=e,this.#Pt=t,this.setFragmentShader(),this.setVertexShader();const n=new o.UniformGroup(e,i);this.setUniforms(n,i)}setFragmentShader(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"main";this.#$r=e,this.#Jr=t,this.#Xr=null,this.#Gn=null}setVertexShader(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mainFlipY";this.#eo=e,this.#to=t,this.#qr=null,this.#Gn=null}setSourceTextureUniform(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.#io=e,this.#no=t,this.#ro=i;const n=this.getUniforms(i);n.isAssigned(e)||n.addTexture(e),n.isAssigned(t)||n.addSampler(t)}setUniforms(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.#Zr[t]=e}getUniforms(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.#Zr[e]}get uniforms(){return this.getUniforms()}createPipeline(){let e="auto";if(this.#Zr.length>0){const t=[];for(let e=0;e{n.setBindGroup(t,e.bindGroup)})),n.setPipeline(this.#Gn),n.draw(3),n.end(),this.#et.queue.submit([i.finish()])}}function d(e,t,i,n){let r=new u(e);r.setSourceTextureUniform(),r.setFragmentShader(n),r.run(i,t)}function f(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC;const n=e.createTexture({size:[t.width,t.height],format:t.format,usage:i});return d(e,t,n,l),n}},29251:e=>{const t=/#([^\s]*)(\s*)/g;function i(e){const i=[];let n={string:"",elseIsValid:!1,expression:!0,levelProcessed:!1,ignoreNested:!1};for(var r=arguments.length,o=new Array(r>1?r-1:0),s=1;sr&&(n.string+=o[r]))}if(i.length)throw new Error("Mismatched #if/#endif count");return n.string}function n(e,t){if(!t||t.length`"$${e}"`)).join(", ");throw new Error(`[wgpu] Missing values for: ${i}`)}return t}e.exports={wgsl:i,$wgsl:function(e,t){const r=/\$\w+/,o=e.match(/(?<=\$)(\w+)/g);if(!o||!o.length)return e;if(Array.isArray(t))return i(e.split(r),...n(o,t));if(t&&!Array.isArray(t)&&"object"==typeof t)return i(e.split(r),...o.map((e=>{if(!Object.hasOwn(t,e))throw new Error(`[wgpu] Missing value for "$${e}"`);const i=t[e];if("object"==typeof i&&null!==i||"function"==typeof i)throw new Error(`[wgpu] Unsupported value type "${typeof i}"`);return i})));for(var s=arguments.length,a=new Array(s>2?s-2:0),l=2;l{var n; +/*! Hammer.JS - v2.0.8 - 2016-04-23 + * http://hammerjs.github.io/ + * + * Copyright (c) 2016 Jorik Tangelder; + * Licensed under the MIT license */!function(r,o,s,a){"use strict";var l=["","webkit","Moz","MS","ms","o"],c=o.createElement("div"),h="function",u=Math.round,d=Math.abs,f=Date.now;function p(e,t,i){return setTimeout(E(e,i),t)}function m(e,t,i){return!!Array.isArray(e)&&(g(e,i[t],i),!0)}function g(e,t,i){var n;if(e)if(e.forEach)e.forEach(t,i);else if(e.length!==a)for(n=0;n\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",o=r.console&&(r.console.warn||r.console.log);return o&&o.call(r.console,n,i),e.apply(this,arguments)}}var y=function(e){if(e===a||null===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),i=1;i-1}function P(e){return e.trim().split(/\s+/g)}function D(e,t,i){if(e.indexOf&&!i)return e.indexOf(t);for(var n=0;ni[t]})):n.sort()),n}function R(e,t){for(var i,n,r=t[0].toUpperCase()+t.slice(1),o=0;o1&&!i.firstMultiple?i.firstMultiple=ne(t):1===r&&(i.firstMultiple=!1);var o=i.firstInput,s=i.firstMultiple,l=s?s.center:o.center,c=t.center=re(n);t.timeStamp=f(),t.deltaTime=t.timeStamp-o.timeStamp,t.angle=le(l,c),t.distance=ae(l,c),function(e,t){var i=t.center,n=e.offsetDelta||{},r=e.prevDelta||{},o=e.prevInput||{};t.eventType!==z&&o.eventType!==H||(r=e.prevDelta={x:o.deltaX||0,y:o.deltaY||0},n=e.offsetDelta={x:i.x,y:i.y});t.deltaX=r.x+(i.x-n.x),t.deltaY=r.y+(i.y-n.y)}(i,t),t.offsetDirection=se(t.deltaX,t.deltaY);var h=oe(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=h.x,t.overallVelocityY=h.y,t.overallVelocity=d(h.x)>d(h.y)?h.x:h.y,t.scale=s?(u=s.pointers,p=n,ae(p[0],p[1],ee)/ae(u[0],u[1],ee)):1,t.rotation=s?function(e,t){return le(t[1],t[0],ee)-le(e[1],e[0],ee)}(s.pointers,n):0,t.maxPointers=i.prevInput?t.pointers.length>i.prevInput.maxPointers?t.pointers.length:i.prevInput.maxPointers:t.pointers.length,function(e,t){var i,n,r,o,s=e.lastInterval||t,l=t.timeStamp-s.timeStamp;if(t.eventType!=W&&(l>G||s.velocity===a)){var c=t.deltaX-s.deltaX,h=t.deltaY-s.deltaY,u=oe(l,c,h);n=u.x,r=u.y,i=d(u.x)>d(u.y)?u.x:u.y,o=se(c,h),e.lastInterval=t}else i=s.velocity,n=s.velocityX,r=s.velocityY,o=s.direction;t.velocity=i,t.velocityX=n,t.velocityY=r,t.direction=o}(i,t);var u,p;var m=e.element;M(t.srcEvent.target,m)&&(m=t.srcEvent.target);t.target=m}(e,i),e.emit("hammer.input",i),e.recognize(i),e.session.prevInput=i}function ne(e){for(var t=[],i=0;i=d(t)?e<0?q:X:t<0?Y:K}function ae(e,t,i){i||(i=J);var n=t[i[0]]-e[i[0]],r=t[i[1]]-e[i[1]];return Math.sqrt(n*n+r*r)}function le(e,t,i){i||(i=J);var n=t[i[0]]-e[i[0]],r=t[i[1]]-e[i[1]];return 180*Math.atan2(r,n)/Math.PI}te.prototype={handler:function(){},init:function(){this.evEl&&w(this.element,this.evEl,this.domHandler),this.evTarget&&w(this.target,this.evTarget,this.domHandler),this.evWin&&w(N(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&T(this.element,this.evEl,this.domHandler),this.evTarget&&T(this.target,this.evTarget,this.domHandler),this.evWin&&T(N(this.element),this.evWin,this.domHandler)}};var ce={mousedown:z,mousemove:2,mouseup:H},he="mousedown",ue="mousemove mouseup";function de(){this.evEl=he,this.evWin=ue,this.pressed=!1,te.apply(this,arguments)}_(de,te,{handler:function(e){var t=ce[e.type];t&z&&0===e.button&&(this.pressed=!0),2&t&&1!==e.which&&(t=H),this.pressed&&(t&H&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:V,srcEvent:e}))}});var fe={pointerdown:z,pointermove:2,pointerup:H,pointercancel:W,pointerout:W},pe={2:k,3:"pen",4:V,5:"kinect"},me="pointerdown",ge="pointermove pointerup pointercancel";function ve(){this.evEl=me,this.evWin=ge,te.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}r.MSPointerEvent&&!r.PointerEvent&&(me="MSPointerDown",ge="MSPointerMove MSPointerUp MSPointerCancel"),_(ve,te,{handler:function(e){var t=this.store,i=!1,n=e.type.toLowerCase().replace("ms",""),r=fe[n],o=pe[e.pointerType]||e.pointerType,s=o===k,a=o===V,l=D(t,e.pointerId,"pointerId");r&z&&(0===e.button||s)?l<0&&(t.push(e),l=t.length-1):r&(H|W)&&(i=!0),l<0||(t[l]=e,a&&!this.manager.options.handlePointerEventMouse||this.callback(this.manager,r,{pointers:t,changedPointers:[e],pointerType:o,srcEvent:e}),i&&t.splice(l,1))}});var ye={touchstart:z,touchmove:2,touchend:H,touchcancel:W};function be(){this.evTarget="touchstart",this.evWin="touchstart touchmove touchend touchcancel",this.started=!1,te.apply(this,arguments)}function xe(e,t){var i=L(e.touches),n=L(e.changedTouches);return t&(H|W)&&(i=I(i.concat(n),"identifier",!0)),[i,n]}_(be,te,{handler:function(e){var t=ye[e.type];if(t===z&&(this.started=!0),this.started){var i=xe.call(this,e,t);t&(H|W)&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,t,{pointers:i[0],changedPointers:i[1],pointerType:k,srcEvent:e})}}});var _e={touchstart:z,touchmove:2,touchend:H,touchcancel:W},Ee="touchstart touchmove touchend touchcancel";function Se(){this.evTarget=Ee,this.targetIds={},te.apply(this,arguments)}function Ae(e,t){var i=L(e.touches),n=this.targetIds;if(t&(2|z)&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,o,s=L(e.changedTouches),a=[],l=this.target;if(o=i.filter((function(e){return M(e.target,l)})),t===z)for(r=0;r-1&&n.splice(e,1)}),we)}}function Pe(e){for(var t=e.srcEvent.clientX,i=e.srcEvent.clientY,n=0;n-1&&this.requireFail.splice(t,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(e){return!!this.simultaneous[e.id]},emit:function(e){var t=this,i=this.state;function n(i){t.manager.emit(i,e)}i<8&&n(t.options.event+He(i)),n(t.options.event),e.additionalEvent&&n(e.additionalEvent),i>=8&&n(t.options.event+He(i))},tryEmit:function(e){if(this.canEmit())return this.emit(e);this.state=Ge},canEmit:function(){for(var e=0;et.threshold&&r&t.direction},attrTest:function(e){return qe.prototype.attrTest.call(this,e)&&(2&this.state||!(2&this.state)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=We(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}}),_(Ye,qe,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Ne]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||2&this.state)},emit:function(e){if(1!==e.scale){var t=e.scale<1?"in":"out";e.additionalEvent=this.options.event+t}this._super.emit.call(this,e)}}),_(Ke,ze,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[Re]},process:function(e){var t=this.options,i=e.pointers.length===t.pointers,n=e.distancet.time;if(this._input=e,!n||!i||e.eventType&(H|W)&&!r)this.reset();else if(e.eventType&z)this.reset(),this._timer=p((function(){this.state=8,this.tryEmit()}),t.time,this);else if(e.eventType&H)return 8;return Ge},reset:function(){clearTimeout(this._timer)},emit:function(e){8===this.state&&(e&&e.eventType&H?this.manager.emit(this.options.event+"up",e):(this._input.timeStamp=f(),this.manager.emit(this.options.event,this._input)))}}),_(Qe,qe,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Ne]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||2&this.state)}}),_(Ze,qe,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Q|Z,pointers:1},getTouchAction:function(){return Xe.prototype.getTouchAction.call(this)},attrTest:function(e){var t,i=this.options.direction;return i&(Q|Z)?t=e.overallVelocity:i&Q?t=e.overallVelocityX:i&Z&&(t=e.overallVelocityY),this._super.attrTest.call(this,e)&&i&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers==this.options.pointers&&d(t)>this.options.velocity&&e.eventType&H},emit:function(e){var t=We(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}}),_($e,ze,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Oe]},process:function(e){var t=this.options,i=e.pointers.length===t.pointers,n=e.distance{"use strict";i.r(t),i.d(t,{DDSLoader:()=>r});var n=i(72091),r=function(){this._parser=r.parse};r.prototype=Object.create(n.CompressedTextureLoader.prototype),r.prototype.constructor=r,r.parse=function(e,t){var i={mipmaps:[],width:0,height:0,format:null,mipmapCount:1};function r(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}function o(e,t,i,n){for(var r=i*n*4,o=new Uint8Array(e,t,r),s=new Uint8Array(r),a=0,l=0,c=0;c>8&255,u>>16&255,u>>24&255))),i;f=!0,c=64,i.format=n.RGBAFormat}i.mipmapCount=1,h[7]>0&&!1!==t&&(i.mipmapCount=Math.max(1,h[7])),i.isCubemap=!!(512&h[28]),i.width=h[4],i.height=h[3];for(var p=h[1]+4,m=i.width,g=i.height,v=i.isCubemap?6:1,y=0;y{"use strict"; +/*! +MIT License + +Copyright (c) 2019 Fyrestar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ +function n(e,t){for(let i in t){const n=t[i];if("@"===i[0]){const t=i.substr(1);e=e.replace(t,n)}else if("?"===i[0]){const t=i.substr(1);e=e.replace(t,n+"\n"+t)}else e=e.replace(i,i+"\n"+n)}return e}function r(e,t){const i=(t.header||"")+"\n";let r=(t.vertexHeader||"")+"\n"+e.vertexShader,o=(t.fragmentHeader||"")+"\n"+e.fragmentShader;return t.vertexEnd&&(r=r.replace(/\}(?=[^\}]*$)/g,t.vertexEnd+"\n}")),t.fragmentEnd&&(o=o.replace(/\}(?=[^\}]*$)/g,t.fragmentEnd+"\n}")),void 0!==t.vertex&&(r=n(r,t.vertex)),void 0!==t.fragment&&(o=n(o,t.fragment)),e.vertexShader=i+r,e.fragmentShader=i+o,e}i.r(t),i.d(t,{patchShader:()=>r})},63004:(e,t,i)=>{"use strict";i.r(t),i.d(t,{polyfillTHREE:()=>d});const n=(e,t,i)=>{"object"!=typeof e&&"function"!=typeof e||Object.prototype.hasOwnProperty.call(e,t)||(e[t]=i)},r=(e,t,i)=>{"object"==typeof e&&Object.defineProperty(e,t,i)},o=e=>{n(e,"BoxBufferGeometry",class extends e.BufferGeometry{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;super(),this.type="BoxGeometry",this.parameters={width:t,height:i,depth:n,widthSegments:r,heightSegments:o,depthSegments:s};const a=this;r=Math.floor(r),o=Math.floor(o),s=Math.floor(s);const l=[],c=[],h=[],u=[];let d=0,f=0;function p(t,i,n,r,o,s,p,m,g,v,y){const b=s/g,x=p/v,_=s/2,E=p/2,S=m/2,A=g+1,w=v+1;let T=0,M=0;const C=new e.Vector3;for(let e=0;e0?1:-1,h.push(C.x,C.y,C.z),u.push(a/g),u.push(1-e/v),T+=1}}for(let e=0;e{n(e,"CircleBufferGeometry",class extends e.BufferGeometry{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2*Math.PI;super(),this.type="CircleGeometry",this.parameters={radius:t,segments:i,thetaStart:n,thetaLength:r},i=Math.max(3,i);const o=[],s=[],a=[],l=[],c=new e.Vector3,h=new e.Vector2;s.push(0,0,0),a.push(0,0,1),l.push(.5,.5);for(let e=0,o=3;e<=i;e++,o+=3){const u=n+e/i*r;c.x=t*Math.cos(u),c.y=t*Math.sin(u),s.push(c.x,c.y,c.z),a.push(0,0,1),h.x=(s[o]/t+1)/2,h.y=(s[o+1]/t+1)/2,l.push(h.x,h.y)}for(let e=1;e<=i;e++)o.push(e,e+1,0);this.setIndex(o),this.setAttribute("position",new e.Float32BufferAttribute(s,3)),this.setAttribute("normal",new e.Float32BufferAttribute(a,3)),this.setAttribute("uv",new e.Float32BufferAttribute(l,2))}})},a=e=>{n(e,"CylinderBufferGeometry",class extends e.BufferGeometry{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:8,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,s=arguments.length>5&&void 0!==arguments[5]&&arguments[5],a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:2*Math.PI;super(),this.type="CylinderGeometry",this.parameters={radiusTop:t,radiusBottom:i,height:n,radialSegments:r,heightSegments:o,openEnded:s,thetaStart:a,thetaLength:l};const c=this;r=Math.floor(r),o=Math.floor(o);const h=[],u=[],d=[],f=[];let p=0;const m=[],g=n/2;let v=0;function y(n){const o=p,s=new e.Vector2,m=new e.Vector3;let y=0;const b=!0===n?t:i,x=!0===n?1:-1;for(let e=1;e<=r;e++)u.push(0,g*x,0),d.push(0,x,0),f.push(.5,.5),p++;const _=p;for(let e=0;e<=r;e++){const t=e/r*l+a,i=Math.cos(t),n=Math.sin(t);m.x=b*n,m.y=g*x,m.z=b*i,u.push(m.x,m.y,m.z),d.push(0,x,0),s.x=.5*i+.5,s.y=.5*n*x+.5,f.push(s.x,s.y),p++}for(let e=0;e0&&y(!0),i>0&&y(!1)),this.setIndex(h),this.setAttribute("position",new e.Float32BufferAttribute(u,3)),this.setAttribute("normal",new e.Float32BufferAttribute(d,3)),this.setAttribute("uv",new e.Float32BufferAttribute(f,2))}})},l=e=>{n(e,"PolyhedronBufferGeometry",class extends e.BufferGeometry{constructor(t,i){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;super(),this.type="PolyhedronGeometry",this.parameters={vertices:t,indices:i,radius:n,detail:r};const o=[],s=[];function a(e,t,i,n){const r=n+1,o=[];for(let n=0;n<=r;n++){o[n]=[];const s=e.clone().lerp(i,n/r),a=t.clone().lerp(i,n/r),l=r-n;for(let e=0;e<=l;e++)o[n][e]=0===e&&n===r?s:s.clone().lerp(a,e/l)}for(let e=0;e.9&&o<.1&&(t<.2&&(s[e+0]+=1),i<.2&&(s[e+2]+=1),n<.2&&(s[e+4]+=1))}}()}(),this.setAttribute("position",new e.Float32BufferAttribute(o,3)),this.setAttribute("normal",new e.Float32BufferAttribute(o.slice(),3)),this.setAttribute("uv",new e.Float32BufferAttribute(s,2)),0===r?this.computeVertexNormals():this.normalizeNormals()}})},c=e=>{n(e,"OctahedronBufferGeometry",class extends e.PolyhedronBufferGeometry{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;super([1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t}}})},h=e=>{n(e,"SphereBufferGeometry",class extends e.BufferGeometry{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:6,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2*Math.PI,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:Math.PI;super(),this.type="SphereGeometry",this.parameters={radius:t,widthSegments:i,heightSegments:n,phiStart:r,phiLength:o,thetaStart:s,thetaLength:a},i=Math.max(3,Math.floor(i)),n=Math.max(2,Math.floor(n));const l=Math.min(s+a,Math.PI);let c=0;const h=[],u=new e.Vector3,d=new e.Vector3,f=[],p=[],m=[],g=[];for(let e=0;e<=n;e++){const f=[],v=e/n;let y=0;0==e&&0==s?y=.5/i:e==n&&l==Math.PI&&(y=-.5/i);for(let e=0;e<=i;e++){const n=e/i;u.x=-t*Math.cos(r+n*o)*Math.sin(s+v*a),u.y=t*Math.cos(s+v*a),u.z=t*Math.sin(r+n*o)*Math.sin(s+v*a),p.push(u.x,u.y,u.z),d.copy(u).normalize(),m.push(d.x,d.y,d.z),g.push(n+y,1-v),f.push(c++)}h.push(f)}for(let e=0;e0)&&f.push(i,r,a),(e!==n-1||l{n(e,"TorusBufferGeometry",class extends e.BufferGeometry{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.4,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:8,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2*Math.PI;super(),this.type="TorusGeometry",this.parameters={radius:t,tube:i,radialSegments:n,tubularSegments:r,arc:o},n=Math.floor(n),r=Math.floor(r);const s=[],a=[],l=[],c=[],h=new e.Vector3,u=new e.Vector3,d=new e.Vector3;for(let e=0;e<=n;e++)for(let s=0;s<=r;s++){const f=s/r*o,p=e/n*Math.PI*2;u.x=(t+i*Math.cos(p))*Math.cos(f),u.y=(t+i*Math.cos(p))*Math.sin(f),u.z=i*Math.sin(p),a.push(u.x,u.y,u.z),h.x=t*Math.cos(f),h.y=t*Math.sin(f),d.subVectors(u,h).normalize(),l.push(d.x,d.y,d.z),c.push(s/r),c.push(e/n)}for(let e=1;e<=n;e++)for(let t=1;t<=r;t++){const i=(r+1)*e+t-1,n=(r+1)*(e-1)+t-1,o=(r+1)*(e-1)+t,a=(r+1)*e+t;s.push(i,n,a),s.push(n,o,a)}this.setIndex(s),this.setAttribute("position",new e.Float32BufferAttribute(a,3)),this.setAttribute("normal",new e.Float32BufferAttribute(l,3)),this.setAttribute("uv",new e.Float32BufferAttribute(c,2))}})},d=e=>{var t,i,d,f,p,m,g,v,y,b,x,_,E,S,A,w,T,M,C,P,D,L,I,R,O,N,F,U,B,k,V;const G=new e.Vector3;n(null==e||null===(t=e.Camera)||void 0===t?void 0:t.prototype,"updateMatrixWorld",(function(t){e.Object3D.prototype.updateMatrixWorld.call(this,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()})),n(null==e||null===(i=e.Box2)||void 0===i?void 0:i.prototype,"getSize",(function(e){return this.isEmpty()?e.set(0,0):this.size(e)})),n(null==e||null===(d=e.Box3)||void 0===d?void 0:d.prototype,"getSize",(function(e){return this.isEmpty()?e.set(0,0,0):this.size(e)})),n(null==e||null===(f=e.Box2)||void 0===f?void 0:f.prototype,"intersectsBox",(function(e){return this.isIntersectionBox(e)})),n(null==e||null===(p=e.Box3)||void 0===p?void 0:p.prototype,"intersectsBox",(function(e){return this.isIntersectionBox(e)})),n(null==e||null===(m=e.Ray)||void 0===m?void 0:m.prototype,"intersectsBox",(function(e){return this.isIntersectionBox(e)})),n(null==e||null===(g=e.BufferAttribute)||void 0===g?void 0:g.prototype,"applyMatrix4",(function(e){for(let t=0,i=this.count;t2&&void 0!==arguments[2]?arguments[2]:0;return void 0!==i&&0!==i&&console.warn("THREE.BufferGeometry: .addGroup() with `materialIndex !== 0` is not supported in this Three.js version. Ignoring the `materialIndex` parameter."),this.addDrawCall(e,t)})),r(null==e||null===(A=e.BufferGeometry)||void 0===A?void 0:A.prototype,"index",{get:function(){return this.attributes.index},set:function(e){this.attributes.index=e}}),n(null==e||null===(w=e.BufferGeometry)||void 0===w?void 0:w.prototype,"setFromPoints",(function(t){const i=[];for(let e=0,n=t.length;e{if(0===e.length)return-1/0;for(var t=e[0],i=1,n=e.length;it&&(t=e[i]);return t})(t)>65535?e.Uint32BufferAttribute:e.Uint16BufferAttribute)(t,1):this.index=t,this})),"function"==typeof(null==e?void 0:e.BufferGeometry)&&(o(e),s(e),a(e),l(e),c(e),h(e),u(e)),n(null==e||null===(M=e.Frustum)||void 0===M?void 0:M.prototype,"setFromProjectionMatrix",(function(e){return this.setFromMatrix(e)})),n(null==e||null===(C=e.Geometry)||void 0===C?void 0:C.prototype,"applyMatrix4",(function(e){return this.applyMatrix(e),this})),"function"==typeof e.Line&&n(e,"LineSegments",class extends e.Line{constructor(t,i){super(t,i,e.LinePieces),this.isLineSegments=!0,this.type="LineSegments"}}),n(null==e||null===(P=e.Line)||void 0===P?void 0:P.prototype,"computeLineDistances",(function(){const e=this.geometry;if(e.isBufferGeometry)if(null===e.index){const t=e.attributes.position,i=[0];for(let e=1,n=t.count;e{var n,r,o,s,a,l,c,h,u,d,f,p,m,g,v,y,b,x,_,E,S,A,w,T,M,C,P,D,L,I,R,O,N,F,U,B,k,V,G,z,H,W,j,q,X,Y,K=e.exports={REVISION:"71"};void 0===Math.sign&&(Math.sign=function(e){return e<0?-1:e>0?1:+e}),K.log=function(){console.log.apply(console,arguments)},K.warn=function(){console.warn.apply(console,arguments)},K.error=function(){console.error.apply(console,arguments)},K.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2},K.CullFaceNone=0,K.CullFaceBack=1,K.CullFaceFront=2,K.CullFaceFrontBack=3,K.FrontFaceDirectionCW=0,K.FrontFaceDirectionCCW=1,K.BasicShadowMap=0,K.PCFShadowMap=1,K.PCFSoftShadowMap=2,K.FrontSide=0,K.BackSide=1,K.DoubleSide=2,K.NoShading=0,K.FlatShading=1,K.SmoothShading=2,K.NoColors=0,K.FaceColors=1,K.VertexColors=2,K.NoBlending=0,K.NormalBlending=1,K.AdditiveBlending=2,K.SubtractiveBlending=3,K.MultiplyBlending=4,K.CustomBlending=5,K.AddEquation=100,K.SubtractEquation=101,K.ReverseSubtractEquation=102,K.MinEquation=103,K.MaxEquation=104,K.ZeroFactor=200,K.OneFactor=201,K.SrcColorFactor=202,K.OneMinusSrcColorFactor=203,K.SrcAlphaFactor=204,K.OneMinusSrcAlphaFactor=205,K.DstAlphaFactor=206,K.OneMinusDstAlphaFactor=207,K.DstColorFactor=208,K.OneMinusDstColorFactor=209,K.SrcAlphaSaturateFactor=210,K.MultiplyOperation=0,K.MixOperation=1,K.AddOperation=2,K.UVMapping=300,K.CubeReflectionMapping=301,K.CubeRefractionMapping=302,K.EquirectangularReflectionMapping=303,K.EquirectangularRefractionMapping=304,K.SphericalReflectionMapping=305,K.RepeatWrapping=1e3,K.ClampToEdgeWrapping=1001,K.MirroredRepeatWrapping=1002,K.NearestFilter=1003,K.NearestMipMapNearestFilter=1004,K.NearestMipMapLinearFilter=1005,K.LinearFilter=1006,K.LinearMipMapNearestFilter=1007,K.LinearMipMapLinearFilter=1008,K.UnsignedByteType=1009,K.ByteType=1010,K.ShortType=1011,K.UnsignedShortType=1012,K.IntType=1013,K.UnsignedIntType=1014,K.FloatType=1015,K.HalfFloatType=1025,K.UnsignedShort4444Type=1016,K.UnsignedShort5551Type=1017,K.UnsignedShort565Type=1018,K.AlphaFormat=1019,K.RGBFormat=1020,K.RGBAFormat=1021,K.LuminanceFormat=1022,K.LuminanceAlphaFormat=1023,K.RGBEFormat=K.RGBAFormat,K.RGB_S3TC_DXT1_Format=2001,K.RGBA_S3TC_DXT1_Format=2002,K.RGBA_S3TC_DXT3_Format=2003,K.RGBA_S3TC_DXT5_Format=2004,K.RGB_PVRTC_4BPPV1_Format=2100,K.RGB_PVRTC_2BPPV1_Format=2101,K.RGBA_PVRTC_4BPPV1_Format=2102,K.RGBA_PVRTC_2BPPV1_Format=2103,K.Projector=function(){K.error("THREE.Projector has been moved to /examples/js/renderers/Projector.js."),this.projectVector=function(e,t){K.warn("THREE.Projector: .projectVector() is now vector.project()."),e.project(t)},this.unprojectVector=function(e,t){K.warn("THREE.Projector: .unprojectVector() is now vector.unproject()."),e.unproject(t)},this.pickingRay=function(e,t){K.error("THREE.Projector: .pickingRay() is now raycaster.setFromCamera().")}},K.CanvasRenderer=function(){K.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js"),this.domElement=document.createElement("canvas"),this.clear=function(){},this.render=function(){},this.setClearColor=function(){},this.setSize=function(){}},K.Color=function(e){return 3===arguments.length?this.setRGB(arguments[0],arguments[1],arguments[2]):this.set(e)},K.Color.prototype={constructor:K.Color,r:1,g:1,b:1,set:function(e){return e instanceof K.Color?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this},setHex:function(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this},setRGB:function(e,t,i){return this.r=e,this.g=t,this.b=i,this},setHSL:function(e,t,i){if(0===t)this.r=this.g=this.b=i;else{var n=function(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+6*(t-e)*(2/3-i):e},r=i<=.5?i*(1+t):i+t-i*t,o=2*i-r;this.r=n(o,r,e+1/3),this.g=n(o,r,e),this.b=n(o,r,e-1/3)}return this},setStyle:function(e){if(/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.test(e)){var t=/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.exec(e);return this.r=Math.min(255,parseInt(t[1],10))/255,this.g=Math.min(255,parseInt(t[2],10))/255,this.b=Math.min(255,parseInt(t[3],10))/255,this}if(/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.test(e)){t=/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.exec(e);return this.r=Math.min(100,parseInt(t[1],10))/100,this.g=Math.min(100,parseInt(t[2],10))/100,this.b=Math.min(100,parseInt(t[3],10))/100,this}if(/^\#([0-9a-f]{6})$/i.test(e)){t=/^\#([0-9a-f]{6})$/i.exec(e);return this.setHex(parseInt(t[1],16)),this}if(/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(e)){t=/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(e);return this.setHex(parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3],16)),this}if(/^(\w+)$/i.test(e))return this.setHex(K.ColorKeywords[e]),this},copy:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this},copyGammaToLinear:function(e,t){return void 0===t&&(t=2),this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this},copyLinearToGamma:function(e,t){void 0===t&&(t=2);var i=t>0?1/t:1;return this.r=Math.pow(e.r,i),this.g=Math.pow(e.g,i),this.b=Math.pow(e.b,i),this},convertGammaToLinear:function(){var e=this.r,t=this.g,i=this.b;return this.r=e*e,this.g=t*t,this.b=i*i,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(e){var t,i,n=e||{h:0,s:0,l:0},r=this.r,o=this.g,s=this.b,a=Math.max(r,o,s),l=Math.min(r,o,s),c=(l+a)/2;if(l===a)t=0,i=0;else{var h=a-l;switch(i=c<=.5?h/(a+l):h/(2-a-l),a){case r:t=(o-s)/h+(o0?(t=.5/Math.sqrt(d+1),this._w=.25/t,this._x=(h-l)*t,this._y=(o-c)*t,this._z=(s-r)*t):n>a&&n>u?(t=2*Math.sqrt(1+n-a-u),this._w=(h-l)/t,this._x=.25*t,this._y=(r+s)/t,this._z=(o+c)/t):a>u?(t=2*Math.sqrt(1+a-n-u),this._w=(o-c)/t,this._x=(r+s)/t,this._y=.25*t,this._z=(l+h)/t):(t=2*Math.sqrt(1+u-n-a),this._w=(s-r)/t,this._x=(o+c)/t,this._y=(l+h)/t,this._z=.25*t),this.onChangeCallback(),this},setFromUnitVectors:function(e,t){return void 0===n&&(n=new K.Vector3),(r=e.dot(t)+1)<1e-6?(r=0,Math.abs(e.x)>Math.abs(e.z)?n.set(-e.y,e.x,0):n.set(0,-e.z,e.y)):n.crossVectors(e,t),this._x=n.x,this._y=n.y,this._z=n.z,this._w=r,this.normalize(),this},inverse:function(){return this.conjugate().normalize(),this},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this.onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(K.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},multiplyQuaternions:function(e,t){var i=e._x,n=e._y,r=e._z,o=e._w,s=t._x,a=t._y,l=t._z,c=t._w;return this._x=i*c+o*s+n*l-r*a,this._y=n*c+o*a+r*s-i*l,this._z=r*c+o*l+i*a-n*s,this._w=o*c-i*s-n*a-r*l,this.onChangeCallback(),this},multiplyVector3:function(e){return K.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),e.applyQuaternion(this)},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var i=this._x,n=this._y,r=this._z,o=this._w,s=o*e._w+i*e._x+n*e._y+r*e._z;if(s<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,s=-s):this.copy(e),s>=1)return this._w=o,this._x=i,this._y=n,this._z=r,this;var a=Math.acos(s),l=Math.sqrt(1-s*s);if(Math.abs(l)<.001)return this._w=.5*(o+this._w),this._x=.5*(i+this._x),this._y=.5*(n+this._y),this._z=.5*(r+this._z),this;var c=Math.sin((1-t)*a)/l,h=Math.sin(t*a)/l;return this._w=o*c+this._w*h,this._x=i*c+this._x*h,this._y=n*c+this._y*h,this._z=r*c+this._z*h,this.onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){},clone:function(){return new K.Quaternion(this._x,this._y,this._z,this._w)}},K.Quaternion.slerp=function(e,t,i,n){return i.copy(e).slerp(t,n)},K.Vector2=function(e,t){this.x=e||0,this.y=t||0},K.Vector2.prototype={constructor:K.Vector2,set:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(K.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},sub:function(e,t){return void 0!==t?(K.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t}else this.x=0,this.y=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this},clampScalar:function(e,t){return void 0===o&&(o=new K.Vector2,s=new K.Vector2),o.set(e,e),s.set(t,t),this.clamp(o,s)},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,i=this.y-e.y;return t*t+i*i},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,i){return this.subVectors(t,e).multiplyScalar(i).add(e),this},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromAttribute:function(e,t,i){return void 0===i&&(i=0),t=t*e.itemSize+i,this.x=e.array[t],this.y=e.array[t+1],this},clone:function(){return new K.Vector2(this.x,this.y)}},K.Vector3=function(e,t,i){this.x=e||0,this.y=t||0,this.z=i||0},K.Vector3.prototype={constructor:K.Vector3,set:function(e,t,i){return this.x=e,this.y=t,this.z=i,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(K.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},sub:function(e,t){return void 0!==t?(K.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(K.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:function(e){return e instanceof K.Euler==0&&K.error("THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order."),void 0===l&&(l=new K.Quaternion),this.applyQuaternion(l.setFromEuler(e)),this},applyAxisAngle:function(){var e;return function(t,i){return void 0===e&&(e=new K.Quaternion),this.applyQuaternion(e.setFromAxisAngle(t,i)),this}}(),applyMatrix3:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*n,this.y=r[1]*t+r[4]*i+r[7]*n,this.z=r[2]*t+r[5]*i+r[8]*n,this},applyMatrix4:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n+r[12],this.y=r[1]*t+r[5]*i+r[9]*n+r[13],this.z=r[2]*t+r[6]*i+r[10]*n+r[14],this},applyProjection:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements,o=1/(r[3]*t+r[7]*i+r[11]*n+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*n+r[12])*o,this.y=(r[1]*t+r[5]*i+r[9]*n+r[13])*o,this.z=(r[2]*t+r[6]*i+r[10]*n+r[14])*o,this},applyQuaternion:function(e){var t=this.x,i=this.y,n=this.z,r=e.x,o=e.y,s=e.z,a=e.w,l=a*t+o*n-s*i,c=a*i+s*t-r*n,h=a*n+r*i-o*t,u=-r*t-o*i-s*n;return this.x=l*a+u*-r+c*-s-h*-o,this.y=c*a+u*-o+h*-r-l*-s,this.z=h*a+u*-s+l*-o-c*-r,this},project:function(e){return void 0===a&&(a=new K.Matrix4),a.multiplyMatrices(e.projectionMatrix,a.getInverse(e.matrixWorld)),this.applyProjection(a)},unproject:function(){var e;return function(t){return void 0===e&&(e=new K.Matrix4),e.multiplyMatrices(t.matrixWorld,e.getInverse(t.projectionMatrix)),this.applyProjection(e)}}(),transformDirection:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n,this.y=r[1]*t+r[5]*i+r[9]*n,this.z=r[2]*t+r[6]*i+r[10]*n,this.normalize(),this},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t}else this.x=0,this.y=0,this.z=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this},clampScalar:function(){var e,t;return function(i,n){return void 0===e&&(e=new K.Vector3,t=new K.Vector3),e.set(i,i,i),t.set(n,n,n),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,i){return this.subVectors(t,e).multiplyScalar(i).add(e),this},cross:function(e,t){if(void 0!==t)return K.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t);var i=this.x,n=this.y,r=this.z;return this.x=n*e.z-r*e.y,this.y=r*e.x-i*e.z,this.z=i*e.y-n*e.x,this},crossVectors:function(e,t){var i=e.x,n=e.y,r=e.z,o=t.x,s=t.y,a=t.z;return this.x=n*a-r*s,this.y=r*o-i*a,this.z=i*s-n*o,this},projectOnVector:function(){var e,t;return function(i){return void 0===e&&(e=new K.Vector3),e.copy(i).normalize(),t=this.dot(e),this.copy(e).multiplyScalar(t)}}(),projectOnPlane:function(){var e;return function(t){return void 0===e&&(e=new K.Vector3),e.copy(this).projectOnVector(t),this.sub(e)}}(),reflect:function(){var e;return function(t){return void 0===e&&(e=new K.Vector3),this.sub(e.copy(t).multiplyScalar(2*this.dot(t)))}}(),angleTo:function(e){var t=this.dot(e)/(this.length()*e.length());return Math.acos(K.Math.clamp(t,-1,1))},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n},setEulerFromRotationMatrix:function(e,t){K.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(e,t){K.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(e){return K.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(e)},getScaleFromMatrix:function(e){return K.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(e)},getColumnFromMatrix:function(e,t){return K.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(e,t)},setFromMatrixPosition:function(e){return this.x=e.elements[12],this.y=e.elements[13],this.z=e.elements[14],this},setFromMatrixScale:function(e){var t=this.set(e.elements[0],e.elements[1],e.elements[2]).length(),i=this.set(e.elements[4],e.elements[5],e.elements[6]).length(),n=this.set(e.elements[8],e.elements[9],e.elements[10]).length();return this.x=t,this.y=i,this.z=n,this},setFromMatrixColumn:function(e,t){var i=4*e,n=t.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromAttribute:function(e,t,i){return void 0===i&&(i=0),t=t*e.itemSize+i,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this},clone:function(){return new K.Vector3(this.x,this.y,this.z)}},K.Vector4=function(e,t,i,n){this.x=e||0,this.y=t||0,this.z=i||0,this.w=void 0!==n?n:1},K.Vector4.prototype={constructor:K.Vector4,set:function(e,t,i,n){return this.x=e,this.y=t,this.z=i,this.w=n,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setW:function(e){return this.w=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this},add:function(e,t){return void 0!==t?(K.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this},sub:function(e,t){return void 0!==t?(K.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},applyMatrix4:function(e){var t=this.x,i=this.y,n=this.z,r=this.w,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*n+o[12]*r,this.y=o[1]*t+o[5]*i+o[9]*n+o[13]*r,this.z=o[2]*t+o[6]*i+o[10]*n+o[14]*r,this.w=o[3]*t+o[7]*i+o[11]*n+o[15]*r,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t,this.w*=t}else this.x=0,this.y=0,this.z=0,this.w=1;return this},setAxisAngleFromQuaternion:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this},setAxisAngleFromRotationMatrix:function(e){var t,i,n,r,o=.01,s=.1,a=e.elements,l=a[0],c=a[4],h=a[8],u=a[1],d=a[5],f=a[9],p=a[2],m=a[6],g=a[10];if(Math.abs(c-u)y&&v>b?vb?ye.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this.w>e.w&&(this.w=e.w),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this.wt.w&&(this.w=t.w),this},clampScalar:function(){var e,t;return function(i,n){return void 0===e&&(e=new K.Vector4,t=new K.Vector4),e.set(i,i,i,i),t.set(n,n,n,n),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this},lerpVectors:function(e,t,i){return this.subVectors(t,e).multiplyScalar(i).add(e),this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e},fromAttribute:function(e,t,i){return void 0===i&&(i=0),t=t*e.itemSize+i,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this.w=e.array[t+3],this},clone:function(){return new K.Vector4(this.x,this.y,this.z,this.w)}},K.Euler=function(e,t,i,n){this._x=e||0,this._y=t||0,this._z=i||0,this._order=n||K.Euler.DefaultOrder},K.Euler.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],K.Euler.DefaultOrder="XYZ",K.Euler.prototype={constructor:K.Euler,_x:0,_y:0,_z:0,_order:K.Euler.DefaultOrder,get x(){return this._x},set x(e){this._x=e,this.onChangeCallback()},get y(){return this._y},set y(e){this._y=e,this.onChangeCallback()},get z(){return this._z},set z(e){this._z=e,this.onChangeCallback()},get order(){return this._order},set order(e){this._order=e,this.onChangeCallback()},set:function(e,t,i,n){return this._x=e,this._y=t,this._z=i,this._order=n||this._order,this.onChangeCallback(),this},copy:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this.onChangeCallback(),this},setFromRotationMatrix:function(e,t,i){var n=K.Math.clamp,r=e.elements,o=r[0],s=r[4],a=r[8],l=r[1],c=r[5],h=r[9],u=r[2],d=r[6],f=r[10];return"XYZ"===(t=t||this._order)?(this._y=Math.asin(n(a,-1,1)),Math.abs(a)<.99999?(this._x=Math.atan2(-h,f),this._z=Math.atan2(-s,o)):(this._x=Math.atan2(d,c),this._z=0)):"YXZ"===t?(this._x=Math.asin(-n(h,-1,1)),Math.abs(h)<.99999?(this._y=Math.atan2(a,f),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,o),this._z=0)):"ZXY"===t?(this._x=Math.asin(n(d,-1,1)),Math.abs(d)<.99999?(this._y=Math.atan2(-u,f),this._z=Math.atan2(-s,c)):(this._y=0,this._z=Math.atan2(l,o))):"ZYX"===t?(this._y=Math.asin(-n(u,-1,1)),Math.abs(u)<.99999?(this._x=Math.atan2(d,f),this._z=Math.atan2(l,o)):(this._x=0,this._z=Math.atan2(-s,c))):"YZX"===t?(this._z=Math.asin(n(l,-1,1)),Math.abs(l)<.99999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-u,o)):(this._x=0,this._y=Math.atan2(a,f))):"XZY"===t?(this._z=Math.asin(-n(s,-1,1)),Math.abs(s)<.99999?(this._x=Math.atan2(d,c),this._y=Math.atan2(a,o)):(this._x=Math.atan2(-h,f),this._y=0)):K.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+t),this._order=t,!1!==i&&this.onChangeCallback(),this},setFromQuaternion:function(){var e;return function(t,i,n){return void 0===e&&(e=new K.Matrix4),e.makeRotationFromQuaternion(t),this.setFromRotationMatrix(e,i,n),this}}(),setFromVector3:function(e,t){return this.set(e.x,e.y,e.z,t||this._order)},reorder:(c=new K.Quaternion,function(e){c.setFromEuler(this),this.setFromQuaternion(c,e)}),equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order},fromArray:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e},toVector3:function(e){return e?e.set(this._x,this._y,this._z):new K.Vector3(this._x,this._y,this._z)},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){},clone:function(){return new K.Euler(this._x,this._y,this._z,this._order)}},K.Line3=function(e,t){this.start=void 0!==e?e:new K.Vector3,this.end=void 0!==t?t:new K.Vector3},K.Line3.prototype={constructor:K.Line3,set:function(e,t){return this.start.copy(e),this.end.copy(t),this},copy:function(e){return this.start.copy(e.start),this.end.copy(e.end),this},center:function(e){return(e||new K.Vector3).addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(e){return(e||new K.Vector3).subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(e,t){var i=t||new K.Vector3;return this.delta(i).multiplyScalar(e).add(this.start)},closestPointToPointParameter:(h=new K.Vector3,u=new K.Vector3,function(e,t){h.subVectors(e,this.start),u.subVectors(this.end,this.start);var i=u.dot(u),n=u.dot(h)/i;return t&&(n=K.Math.clamp(n,0,1)),n}),closestPointToPoint:function(e,t,i){var n=this.closestPointToPointParameter(e,t),r=i||new K.Vector3;return this.delta(r).multiplyScalar(n).add(this.start)},applyMatrix4:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this},equals:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)},clone:function(){return(new K.Line3).copy(this)}},K.Box2=function(e,t){this.min=void 0!==e?e:new K.Vector2(1/0,1/0),this.max=void 0!==t?t:new K.Vector2(-1/0,-1/0)},K.Box2.prototype={constructor:K.Box2,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,i=e.length;tthis.max.x||e.ythis.max.y)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y},getParameter:function(e,t){return(t||new K.Vector2).set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))},isIntersectionBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)},clampPoint:function(e,t){return(t||new K.Vector2).copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new K.Vector2;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)},clone:function(){return(new K.Box2).copy(this)}},K.Box3=function(e,t){this.min=void 0!==e?e:new K.Vector3(1/0,1/0,1/0),this.max=void 0!==t?t:new K.Vector3(-1/0,-1/0,-1/0)},K.Box3.prototype={constructor:K.Box3,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){return(t||new K.Vector3).set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},clampPoint:function(e,t){return(t||new K.Vector3).copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new K.Vector3;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),getBoundingSphere:function(){var e=new K.Vector3;return function(t){var i=t||new K.Sphere;return i.center=this.getCenter(),i.radius=.5*this.size(e).length(),i}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:(d=[new K.Vector3,new K.Vector3,new K.Vector3,new K.Vector3,new K.Vector3,new K.Vector3,new K.Vector3,new K.Vector3],function(e){return d[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),d[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),d[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),d[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),d[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),d[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),d[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),d[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.makeEmpty(),this.setFromPoints(d),this}),translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)},clone:function(){return(new K.Box3).copy(this)}},K.Matrix3=function(){this.elements=new Float32Array([1,0,0,0,1,0,0,0,1]),arguments.length>0&&K.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")},K.Matrix3.prototype={constructor:K.Matrix3,set:function(e,t,i,n,r,o,s,a,l){var c=this.elements;return c[0]=e,c[3]=t,c[6]=i,c[1]=n,c[4]=r,c[7]=o,c[2]=s,c[5]=a,c[8]=l,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},copy:function(e){var t=e.elements;return this.set(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]),this},multiplyVector3:function(e){return K.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),e.applyMatrix3(this)},multiplyVector3Array:function(e){return K.warn("THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(e)},applyToVector3Array:function(){var e=new K.Vector3;return function(t,i,n){void 0===i&&(i=0),void 0===n&&(n=t.length);for(var r=0,o=i;r0&&K.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")},K.Matrix4.prototype={constructor:K.Matrix4,set:function(e,t,i,n,r,o,s,a,l,c,h,u,d,f,p,m){var g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=n,g[1]=r,g[5]=o,g[9]=s,g[13]=a,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=f,g[11]=p,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(e){return this.elements.set(e.elements),this},extractPosition:function(e){return K.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)},copyPosition:function(e){var t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this},extractBasis:function(e,t,i){var n=this.elements;return e.set(n[0],n[1],n[2]),t.set(n[4],n[5],n[6]),i.set(n[8],n[9],n[10]),this},makeBasis:function(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this},extractRotation:function(){var e=new K.Vector3;return function(t){var i=this.elements,n=t.elements,r=1/e.set(n[0],n[1],n[2]).length(),o=1/e.set(n[4],n[5],n[6]).length(),s=1/e.set(n[8],n[9],n[10]).length();return i[0]=n[0]*r,i[1]=n[1]*r,i[2]=n[2]*r,i[4]=n[4]*o,i[5]=n[5]*o,i[6]=n[6]*o,i[8]=n[8]*s,i[9]=n[9]*s,i[10]=n[10]*s,this}}(),makeRotationFromEuler:function(e){e instanceof K.Euler==!1&&K.error("THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,i=e.x,n=e.y,r=e.z,o=Math.cos(i),s=Math.sin(i),a=Math.cos(n),l=Math.sin(n),c=Math.cos(r),h=Math.sin(r);if("XYZ"===e.order){var u=o*c,d=o*h,f=s*c,p=s*h;t[0]=a*c,t[4]=-a*h,t[8]=l,t[1]=d+f*l,t[5]=u-p*l,t[9]=-s*a,t[2]=p-u*l,t[6]=f+d*l,t[10]=o*a}else if("YXZ"===e.order){var m=a*c,g=a*h,v=l*c,y=l*h;t[0]=m+y*s,t[4]=v*s-g,t[8]=o*l,t[1]=o*h,t[5]=o*c,t[9]=-s,t[2]=g*s-v,t[6]=y+m*s,t[10]=o*a}else if("ZXY"===e.order){m=a*c,g=a*h,v=l*c,y=l*h;t[0]=m-y*s,t[4]=-o*h,t[8]=v+g*s,t[1]=g+v*s,t[5]=o*c,t[9]=y-m*s,t[2]=-o*l,t[6]=s,t[10]=o*a}else if("ZYX"===e.order){u=o*c,d=o*h,f=s*c,p=s*h;t[0]=a*c,t[4]=f*l-d,t[8]=u*l+p,t[1]=a*h,t[5]=p*l+u,t[9]=d*l-f,t[2]=-l,t[6]=s*a,t[10]=o*a}else if("YZX"===e.order){var b=o*a,x=o*l,_=s*a,E=s*l;t[0]=a*c,t[4]=E-b*h,t[8]=_*h+x,t[1]=h,t[5]=o*c,t[9]=-s*c,t[2]=-l*c,t[6]=x*h+_,t[10]=b-E*h}else if("XZY"===e.order){b=o*a,x=o*l,_=s*a,E=s*l;t[0]=a*c,t[4]=-h,t[8]=l*c,t[1]=b*h+E,t[5]=o*c,t[9]=x*h-_,t[2]=_*h-x,t[6]=s*c,t[10]=E*h+b}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},setRotationFromQuaternion:function(e){return K.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(e)},makeRotationFromQuaternion:function(e){var t=this.elements,i=e.x,n=e.y,r=e.z,o=e.w,s=i+i,a=n+n,l=r+r,c=i*s,h=i*a,u=i*l,d=n*a,f=n*l,p=r*l,m=o*s,g=o*a,v=o*l;return t[0]=1-(d+p),t[4]=h-v,t[8]=u+g,t[1]=h+v,t[5]=1-(c+p),t[9]=f-m,t[2]=u-g,t[6]=f+m,t[10]=1-(c+d),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},lookAt:function(){var e=new K.Vector3,t=new K.Vector3,i=new K.Vector3;return function(n,r,o){var s=this.elements;return i.subVectors(n,r).normalize(),0===i.length()&&(i.z=1),e.crossVectors(o,i).normalize(),0===e.length()&&(i.x+=1e-4,e.crossVectors(o,i).normalize()),t.crossVectors(i,e),s[0]=e.x,s[4]=t.x,s[8]=i.x,s[1]=e.y,s[5]=t.y,s[9]=i.y,s[2]=e.z,s[6]=t.z,s[10]=i.z,this}}(),multiply:function(e,t){return void 0!==t?(K.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)},multiplyMatrices:function(e,t){var i=e.elements,n=t.elements,r=this.elements,o=i[0],s=i[4],a=i[8],l=i[12],c=i[1],h=i[5],u=i[9],d=i[13],f=i[2],p=i[6],m=i[10],g=i[14],v=i[3],y=i[7],b=i[11],x=i[15],_=n[0],E=n[4],S=n[8],A=n[12],w=n[1],T=n[5],M=n[9],C=n[13],P=n[2],D=n[6],L=n[10],I=n[14],R=n[3],O=n[7],N=n[11],F=n[15];return r[0]=o*_+s*w+a*P+l*R,r[4]=o*E+s*T+a*D+l*O,r[8]=o*S+s*M+a*L+l*N,r[12]=o*A+s*C+a*I+l*F,r[1]=c*_+h*w+u*P+d*R,r[5]=c*E+h*T+u*D+d*O,r[9]=c*S+h*M+u*L+d*N,r[13]=c*A+h*C+u*I+d*F,r[2]=f*_+p*w+m*P+g*R,r[6]=f*E+p*T+m*D+g*O,r[10]=f*S+p*M+m*L+g*N,r[14]=f*A+p*C+m*I+g*F,r[3]=v*_+y*w+b*P+x*R,r[7]=v*E+y*T+b*D+x*O,r[11]=v*S+y*M+b*L+x*N,r[15]=v*A+y*C+b*I+x*F,this},multiplyToArray:function(e,t,i){var n=this.elements;return this.multiplyMatrices(e,t),i[0]=n[0],i[1]=n[1],i[2]=n[2],i[3]=n[3],i[4]=n[4],i[5]=n[5],i[6]=n[6],i[7]=n[7],i[8]=n[8],i[9]=n[9],i[10]=n[10],i[11]=n[11],i[12]=n[12],i[13]=n[13],i[14]=n[14],i[15]=n[15],this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},multiplyVector3:function(e){return K.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead."),e.applyProjection(this)},multiplyVector4:function(e){return K.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},multiplyVector3Array:function(e){return K.warn("THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(e)},applyToVector3Array:function(){var e=new K.Vector3;return function(t,i,n){void 0===i&&(i=0),void 0===n&&(n=t.length);for(var r=0,o=i;r0)if(o=c*h-u,a=l*f,(r=c*u-h)>=0)if(o>=-a)if(o<=a){var v=1/f;s=(r*=v)*(r+c*(o*=v)+2*h)+o*(c*r+o+2*u)+d}else o=l,s=-(r=Math.max(0,-(c*o+h)))*r+o*(o+2*u)+d;else o=-l,s=-(r=Math.max(0,-(c*o+h)))*r+o*(o+2*u)+d;else o<=-a?s=-(r=Math.max(0,-(-c*l+h)))*r+(o=r>0?-l:Math.min(Math.max(-l,-u),l))*(o+2*u)+d:o<=a?(r=0,s=(o=Math.min(Math.max(-l,-u),l))*(o+2*u)+d):s=-(r=Math.max(0,-(c*l+h)))*r+(o=r>0?l:Math.min(Math.max(-l,-u),l))*(o+2*u)+d;else o=c>0?-l:l,s=-(r=Math.max(0,-(c*o+h)))*r+o*(o+2*u)+d;return i&&i.copy(this.direction).multiplyScalar(r).add(this.origin),n&&n.copy(m).multiplyScalar(o).add(p),s}),isIntersectionSphere:function(e){return this.distanceToPoint(e.center)<=e.radius},intersectSphere:function(){var e=new K.Vector3;return function(t,i){e.subVectors(t.center,this.origin);var n=e.dot(this.direction),r=e.dot(e)-n*n,o=t.radius*t.radius;if(r>o)return null;var s=Math.sqrt(o-r),a=n-s,l=n+s;return a<0&&l<0?null:a<0?this.at(l,i):this.at(a,i)}}(),isIntersectionPlane:function(e){var t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0},distanceToPlane:function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null},intersectPlane:function(e,t){var i=this.distanceToPlane(e);return null===i?null:this.at(i,t)},isIntersectionBox:(f=new K.Vector3,function(e){return null!==this.intersectBox(e,f)}),intersectBox:function(e,t){var i,n,r,o,s,a,l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(i=(e.min.x-u.x)*l,n=(e.max.x-u.x)*l):(i=(e.max.x-u.x)*l,n=(e.min.x-u.x)*l),c>=0?(r=(e.min.y-u.y)*c,o=(e.max.y-u.y)*c):(r=(e.max.y-u.y)*c,o=(e.min.y-u.y)*c),i>o||r>n?null:((r>i||i!=i)&&(i=r),(o=0?(s=(e.min.z-u.z)*h,a=(e.max.z-u.z)*h):(s=(e.max.z-u.z)*h,a=(e.min.z-u.z)*h),i>a||s>n?null:((s>i||i!=i)&&(i=s),(a=0?i:n,t)))},intersectTriangle:function(){var e=new K.Vector3,t=new K.Vector3,i=new K.Vector3,n=new K.Vector3;return function(r,o,s,a,l){t.subVectors(o,r),i.subVectors(s,r),n.crossVectors(t,i);var c,h=this.direction.dot(n);if(h>0){if(a)return null;c=1}else{if(!(h<0))return null;c=-1,h=-h}e.subVectors(this.origin,r);var u=c*this.direction.dot(i.crossVectors(e,i));if(u<0)return null;var d=c*this.direction.dot(t.cross(e));if(d<0)return null;if(u+d>h)return null;var f=-c*e.dot(n);return f<0?null:this.at(f/h,l)}}(),applyMatrix4:function(e){return this.direction.add(this.origin).applyMatrix4(e),this.origin.applyMatrix4(e),this.direction.sub(this.origin),this.direction.normalize(),this},equals:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)},clone:function(){return(new K.Ray).copy(this)}},K.Sphere=function(e,t){this.center=void 0!==e?e:new K.Vector3,this.radius=void 0!==t?t:0},K.Sphere.prototype={constructor:K.Sphere,set:function(e,t){return this.center.copy(e),this.radius=t,this},setFromPoints:(v=new K.Box3,function(e,t){var i=this.center;void 0!==t?i.copy(t):v.setFromPoints(e).getCenter(i);for(var n=0,r=0,o=e.length;rthis.radius*this.radius&&(n.sub(this.center).normalize(),n.multiplyScalar(this.radius).add(this.center)),n},getBoundingBox:function(e){var t=e||new K.Box3;return t.set(this.center,this.center),t.expandByScalar(this.radius),t},applyMatrix4:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this},translate:function(e){return this.center.add(e),this},equals:function(e){return e.center.equals(this.center)&&e.radius===this.radius},clone:function(){return(new K.Sphere).copy(this)}},K.Frustum=function(e,t,i,n,r,o){this.planes=[void 0!==e?e:new K.Plane,void 0!==t?t:new K.Plane,void 0!==i?i:new K.Plane,void 0!==n?n:new K.Plane,void 0!==r?r:new K.Plane,void 0!==o?o:new K.Plane]},K.Frustum.prototype={constructor:K.Frustum,set:function(e,t,i,n,r,o){var s=this.planes;return s[0].copy(e),s[1].copy(t),s[2].copy(i),s[3].copy(n),s[4].copy(r),s[5].copy(o),this},copy:function(e){for(var t=this.planes,i=0;i<6;i++)t[i].copy(e.planes[i]);return this},setFromMatrix:function(e){var t=this.planes,i=e.elements,n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=i[5],c=i[6],h=i[7],u=i[8],d=i[9],f=i[10],p=i[11],m=i[12],g=i[13],v=i[14],y=i[15];return t[0].setComponents(s-n,h-a,p-u,y-m).normalize(),t[1].setComponents(s+n,h+a,p+u,y+m).normalize(),t[2].setComponents(s+r,h+l,p+d,y+g).normalize(),t[3].setComponents(s-r,h-l,p-d,y-g).normalize(),t[4].setComponents(s-o,h-c,p-f,y-v).normalize(),t[5].setComponents(s+o,h+c,p+f,y+v).normalize(),this},intersectsObject:(x=new K.Sphere,function(e){var t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),x.copy(t.boundingSphere),x.applyMatrix4(e.matrixWorld),this.intersectsSphere(x)}),intersectsSphere:function(e){for(var t=this.planes,i=e.center,n=-e.radius,r=0;r<6;r++){if(t[r].distanceToPoint(i)0?e.min.x:e.max.x,b.x=n.normal.x>0?e.max.x:e.min.x,y.y=n.normal.y>0?e.min.y:e.max.y,b.y=n.normal.y>0?e.max.y:e.min.y,y.z=n.normal.z>0?e.min.z:e.max.z,b.z=n.normal.z>0?e.max.z:e.min.z;var r=n.distanceToPoint(y),o=n.distanceToPoint(b);if(r<0&&o<0)return!1}return!0}),containsPoint:function(e){for(var t=this.planes,i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0},clone:function(){return(new K.Frustum).copy(this)}},K.Plane=function(e,t){this.normal=void 0!==e?e:new K.Vector3(1,0,0),this.constant=void 0!==t?t:0},K.Plane.prototype={constructor:K.Plane,set:function(e,t){return this.normal.copy(e),this.constant=t,this},setComponents:function(e,t,i,n){return this.normal.set(e,t,i),this.constant=n,this},setFromNormalAndCoplanarPoint:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this},setFromCoplanarPoints:function(){var e=new K.Vector3,t=new K.Vector3;return function(i,n,r){var o=e.subVectors(r,n).cross(t.subVectors(i,n)).normalize();return this.setFromNormalAndCoplanarPoint(o,i),this}}(),copy:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this},normalize:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(e){return this.normal.dot(e)+this.constant},distanceToSphere:function(e){return this.distanceToPoint(e.center)-e.radius},projectPoint:function(e,t){return this.orthoPoint(e,t).sub(e).negate()},orthoPoint:function(e,t){var i=this.distanceToPoint(e);return(t||new K.Vector3).copy(this.normal).multiplyScalar(i)},isIntersectionLine:function(e){var t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0},intersectLine:function(){var e=new K.Vector3;return function(t,i){var n=i||new K.Vector3,r=t.delta(e),o=this.normal.dot(r);if(0==o)return 0==this.distanceToPoint(t.start)?n.copy(t.start):void 0;var s=-(t.start.dot(this.normal)+this.constant)/o;return s<0||s>1?void 0:n.copy(r).multiplyScalar(s).add(t.start)}}(),coplanarPoint:function(e){return(e||new K.Vector3).copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var e=new K.Vector3,t=new K.Vector3,i=new K.Matrix3;return function(n,r){var o=r||i.getNormalMatrix(n),s=e.copy(this.normal).applyMatrix3(o);s.normalize();var a=this.coplanarPoint(t);return a.applyMatrix4(n),this.setFromNormalAndCoplanarPoint(s,a),this}}(),translate:function(e){return this.constant=this.constant-e.dot(this.normal),this},equals:function(e){return e.normal.equals(this.normal)&&e.constant==this.constant},clone:function(){return(new K.Plane).copy(this)}},K.Math={generateUUID:function(){var e,t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=new Array(36),n=0;return function(){for(var r=0;r<36;r++)8==r||13==r||18==r||23==r?i[r]="-":14==r?i[r]="4":(n<=2&&(n=33554432+16777216*Math.random()|0),e=15&n,n>>=4,i[r]=t[19==r?3&e|8:e]);return i.join("")}}(),clamp:function(e,t,i){return ei?i:e},clampBottom:function(e,t){return e=i?1:(e=(e-t)/(i-t))*e*(3-2*e)},smootherstep:function(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*e*(e*(6*e-15)+10)},random16:function(){return(65280*Math.random()+255*Math.random())/65535},randInt:function(e,t){return Math.floor(this.randFloat(e,t))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},degToRad:(E=Math.PI/180,function(e){return e*E}),radToDeg:(_=180/Math.PI,function(e){return e*_}),isPowerOfTwo:function(e){return!(e&e-1)&&0!==e},nextPowerOfTwo:function(e){return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e}},K.Spline=function(e){this.points=e;var t,i,n,r,o,s,a,l,c,h=[],u={x:0,y:0,z:0};function d(e,t,i,n,r,o,s){var a=.5*(i-e),l=.5*(n-t);return(2*(t-i)+a+l)*s+(-3*(t-i)-2*a-l)*o+a*r+t}this.initFromArray=function(e){this.points=[];for(var t=0;tthis.points.length-2?this.points.length-1:i+1,h[3]=i>this.points.length-3?this.points.length-1:i+2,s=this.points[h[0]],a=this.points[h[1]],l=this.points[h[2]],c=this.points[h[3]],o=n*(r=n*n),u.x=d(s.x,a.x,l.x,c.x,n,r,o),u.y=d(s.y,a.y,l.y,c.y,n,r,o),u.z=d(s.z,a.z,l.z,c.z,n,r,o),u},this.getControlPointsArray=function(){var e,t,i=this.points.length,n=[];for(e=0;e0?r.multiplyScalar(1/Math.sqrt(o)):r.set(0,0,0)}),K.Triangle.barycoordFromPoint=function(){var e=new K.Vector3,t=new K.Vector3,i=new K.Vector3;return function(n,r,o,s,a){e.subVectors(s,r),t.subVectors(o,r),i.subVectors(n,r);var l=e.dot(e),c=e.dot(t),h=e.dot(i),u=t.dot(t),d=t.dot(i),f=l*u-c*c,p=a||new K.Vector3;if(0==f)return p.set(-2,-1,-1);var m=1/f,g=(u*h-c*d)*m,v=(l*d-c*h)*m;return p.set(1-g-v,v,g)}}(),K.Triangle.containsPoint=function(){var e=new K.Vector3;return function(t,i,n,r){var o=K.Triangle.barycoordFromPoint(t,i,n,r,e);return o.x>=0&&o.y>=0&&o.x+o.y<=1}}(),K.Triangle.prototype={constructor:K.Triangle,set:function(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this},setFromPointsAndIndices:function(e,t,i,n){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[n]),this},copy:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this},area:function(){var e=new K.Vector3,t=new K.Vector3;return function(){return e.subVectors(this.c,this.b),t.subVectors(this.a,this.b),.5*e.cross(t).length()}}(),midpoint:function(e){return(e||new K.Vector3).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(e){return K.Triangle.normal(this.a,this.b,this.c,e)},plane:function(e){return(e||new K.Plane).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(e,t){return K.Triangle.barycoordFromPoint(e,this.a,this.b,this.c,t)},containsPoint:function(e){return K.Triangle.containsPoint(e,this.a,this.b,this.c)},equals:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)},clone:function(){return(new K.Triangle).copy(this)}},K.Clock=function(e){this.autoStart=void 0===e||e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1},K.Clock.prototype={constructor:K.Clock,start:function(){this.startTime=void 0!==self.performance&&void 0!==self.performance.now?self.performance.now():Date.now(),this.oldTime=this.startTime,this.running=!0},stop:function(){this.getElapsedTime(),this.running=!1},getElapsedTime:function(){return this.getDelta(),this.elapsedTime},getDelta:function(){var e=0;if(this.autoStart&&!this.running&&this.start(),this.running){var t=void 0!==self.performance&&void 0!==self.performance.now?self.performance.now():Date.now();e=.001*(t-this.oldTime),this.oldTime=t,this.elapsedTime+=e}return e}},K.EventDispatcher=function(){},K.EventDispatcher.prototype={constructor:K.EventDispatcher,apply:function(e){e.addEventListener=K.EventDispatcher.prototype.addEventListener,e.hasEventListener=K.EventDispatcher.prototype.hasEventListener,e.removeEventListener=K.EventDispatcher.prototype.removeEventListener,e.dispatchEvent=K.EventDispatcher.prototype.dispatchEvent},addEventListener:function(e,t){void 0===this._listeners&&(this._listeners={});var i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)},hasEventListener:function(e,t){if(void 0===this._listeners)return!1;var i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)},removeEventListener:function(e,t){if(void 0!==this._listeners){var i=this._listeners[e];if(void 0!==i){var n=i.indexOf(t);-1!==n&&i.splice(n,1)}}},dispatchEvent:function(e){if(void 0!==this._listeners){var t=this._listeners[e.type];if(void 0!==t){e.target=this;for(var i=[],n=t.length,r=0;r1){for(var t=0;t1)for(var t=0;t0){o.children=[];for(var s=0;s0,a=3==n[0].vertexNormals.length,l=new Float32Array(3*n.length*3);this.setAttribute("position",new K.BufferAttribute(l,3));var c=new Float32Array(3*n.length*3);if(this.setAttribute("normal",new K.BufferAttribute(c,3)),o!==K.NoColors){var h=new Float32Array(3*n.length*3);this.setAttribute("color",new K.BufferAttribute(h,3))}if(!0===s){var u=new Float32Array(3*n.length*2);this.setAttribute("uv",new K.BufferAttribute(u,2))}for(var d=0,f=0,p=0;d0?this.offsets:[{start:0,count:f.length,index:0}],m=0,g=p.length;ml.index+e){var g={start:o,count:0,index:s};a.push(g),l=g;for(var v=0;v<6;v+=2){(y=h[v+1])>-1&&y0&&(e.data.offsets=JSON.parse(JSON.stringify(i))),null!==n&&(e.data.boundingSphere={center:n.center.toArray(),radius:n.radius}),e},clone:function(){var e=new K.BufferGeometry;for(var t in this.attributes){var i=this.attributes[t];e.setAttribute(t,i.clone())}for(var n=0,r=this.offsets.length;n0)for(h=0;h0&&(e+=t[i].distanceTo(t[i-1])),this.lineDistances[i]=e},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new K.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new K.Sphere),this.boundingSphere.setFromPoints(this.vertices)},merge:function(e,t,i){if(e instanceof K.Geometry!=!1){var n,r=this.vertices.length,o=this.vertices,s=e.vertices,a=this.faces,l=e.faces,c=this.faceVertexUvs[0],h=e.faceVertexUvs[0];void 0===i&&(i=0),void 0!==t&&(n=(new K.Matrix3).getNormalMatrix(t));for(var u=0,d=s.length;u=0;i--){var p=d[i];for(this.faces.splice(p,1),s=0,a=this.faceVertexUvs.length;s0,g=f.vertexNormals.length>0,v=1!==f.color.r||1!==f.color.g||1!==f.color.b,y=f.vertexColors.length>0,b=0;if(b=S(b,0,0),b=S(b,1,!1),b=S(b,2,!1),b=S(b,3,p),b=S(b,4,m),b=S(b,5,g),b=S(b,6,v),b=S(b,7,y),s.push(b),s.push(f.a,f.b,f.c),p){var x=this.faceVertexUvs[0][r];s.push(T(x[0]),T(x[1]),T(x[2]))}if(m&&s.push(A(f.normal)),g){var _=f.vertexNormals;s.push(A(_[0]),A(_[1]),A(_[2]))}if(v&&s.push(w(f.color)),y){var E=f.vertexColors;s.push(w(E[0]),w(E[1]),w(E[2]))}}function S(e,t,i){return i?e|1<0&&(e.data.colors=c),u.length>0&&(e.data.uvs=[u]),e.data.faces=s,e},clone:function(){for(var e=new K.Geometry,t=this.vertices,i=0,n=t.length;i1?e.skinWeights[n+1]:0,a=t>2?e.skinWeights[n+2]:0,l=t>3?e.skinWeights[n+3]:0;i.skinWeights.push(new K.Vector4(o,s,a,l))}if(e.skinIndices)for(n=0,r=e.skinIndices.length;n1?e.skinIndices[n+1]:0,u=t>2?e.skinIndices[n+2]:0,d=t>3?e.skinIndices[n+3]:0;i.skinIndices.push(new K.Vector4(c,h,u,d))}i.bones=e.bones,i.bones&&i.bones.length>0&&(i.skinWeights.length!==i.skinIndices.length||i.skinIndices.length!==i.vertices.length)&&K.warn("THREE.JSONLoader: When skinning, number of vertices ("+i.vertices.length+"), skinIndices ("+i.skinIndices.length+"), and skinWeights ("+i.skinWeights.length+") should match.");i.animation=e.animation,i.animations=e.animations}(),function(t){var n,r,o,s,a,l,c,h,u,d,f;if(void 0!==e.morphTargets)for(a=0,l=e.morphTargets.length;a0){var r=new K.LoadingManager(t),o=new K.ImageLoader(r);o.setCrossOrigin(this.crossOrigin);for(var s=function(e){return i.manager.itemStart(e),o.load(e,(function(){i.manager.itemEnd(e)}))},a=0,l=e.length;as))(T=t.origin.distanceTo(u))n.far||r.push({distance:T,point:h.clone().applyMatrix4(this.matrixWorld),index:_,offsetIndex:v,face:null,faceIndex:null,object:this})}}else for(m=f.position.array,_=0;_s))(T=t.origin.distanceTo(u))n.far||r.push({distance:T,point:h.clone().applyMatrix4(this.matrixWorld),index:_,face:null,faceIndex:null,object:this})}}else if(a instanceof K.Geometry){var A=a.vertices,w=A.length;for(_=0;_s))(T=t.origin.distanceTo(u))n.far||r.push({distance:T,point:h.clone().applyMatrix4(this.matrixWorld),index:_,face:null,faceIndex:null,object:this})}}}}}(),K.Line.prototype.clone=function(e){return void 0===e&&(e=new K.Line(this.geometry,this.material,this.mode)),K.Object3D.prototype.clone.call(this,e),e},K.Mesh=function(e,t){K.Object3D.call(this),this.type="Mesh",this.geometry=void 0!==e?e:new K.Geometry,this.material=void 0!==t?t:new K.MeshBasicMaterial({color:16777215*Math.random()}),this.updateMorphTargets()},K.Mesh.prototype=Object.create(K.Object3D.prototype),K.Mesh.prototype.constructor=K.Mesh,K.Mesh.prototype.updateMorphTargets=function(){if(void 0!==this.geometry.morphTargets&&this.geometry.morphTargets.length>0){this.morphTargetBase=-1,this.morphTargetForcedOrder=[],this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var e=0,t=this.geometry.morphTargets.length;es.far||a.push({distance:k,point:_,face:new K.Face3(S,A,w,K.Triangle.normal(n,r,o)),faceIndex:null,object:this})}}else{b=0;var E=0;for(x=(d=c.position.array).length;bs.far||a.push({distance:k,point:_,face:new K.Face3(S,A,w,K.Triangle.normal(n,r,o)),faceIndex:null,object:this})}}}else if(l instanceof K.Geometry)for(var S,A,w,T=this.material instanceof K.MeshFaceMaterial,M=!0===T?this.material.materials:null,C=(h=s.precision,l.vertices),P=0,D=l.faces.length;Ps.far||a.push({distance:k,point:_,face:I,faceIndex:P,object:this})}}}}(),K.Mesh.prototype.clone=function(e,t){return void 0===e&&(e=new K.Mesh(this.geometry,this.material)),K.Object3D.prototype.clone.call(this,e,t),e},K.Bone=function(e){K.Object3D.call(this),this.type="Bone",this.skin=e},K.Bone.prototype=Object.create(K.Object3D.prototype),K.Bone.prototype.constructor=K.Bone,K.Skeleton=function(e,t,i){var n;(this.useVertexTexture=void 0===i||i,this.identityMatrix=new K.Matrix4,e=e||[],this.bones=e.slice(0),this.useVertexTexture)?(n=this.bones.length>256?64:this.bones.length>64?32:this.bones.length>16?16:8,this.boneTextureWidth=n,this.boneTextureHeight=n,this.boneMatrices=new Float32Array(this.boneTextureWidth*this.boneTextureHeight*4),this.boneTexture=new K.DataTexture(this.boneMatrices,this.boneTextureWidth,this.boneTextureHeight,K.RGBAFormat,K.FloatType),this.boneTexture.minFilter=K.NearestFilter,this.boneTexture.magFilter=K.NearestFilter,this.boneTexture.generateMipmaps=!1,this.boneTexture.flipY=!1):this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===t)this.calculateInverses();else if(this.bones.length===t.length)this.boneInverses=t.slice(0);else{K.warn("THREE.Skeleton bonInverses is the wrong length."),this.boneInverses=[];for(var r=0,o=this.bones.length;r1){var a=s[1];i[a]||(i[a]={start:1/0,end:-1/0});var l=i[a];rl.end&&(l.end=r),t||(t=a)}}e.firstAnimation=t},K.MorphAnimMesh.prototype.setAnimationLabel=function(e,t,i){this.geometry.animations||(this.geometry.animations={}),this.geometry.animations[e]={start:t,end:i}},K.MorphAnimMesh.prototype.playAnimation=function(e,t){var i=this.geometry.animations[e];i?(this.setFrameRange(i.start,i.end),this.duration=(i.end-i.start)/t*1e3,this.time=0):K.warn("THREE.MorphAnimMesh: animation["+e+"] undefined in .playAnimation()")},K.MorphAnimMesh.prototype.updateAnimation=function(e){var t=this.duration/this.length;this.time+=this.direction*e,this.mirroredLoop?(this.time>this.duration||this.time<0)&&(this.direction*=-1,this.time>this.duration&&(this.time=this.duration,this.directionBackwards=!0),this.time<0&&(this.time=0,this.directionBackwards=!1)):(this.time=this.time%this.duration,this.time<0&&(this.time+=this.duration));var i=this.startKeyframe+K.Math.clamp(Math.floor(this.time/t),0,this.length-1);i!==this.currentKeyframe&&(this.morphTargetInfluences[this.lastKeyframe]=0,this.morphTargetInfluences[this.currentKeyframe]=1,this.morphTargetInfluences[i]=0,this.lastKeyframe=this.currentKeyframe,this.currentKeyframe=i);var n=this.time%t/t;this.directionBackwards&&(n=1-n),this.morphTargetInfluences[this.currentKeyframe]=n,this.morphTargetInfluences[this.lastKeyframe]=1-n},K.MorphAnimMesh.prototype.interpolateTargets=function(e,t,i){for(var n=this.morphTargetInfluences,r=0,o=n.length;r-1&&(n[e]=1-i),t>-1&&(n[t]=i)},K.MorphAnimMesh.prototype.clone=function(e){return void 0===e&&(e=new K.MorphAnimMesh(this.geometry,this.material)),e.duration=this.duration,e.mirroredLoop=this.mirroredLoop,e.time=this.time,e.lastKeyframe=this.lastKeyframe,e.currentKeyframe=this.currentKeyframe,e.direction=this.direction,e.directionBackwards=this.directionBackwards,K.Mesh.prototype.clone.call(this,e),e},K.LOD=function(){K.Object3D.call(this),this.objects=[]},K.LOD.prototype=Object.create(K.Object3D.prototype),K.LOD.prototype.constructor=K.LOD,K.LOD.prototype.addLevel=function(e,t){void 0===t&&(t=0),t=Math.abs(t);for(var i=0;i1){e.setFromMatrixPosition(i.matrixWorld),t.setFromMatrixPosition(this.matrixWorld);var n=e.distanceTo(t);this.objects[0].object.visible=!0;for(var r=1,o=this.objects.length;r=this.objects[r].distance;r++)this.objects[r-1].object.visible=!1,this.objects[r].object.visible=!0;for(;rthis.scale.x||i.push({distance:n,point:this.position,face:null,object:this})}}(),K.Sprite.prototype.clone=function(e){return void 0===e&&(e=new K.Sprite(this.material)),K.Object3D.prototype.clone.call(this,e),e},K.Particle=K.Sprite,K.LensFlare=function(e,t,i,n,r){K.Object3D.call(this),this.lensFlares=[],this.positionScreen=new K.Vector3,this.customUpdateCallback=void 0,void 0!==e&&this.add(e,t,i,n,r)},K.LensFlare.prototype=Object.create(K.Object3D.prototype),K.LensFlare.prototype.constructor=K.LensFlare,K.LensFlare.prototype.add=function(e,t,i,n,r,o){void 0===t&&(t=-1),void 0===i&&(i=0),void 0===o&&(o=1),void 0===r&&(r=new K.Color(16777215)),void 0===n&&(n=K.NormalBlending),i=Math.min(i,Math.max(0,i)),this.lensFlares.push({texture:e,size:t,distance:i,x:0,y:0,z:0,scale:1,rotation:1,opacity:o,color:r,blending:n})},K.LensFlare.prototype.updateLensFlares=function(){var e,t,i=this.lensFlares.length,n=2*-this.positionScreen.x,r=2*-this.positionScreen.y;for(e=0;e 0.0 ) {\n\t return pow( saturate( 1.0 - lightDistance / cutoffDistance ), decayExponent );\n\t}\n\treturn 1.0;\n}\n\nvec3 inputToLinear( in vec3 a ) {\n#ifdef GAMMA_INPUT\n\treturn pow( a, vec3( float( GAMMA_FACTOR ) ) );\n#else\n\treturn a;\n#endif\n}\nvec3 linearToOutput( in vec3 a ) {\n#ifdef GAMMA_OUTPUT\n\treturn pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );\n#else\n\treturn a;\n#endif\n}\n",K.ShaderChunk.alphatest_fragment="#ifdef ALPHATEST\n\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n\n#endif\n",K.ShaderChunk.lights_lambert_vertex="vLightFront = vec3( 0.0 );\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack = vec3( 0.0 );\n\n#endif\n\ntransformedNormal = normalize( transformedNormal );\n\n#if MAX_DIR_LIGHTS > 0\n\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\tvec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );\n\n\tfloat dotProduct = dot( transformedNormal, dirVector );\n\tvec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t#endif\n\n\t#endif\n\n\t#ifdef WRAP_AROUND\n\n\t\tvec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\tdirectionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tdirectionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );\n\n\t\t#endif\n\n\t#endif\n\n\tvLightFront += directionalLightColor[ i ] * directionalLightWeighting;\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;\n\n\t#endif\n\n}\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), pointLightDistance[ i ], pointLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tvec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\tpointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tpointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\tvLightFront += pointLightColor[ i ] * pointLightWeighting * attenuation;\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += pointLightColor[ i ] * pointLightWeightingBack * attenuation;\n\n\t\t#endif\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - worldPosition.xyz ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\tfloat attenuation = calcLightAttenuation( length( lVector ), spotLightDistance[ i ], spotLightDecay[ i ] );\n\n\t\t\tlVector = normalize( lVector );\n\n\t\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\t\t\tvec3 spotLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvec3 spotLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\t\tvec3 spotLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 spotLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\t\tspotLightWeighting = mix( spotLightWeighting, spotLightWeightingHalf, wrapRGB );\n\n\t\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\t\tspotLightWeightingBack = mix( spotLightWeightingBack, spotLightWeightingHalfBack, wrapRGB );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\tvLightFront += spotLightColor[ i ] * spotLightWeighting * attenuation * spotEffect;\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvLightBack += spotLightColor[ i ] * spotLightWeightingBack * attenuation * spotEffect;\n\n\t\t\t#endif\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );\n\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\t\tfloat hemiDiffuseWeightBack = -0.5 * dotProduct + 0.5;\n\n\t\tvLightFront += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeightBack );\n\n\t\t#endif\n\n\t}\n\n#endif\n\nvLightFront += ambientLightColor;\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack += ambientLightColor;\n\n#endif\n",K.ShaderChunk.map_particle_pars_fragment="#ifdef USE_MAP\n\n\tuniform vec4 offsetRepeat;\n\tuniform sampler2D map;\n\n#endif\n",K.ShaderChunk.default_vertex="#ifdef USE_SKINNING\n\n\tvec4 mvPosition = modelViewMatrix * skinned;\n\n#elif defined( USE_MORPHTARGETS )\n\n\tvec4 mvPosition = modelViewMatrix * vec4( morphed, 1.0 );\n\n#else\n\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\n#endif\n\ngl_Position = projectionMatrix * mvPosition;\n",K.ShaderChunk.map_pars_fragment="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\n#endif\n\n#ifdef USE_MAP\n\n\tuniform sampler2D map;\n\n#endif",K.ShaderChunk.skinnormal_vertex="#ifdef USE_SKINNING\n\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\n\t#ifdef USE_MORPHNORMALS\n\n\tvec4 skinnedNormal = skinMatrix * vec4( morphedNormal, 0.0 );\n\n\t#else\n\n\tvec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );\n\n\t#endif\n\n#endif\n",K.ShaderChunk.logdepthbuf_pars_vertex="#ifdef USE_LOGDEPTHBUF\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tvarying float vFragDepth;\n\n\t#endif\n\n\tuniform float logDepthBufFC;\n\n#endif",K.ShaderChunk.lightmap_pars_vertex="#ifdef USE_LIGHTMAP\n\n\tvarying vec2 vUv2;\n\n#endif",K.ShaderChunk.lights_phong_fragment="#ifndef FLAT_SHADED\n\n\tvec3 normal = normalize( vNormal );\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tnormal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\n\t#endif\n\n#else\n\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n\n#endif\n\nvec3 viewPosition = normalize( vViewPosition );\n\n#ifdef USE_NORMALMAP\n\n\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\n#elif defined( USE_BUMPMAP )\n\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n\n#endif\n\nvec3 totalDiffuseLight = vec3( 0.0 );\nvec3 totalSpecularLight = vec3( 0.0 );\n\n#if MAX_POINT_LIGHTS > 0\n\n\tfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), pointLightDistance[ i ], pointLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, lVector );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tfloat pointDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\tfloat pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\tvec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n\n\t\t#else\n\n\t\t\tfloat pointDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t#endif\n\n\t\ttotalDiffuseLight += pointLightColor[ i ] * pointDiffuseWeight * attenuation;\n\n\t\t\t\t// specular\n\n\t\tvec3 pointHalfVector = normalize( lVector + viewPosition );\n\t\tfloat pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\n\t\tfloat pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * attenuation * specularNormalization;\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tfor ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), spotLightDistance[ i ], spotLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\t// diffuse\n\n\t\t\tfloat dotProduct = dot( normal, lVector );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tfloat spotDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\t\tfloat spotDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\t\tvec3 spotDiffuseWeight = mix( vec3( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );\n\n\t\t\t#else\n\n\t\t\t\tfloat spotDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t\t#endif\n\n\t\t\ttotalDiffuseLight += spotLightColor[ i ] * spotDiffuseWeight * attenuation * spotEffect;\n\n\t\t\t// specular\n\n\t\t\tvec3 spotHalfVector = normalize( lVector + viewPosition );\n\t\t\tfloat spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\n\t\t\tfloat spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininess ), 0.0 );\n\n\t\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, spotHalfVector ), 0.0 ), 5.0 );\n\t\t\ttotalSpecularLight += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * attenuation * specularNormalization * spotEffect;\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_DIR_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\t\tvec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, dirVector );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tfloat dirDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\tfloat dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\tvec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );\n\n\t\t#else\n\n\t\t\tfloat dirDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t#endif\n\n\t\ttotalDiffuseLight += directionalLightColor[ i ] * dirDiffuseWeight;\n\n\t\t// specular\n\n\t\tvec3 dirHalfVector = normalize( dirVector + viewPosition );\n\t\tfloat dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\n\t\tfloat dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );\n\n\t\t/*\n\t\t// fresnel term from skin shader\n\t\tconst float F0 = 0.128;\n\n\t\tfloat base = 1.0 - dot( viewPosition, dirHalfVector );\n\t\tfloat exponential = pow( base, 5.0 );\n\n\t\tfloat fresnel = exponential + F0 * ( 1.0 - exponential );\n\t\t*/\n\n\t\t/*\n\t\t// fresnel term from fresnel shader\n\t\tconst float mFresnelBias = 0.08;\n\t\tconst float mFresnelScale = 0.3;\n\t\tconst float mFresnelPower = 5.0;\n\n\t\tfloat fresnel = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( -viewPosition ), normal ), mFresnelPower );\n\t\t*/\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\t// \t\tdirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization * fresnel;\n\n\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\n\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, lVector );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\n\t\tvec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\ttotalDiffuseLight += hemiColor;\n\n\t\t// specular (sky light)\n\n\t\tvec3 hemiHalfVectorSky = normalize( lVector + viewPosition );\n\t\tfloat hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;\n\t\tfloat hemiSpecularWeightSky = specularStrength * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );\n\n\t\t// specular (ground light)\n\n\t\tvec3 lVectorGround = -lVector;\n\n\t\tvec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );\n\t\tfloat hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;\n\t\tfloat hemiSpecularWeightGround = specularStrength * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );\n\n\t\tfloat dotProductGround = dot( normal, lVectorGround );\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\tvec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );\n\t\tvec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );\n\n\t}\n\n#endif\n\n#ifdef METAL\n\n\toutgoingLight += diffuseColor.rgb * ( totalDiffuseLight + ambientLightColor ) * specular + totalSpecularLight + emissive;\n\n#else\n\n\toutgoingLight += diffuseColor.rgb * ( totalDiffuseLight + ambientLightColor ) + totalSpecularLight + emissive;\n\n#endif\n",K.ShaderChunk.fog_pars_fragment="#ifdef USE_FOG\n\n\tuniform vec3 fogColor;\n\n\t#ifdef FOG_EXP2\n\n\t\tuniform float fogDensity;\n\n\t#else\n\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n\n#endif",K.ShaderChunk.morphnormal_vertex="#ifdef USE_MORPHNORMALS\n\n\tvec3 morphedNormal = vec3( 0.0 );\n\n\tmorphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tmorphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tmorphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tmorphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n\n\tmorphedNormal += normal;\n\n#endif",K.ShaderChunk.envmap_pars_fragment="#ifdef USE_ENVMAP\n\n\tuniform float reflectivity;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n\t\tuniform float refractionRatio;\n\n\t#else\n\n\t\tvarying vec3 vReflect;\n\n\t#endif\n\n#endif\n",K.ShaderChunk.logdepthbuf_fragment="#if defined(USE_LOGDEPTHBUF) && defined(USE_LOGDEPTHBUF_EXT)\n\n\tgl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;\n\n#endif",K.ShaderChunk.normalmap_pars_fragment="#ifdef USE_NORMALMAP\n\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\n\t// Per-Pixel Tangent Space Normal Mapping\n\t// http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\n\t\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\n\t\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\n\t\tvec3 N = normalize( surf_norm );\n\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = normalScale * mapN.xy;\n\t\tmat3 tsn = mat3( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\n\t}\n\n#endif\n",K.ShaderChunk.lights_phong_pars_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvarying vec3 vWorldPosition;\n\n#endif\n",K.ShaderChunk.lightmap_pars_fragment="#ifdef USE_LIGHTMAP\n\n\tvarying vec2 vUv2;\n\tuniform sampler2D lightMap;\n\n#endif",K.ShaderChunk.shadowmap_vertex="#ifdef USE_SHADOWMAP\n\n\tfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n\t\tvShadowCoord[ i ] = shadowMatrix[ i ] * worldPosition;\n\n\t}\n\n#endif",K.ShaderChunk.lights_phong_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvWorldPosition = worldPosition.xyz;\n\n#endif",K.ShaderChunk.map_fragment="#ifdef USE_MAP\n\n\tvec4 texelColor = texture2D( map, vUv );\n\n\ttexelColor.xyz = inputToLinear( texelColor.xyz );\n\n\tdiffuseColor *= texelColor;\n\n#endif",K.ShaderChunk.lightmap_vertex="#ifdef USE_LIGHTMAP\n\n\tvUv2 = uv2;\n\n#endif",K.ShaderChunk.map_particle_fragment="#ifdef USE_MAP\n\n\tdiffuseColor *= texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) * offsetRepeat.zw + offsetRepeat.xy );\n\n#endif\n",K.ShaderChunk.color_pars_fragment="#ifdef USE_COLOR\n\n\tvarying vec3 vColor;\n\n#endif\n",K.ShaderChunk.color_vertex="#ifdef USE_COLOR\n\n\tvColor.xyz = inputToLinear( color.xyz );\n\n#endif",K.ShaderChunk.skinning_vertex="#ifdef USE_SKINNING\n\n\t#ifdef USE_MORPHTARGETS\n\n\tvec4 skinVertex = bindMatrix * vec4( morphed, 1.0 );\n\n\t#else\n\n\tvec4 skinVertex = bindMatrix * vec4( position, 1.0 );\n\n\t#endif\n\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\tskinned = bindMatrixInverse * skinned;\n\n#endif\n",K.ShaderChunk.envmap_pars_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n\tvarying vec3 vReflect;\n\n\tuniform float refractionRatio;\n\n#endif\n",K.ShaderChunk.linear_to_gamma_fragment="\n\toutgoingLight = linearToOutput( outgoingLight );\n",K.ShaderChunk.color_pars_vertex="#ifdef USE_COLOR\n\n\tvarying vec3 vColor;\n\n#endif",K.ShaderChunk.lights_lambert_pars_vertex="uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n\tuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n\tuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tuniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\tuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDecay[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDecay[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#ifdef WRAP_AROUND\n\n\tuniform vec3 wrapRGB;\n\n#endif\n",K.ShaderChunk.map_pars_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\tuniform vec4 offsetRepeat;\n\n#endif\n",K.ShaderChunk.envmap_fragment="#ifdef USE_ENVMAP\n\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\n\t\t// Transforming Normal Vectors with the Inverse Transformation\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\n\t\t#else\n\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\n\t\t#endif\n\n\t#else\n\n\t\tvec3 reflectVec = vReflect;\n\n\t#endif\n\n\t#ifdef DOUBLE_SIDED\n\t\tfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\t#else\n\t\tfloat flipNormal = 1.0;\n\t#endif\n\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\tsampleUV.y = saturate( flipNormal * reflectVec.y * 0.5 + 0.5 );\n\t\tsampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\tvec3 reflectView = flipNormal * 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#endif\n\n\tenvColor.xyz = inputToLinear( envColor.xyz );\n\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\n\t#endif\n\n#endif\n",K.ShaderChunk.specularmap_pars_fragment="#ifdef USE_SPECULARMAP\n\n\tuniform sampler2D specularMap;\n\n#endif",K.ShaderChunk.logdepthbuf_vertex="#ifdef USE_LOGDEPTHBUF\n\n\tgl_Position.z = log2(max( EPSILON, gl_Position.w + 1.0 )) * logDepthBufFC;\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\n#else\n\n\t\tgl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\n\n\t#endif\n\n#endif",K.ShaderChunk.morphtarget_pars_vertex="#ifdef USE_MORPHTARGETS\n\n\t#ifndef USE_MORPHNORMALS\n\n\tuniform float morphTargetInfluences[ 8 ];\n\n\t#else\n\n\tuniform float morphTargetInfluences[ 4 ];\n\n\t#endif\n\n#endif",K.ShaderChunk.specularmap_fragment="float specularStrength;\n\n#ifdef USE_SPECULARMAP\n\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n\n#else\n\n\tspecularStrength = 1.0;\n\n#endif",K.ShaderChunk.fog_fragment="#ifdef USE_FOG\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;\n\n\t#else\n\n\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\n\t#endif\n\n\t#ifdef FOG_EXP2\n\n\t\tfloat fogFactor = exp2( - square( fogDensity ) * square( depth ) * LOG2 );\n\t\tfogFactor = whiteCompliment( fogFactor );\n\n\t#else\n\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n\n\t#endif\n\t\n\toutgoingLight = mix( outgoingLight, fogColor, fogFactor );\n\n#endif",K.ShaderChunk.bumpmap_pars_fragment="#ifdef USE_BUMPMAP\n\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\n\t// Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\n\t// http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\n\n\t// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\n\n\tvec2 dHdxy_fwd() {\n\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\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\n\t\treturn vec2( dBx, dBy );\n\n\t}\n\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\n\t\tvec3 vSigmaX = dFdx( surf_pos );\n\t\tvec3 vSigmaY = dFdy( surf_pos );\n\t\tvec3 vN = surf_norm;\t\t// normalized\n\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\n\t}\n\n#endif\n",K.ShaderChunk.defaultnormal_vertex="#ifdef USE_SKINNING\n\n\tvec3 objectNormal = skinnedNormal.xyz;\n\n#elif defined( USE_MORPHNORMALS )\n\n\tvec3 objectNormal = morphedNormal;\n\n#else\n\n\tvec3 objectNormal = normal;\n\n#endif\n\n#ifdef FLIP_SIDED\n\n\tobjectNormal = -objectNormal;\n\n#endif\n\nvec3 transformedNormal = normalMatrix * objectNormal;\n",K.ShaderChunk.lights_phong_pars_fragment="uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n\tuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n\tuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tuniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\n\tuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDecay[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDecay[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvarying vec3 vWorldPosition;\n\n#endif\n\n#ifdef WRAP_AROUND\n\n\tuniform vec3 wrapRGB;\n\n#endif\n\nvarying vec3 vViewPosition;\n\n#ifndef FLAT_SHADED\n\n\tvarying vec3 vNormal;\n\n#endif\n",K.ShaderChunk.skinbase_vertex="#ifdef USE_SKINNING\n\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\n#endif",K.ShaderChunk.map_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n\n#endif",K.ShaderChunk.lightmap_fragment="#ifdef USE_LIGHTMAP\n\n\toutgoingLight *= diffuseColor.xyz * texture2D( lightMap, vUv2 ).xyz;\n\n#endif",K.ShaderChunk.shadowmap_pars_vertex="#ifdef USE_SHADOWMAP\n\n\tvarying vec4 vShadowCoord[ MAX_SHADOWS ];\n\tuniform mat4 shadowMatrix[ MAX_SHADOWS ];\n\n#endif",K.ShaderChunk.color_fragment="#ifdef USE_COLOR\n\n\tdiffuseColor.rgb *= vColor;\n\n#endif",K.ShaderChunk.morphtarget_vertex="#ifdef USE_MORPHTARGETS\n\n\tvec3 morphed = vec3( 0.0 );\n\tmorphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\tmorphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\tmorphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\tmorphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\n\t#ifndef USE_MORPHNORMALS\n\n\tmorphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\tmorphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\tmorphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\tmorphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\n\t#endif\n\n\tmorphed += position;\n\n#endif",K.ShaderChunk.envmap_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n\tvec3 worldNormal = transformDirection( objectNormal, modelMatrix );\n\n\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\n\t#ifdef ENVMAP_MODE_REFLECTION\n\n\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\n\t#else\n\n\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\n\t#endif\n\n#endif\n",K.ShaderChunk.shadowmap_fragment="#ifdef USE_SHADOWMAP\n\n\t#ifdef SHADOWMAP_DEBUG\n\n\t\tvec3 frustumColors[3];\n\t\tfrustumColors[0] = vec3( 1.0, 0.5, 0.0 );\n\t\tfrustumColors[1] = vec3( 0.0, 1.0, 0.8 );\n\t\tfrustumColors[2] = vec3( 0.0, 0.5, 1.0 );\n\n\t#endif\n\n\t#ifdef SHADOWMAP_CASCADE\n\n\t\tint inFrustumCount = 0;\n\n\t#endif\n\n\tfloat fDepth;\n\tvec3 shadowColor = vec3( 1.0 );\n\n\tfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n\t\tvec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;\n\n\t\t\t\t// if ( something && something ) breaks ATI OpenGL shader compiler\n\t\t\t\t// if ( all( something, something ) ) using this instead\n\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\n\t\t\t\t// don't shadow pixels outside of light frustum\n\t\t\t\t// use just first frustum (for cascades)\n\t\t\t\t// don't shadow pixels behind far plane of light frustum\n\n\t\t#ifdef SHADOWMAP_CASCADE\n\n\t\t\tinFrustumCount += int( inFrustum );\n\t\t\tbvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );\n\n\t\t#else\n\n\t\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\n\t\t#endif\n\n\t\tbool frustumTest = all( frustumTestVec );\n\n\t\tif ( frustumTest ) {\n\n\t\t\tshadowCoord.z += shadowBias[ i ];\n\n\t\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\n\t\t\t\t\t\t// Percentage-close filtering\n\t\t\t\t\t\t// (9 pixel kernel)\n\t\t\t\t\t\t// http://fabiensanglard.net/shadowmappingPCF/\n\n\t\t\t\tfloat shadow = 0.0;\n\n\t\t/*\n\t\t\t\t\t\t// nested loops breaks shader compiler / validator on some ATI cards when using OpenGL\n\t\t\t\t\t\t// must enroll loop manually\n\n\t\t\t\tfor ( float y = -1.25; y <= 1.25; y += 1.25 )\n\t\t\t\t\tfor ( float x = -1.25; x <= 1.25; x += 1.25 ) {\n\n\t\t\t\t\t\tvec4 rgbaDepth = texture2D( shadowMap[ i ], vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy );\n\n\t\t\t\t\t\t\t\t// doesn't seem to produce any noticeable visual difference compared to simple texture2D lookup\n\t\t\t\t\t\t\t\t//vec4 rgbaDepth = texture2DProj( shadowMap[ i ], vec4( vShadowCoord[ i ].w * ( vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy ), 0.05, vShadowCoord[ i ].w ) );\n\n\t\t\t\t\t\tfloat fDepth = unpackDepth( rgbaDepth );\n\n\t\t\t\t\t\tif ( fDepth < shadowCoord.z )\n\t\t\t\t\t\t\tshadow += 1.0;\n\n\t\t\t\t}\n\n\t\t\t\tshadow /= 9.0;\n\n\t\t*/\n\n\t\t\t\tconst float shadowDelta = 1.0 / 9.0;\n\n\t\t\t\tfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n\t\t\t\tfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n\t\t\t\tfloat dx0 = -1.25 * xPixelOffset;\n\t\t\t\tfloat dy0 = -1.25 * yPixelOffset;\n\t\t\t\tfloat dx1 = 1.25 * xPixelOffset;\n\t\t\t\tfloat dy1 = 1.25 * yPixelOffset;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n\t\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\n\t\t\t\t\t\t// Percentage-close filtering\n\t\t\t\t\t\t// (9 pixel kernel)\n\t\t\t\t\t\t// http://fabiensanglard.net/shadowmappingPCF/\n\n\t\t\t\tfloat shadow = 0.0;\n\n\t\t\t\tfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n\t\t\t\tfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n\t\t\t\tfloat dx0 = -1.0 * xPixelOffset;\n\t\t\t\tfloat dy0 = -1.0 * yPixelOffset;\n\t\t\t\tfloat dx1 = 1.0 * xPixelOffset;\n\t\t\t\tfloat dy1 = 1.0 * yPixelOffset;\n\n\t\t\t\tmat3 shadowKernel;\n\t\t\t\tmat3 depthKernel;\n\n\t\t\t\tdepthKernel[0][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n\t\t\t\tdepthKernel[0][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n\t\t\t\tdepthKernel[0][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n\t\t\t\tdepthKernel[1][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n\t\t\t\tdepthKernel[1][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n\t\t\t\tdepthKernel[1][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n\t\t\t\tdepthKernel[2][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n\t\t\t\tdepthKernel[2][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n\t\t\t\tdepthKernel[2][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\n\t\t\t\tvec3 shadowZ = vec3( shadowCoord.z );\n\t\t\t\tshadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));\n\t\t\t\tshadowKernel[0] *= vec3(0.25);\n\n\t\t\t\tshadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));\n\t\t\t\tshadowKernel[1] *= vec3(0.25);\n\n\t\t\t\tshadowKernel[2] = vec3(lessThan(depthKernel[2], shadowZ ));\n\t\t\t\tshadowKernel[2] *= vec3(0.25);\n\n\t\t\t\tvec2 fractionalCoord = 1.0 - fract( shadowCoord.xy * shadowMapSize[i].xy );\n\n\t\t\t\tshadowKernel[0] = mix( shadowKernel[1], shadowKernel[0], fractionalCoord.x );\n\t\t\t\tshadowKernel[1] = mix( shadowKernel[2], shadowKernel[1], fractionalCoord.x );\n\n\t\t\t\tvec4 shadowValues;\n\t\t\t\tshadowValues.x = mix( shadowKernel[0][1], shadowKernel[0][0], fractionalCoord.y );\n\t\t\t\tshadowValues.y = mix( shadowKernel[0][2], shadowKernel[0][1], fractionalCoord.y );\n\t\t\t\tshadowValues.z = mix( shadowKernel[1][1], shadowKernel[1][0], fractionalCoord.y );\n\t\t\t\tshadowValues.w = mix( shadowKernel[1][2], shadowKernel[1][1], fractionalCoord.y );\n\n\t\t\t\tshadow = dot( shadowValues, vec4( 1.0 ) );\n\n\t\t\t\tshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n\t\t\t#else\n\n\t\t\t\tvec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );\n\t\t\t\tfloat fDepth = unpackDepth( rgbaDepth );\n\n\t\t\t\tif ( fDepth < shadowCoord.z )\n\n\t\t// spot with multiple shadows is darker\n\n\t\t\t\t\tshadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );\n\n\t\t// spot with multiple shadows has the same color as single shadow spot\n\n\t\t// \t\t\t\t\tshadowColor = min( shadowColor, vec3( shadowDarkness[ i ] ) );\n\n\t\t\t#endif\n\n\t\t}\n\n\n\t\t#ifdef SHADOWMAP_DEBUG\n\n\t\t\t#ifdef SHADOWMAP_CASCADE\n\n\t\t\t\tif ( inFrustum && inFrustumCount == 1 ) outgoingLight *= frustumColors[ i ];\n\n\t\t\t#else\n\n\t\t\t\tif ( inFrustum ) outgoingLight *= frustumColors[ i ];\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t}\n\n\t// NOTE: I am unsure if this is correct in linear space. -bhouston, Dec 29, 2014\n\tshadowColor = inputToLinear( shadowColor );\n\n\toutgoingLight = outgoingLight * shadowColor;\n\n#endif\n",K.ShaderChunk.worldpos_vertex="#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n\n\t#ifdef USE_SKINNING\n\n\t\tvec4 worldPosition = modelMatrix * skinned;\n\n\t#elif defined( USE_MORPHTARGETS )\n\n\t\tvec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );\n\n\t#else\n\n\t\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\n\t#endif\n\n#endif\n",K.ShaderChunk.shadowmap_pars_fragment="#ifdef USE_SHADOWMAP\n\n\tuniform sampler2D shadowMap[ MAX_SHADOWS ];\n\tuniform vec2 shadowMapSize[ MAX_SHADOWS ];\n\n\tuniform float shadowDarkness[ MAX_SHADOWS ];\n\tuniform float shadowBias[ MAX_SHADOWS ];\n\n\tvarying vec4 vShadowCoord[ MAX_SHADOWS ];\n\n\tfloat unpackDepth( const in vec4 rgba_depth ) {\n\n\t\tconst vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );\n\t\tfloat depth = dot( rgba_depth, bit_shift );\n\t\treturn depth;\n\n\t}\n\n#endif",K.ShaderChunk.skinning_pars_vertex="#ifdef USE_SKINNING\n\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\n\t#ifdef BONE_TEXTURE\n\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureWidth;\n\t\tuniform int boneTextureHeight;\n\n\t\tmat4 getBoneMatrix( const in float i ) {\n\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureWidth ) );\n\t\t\tfloat y = floor( j / float( boneTextureWidth ) );\n\n\t\t\tfloat dx = 1.0 / float( boneTextureWidth );\n\t\t\tfloat dy = 1.0 / float( boneTextureHeight );\n\n\t\t\ty = dy * ( y + 0.5 );\n\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\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\n\t\t\treturn bone;\n\n\t\t}\n\n\t#else\n\n\t\tuniform mat4 boneGlobalMatrices[ MAX_BONES ];\n\n\t\tmat4 getBoneMatrix( const in float i ) {\n\n\t\t\tmat4 bone = boneGlobalMatrices[ int(i) ];\n\t\t\treturn bone;\n\n\t\t}\n\n\t#endif\n\n#endif\n",K.ShaderChunk.logdepthbuf_pars_fragment="#ifdef USE_LOGDEPTHBUF\n\n\tuniform float logDepthBufFC;\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\t#extension GL_EXT_frag_depth : enable\n\t\tvarying float vFragDepth;\n\n\t#endif\n\n#endif",K.ShaderChunk.alphamap_fragment="#ifdef USE_ALPHAMAP\n\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n\n#endif\n",K.ShaderChunk.alphamap_pars_fragment="#ifdef USE_ALPHAMAP\n\n\tuniform sampler2D alphaMap;\n\n#endif\n",K.UniformsUtils={merge:function(e){for(var t={},i=0;i dashSize ) {","\t\tdiscard;","\t}","\tvec3 outgoingLight = vec3( 0.0 );","\tvec4 diffuseColor = vec4( diffuse, opacity );",K.ShaderChunk.logdepthbuf_fragment,K.ShaderChunk.color_fragment,"\toutgoingLight = diffuseColor.rgb;",K.ShaderChunk.fog_fragment,"\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );","}"].join("\n")},depth:{uniforms:{mNear:{type:"f",value:1},mFar:{type:"f",value:2e3},opacity:{type:"f",value:1}},vertexShader:[K.ShaderChunk.common,K.ShaderChunk.morphtarget_pars_vertex,K.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",K.ShaderChunk.morphtarget_vertex,K.ShaderChunk.default_vertex,K.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float mNear;","uniform float mFar;","uniform float opacity;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_fragment,"void main() {",K.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT","\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;","\t#else","\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;","\t#endif","\tfloat color = 1.0 - smoothstep( mNear, mFar, depth );","\tgl_FragColor = vec4( vec3( color ), opacity );","}"].join("\n")},normal:{uniforms:{opacity:{type:"f",value:1}},vertexShader:["varying vec3 vNormal;",K.ShaderChunk.common,K.ShaderChunk.morphtarget_pars_vertex,K.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvNormal = normalize( normalMatrix * normal );",K.ShaderChunk.morphtarget_vertex,K.ShaderChunk.default_vertex,K.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;","varying vec3 vNormal;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","\tgl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );",K.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},cube:{uniforms:{tCube:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvWorldPosition = transformDirection( position, modelMatrix );","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",K.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform samplerCube tCube;","uniform float tFlip;","varying vec3 vWorldPosition;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",K.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},equirect:{uniforms:{tEquirect:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvWorldPosition = transformDirection( position, modelMatrix );","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",K.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;","uniform float tFlip;","varying vec3 vWorldPosition;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","vec3 direction = normalize( vWorldPosition );","vec2 sampleUV;","sampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );","sampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;","gl_FragColor = texture2D( tEquirect, sampleUV );",K.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[K.ShaderChunk.common,K.ShaderChunk.morphtarget_pars_vertex,K.ShaderChunk.skinning_pars_vertex,K.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",K.ShaderChunk.skinbase_vertex,K.ShaderChunk.morphtarget_vertex,K.ShaderChunk.skinning_vertex,K.ShaderChunk.default_vertex,K.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {","\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );","\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );","\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );","\tres -= res.xxyz * bit_mask;","\treturn res;","}","void main() {",K.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT","\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );","\t#else","\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );","\t#endif","}"].join("\n")}},K.WebGLRenderer=function(e){console.log("THREE.WebGLRenderer",K.REVISION);var t=void 0!==(e=e||{}).canvas?e.canvas:document.createElement("canvas"),i=void 0!==e.context?e.context:null,n=1,r=void 0!==e.precision?e.precision:"highp",o=void 0!==e.alpha&&e.alpha,s=void 0===e.depth||e.depth,a=void 0===e.stencil||e.stencil,l=void 0!==e.antialias&&e.antialias,c=void 0===e.premultipliedAlpha||e.premultipliedAlpha,h=void 0!==e.preserveDrawingBuffer&&e.preserveDrawingBuffer,u=void 0!==e.logarithmicDepthBuffer&&e.logarithmicDepthBuffer,d=new K.Color(0),f=0,p=[],m={},g=[],v=[],y=[],b=[],x=[];this.domElement=t,this.context=null,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.gammaFactor=2,this.gammaInput=!1,this.gammaOutput=!1,this.shadowMapEnabled=!1,this.shadowMapType=K.PCFShadowMap,this.shadowMapCullFace=K.CullFaceFront,this.shadowMapDebug=!1,this.shadowMapCascade=!1,this.maxMorphTargets=8,this.maxMorphNormals=4,this.autoScaleCubemaps=!0,this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var _,E=this,S=[],A=null,w=null,T=-1,M="",C=null,P=0,D=0,L=0,I=t.width,R=t.height,O=0,N=0,F=new K.Frustum,U=new K.Matrix4,B=new K.Vector3,k=new K.Vector3,V=!0,G={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}};try{var z={alpha:o,depth:s,stencil:a,antialias:l,premultipliedAlpha:c,preserveDrawingBuffer:h};if(null===(_=i||t.getContext("webgl",z)||t.getContext("experimental-webgl",z)))throw null!==t.getContext("webgl")?"Error creating WebGL context with your selected attributes.":"Error creating WebGL context.";t.addEventListener("webglcontextlost",(function(e){e.preventDefault(),X(),q(),m={}}),!1)}catch(e){K.error("THREE.WebGLRenderer: "+e)}var H=new K.WebGLState(_,st);void 0===_.getShaderPrecisionFormat&&(_.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var W=new K.WebGLExtensions(_);W.get("OES_texture_float"),W.get("OES_texture_float_linear"),W.get("OES_texture_half_float"),W.get("OES_texture_half_float_linear"),W.get("OES_standard_derivatives"),u&&W.get("EXT_frag_depth");var j=function(e,t,i,n){!0===c&&(e*=n,t*=n,i*=n),_.clearColor(e,t,i,n)},q=function(){_.clearColor(0,0,0,1),_.clearDepth(1),_.clearStencil(0),_.enable(_.DEPTH_TEST),_.depthFunc(_.LEQUAL),_.frontFace(_.CCW),_.cullFace(_.BACK),_.enable(_.CULL_FACE),_.enable(_.BLEND),_.blendEquation(_.FUNC_ADD),_.blendFunc(_.SRC_ALPHA,_.ONE_MINUS_SRC_ALPHA),_.viewport(D,L,I,R),j(d.r,d.g,d.b,f)},X=function(){A=null,C=null,M="",T=-1,V=!0,H.reset()};q(),this.context=_,this.state=H;var Y,Q=_.getParameter(_.MAX_TEXTURE_IMAGE_UNITS),Z=_.getParameter(_.MAX_VERTEX_TEXTURE_IMAGE_UNITS),$=_.getParameter(_.MAX_TEXTURE_SIZE),J=_.getParameter(_.MAX_CUBE_MAP_TEXTURE_SIZE),ee=Z>0,te=ee&&W.get("OES_texture_float"),ie=_.getShaderPrecisionFormat(_.VERTEX_SHADER,_.HIGH_FLOAT),ne=_.getShaderPrecisionFormat(_.VERTEX_SHADER,_.MEDIUM_FLOAT),re=_.getShaderPrecisionFormat(_.FRAGMENT_SHADER,_.HIGH_FLOAT),oe=_.getShaderPrecisionFormat(_.FRAGMENT_SHADER,_.MEDIUM_FLOAT),se=function(){if(void 0!==Y)return Y;if(Y=[],W.get("WEBGL_compressed_texture_pvrtc")||W.get("WEBGL_compressed_texture_s3tc"))for(var e=_.getParameter(_.COMPRESSED_TEXTURE_FORMATS),t=0;t0&&re.precision>0,le=ne.precision>0&&oe.precision>0;"highp"!==r||ae||(le?(r="mediump",K.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(r="lowp",K.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp."))),"mediump"!==r||le||(r="lowp",K.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var ce,he=new K.ShadowMapPlugin(this,p,m,g),ue=new K.SpritePlugin(this,b),de=new K.LensFlarePlugin(this,x);function fe(e){e.__webglVertexBuffer=_.createBuffer(),e.__webglNormalBuffer=_.createBuffer(),e.__webglTangentBuffer=_.createBuffer(),e.__webglColorBuffer=_.createBuffer(),e.__webglUVBuffer=_.createBuffer(),e.__webglUV2Buffer=_.createBuffer(),e.__webglSkinIndicesBuffer=_.createBuffer(),e.__webglSkinWeightsBuffer=_.createBuffer(),e.__webglFaceBuffer=_.createBuffer(),e.__webglLineBuffer=_.createBuffer();var t=e.numMorphTargets;if(t){e.__webglMorphTargetsBuffers=[];for(var i=0,n=t;i=0;i--)e[i].object===t&&e.splice(i,1)}(g,e);delete e.__webglInit,delete e._modelViewMatrix,delete e._normalMatrix,delete e.__webglActive}(e)}))},me=function(e){var t=e.target;t.removeEventListener("dispose",me),xe(t)},ge=function(e){var t=e.target;t.removeEventListener("dispose",ge),_e(t),E.info.memory.textures--},ve=function(e){var t=e.target;t.removeEventListener("dispose",ve),Ee(t),E.info.memory.textures--},ye=function(e){var t=e.target;t.removeEventListener("dispose",ye),Se(t)},be=function(e){for(var t=["__webglVertexBuffer","__webglNormalBuffer","__webglTangentBuffer","__webglColorBuffer","__webglUVBuffer","__webglUV2Buffer","__webglSkinIndicesBuffer","__webglSkinWeightsBuffer","__webglFaceBuffer","__webglLineBuffer","__webglLineDistanceBuffer"],i=0,n=t.length;i1&&(e.__uv2Array=new Float32Array(2*r)),i.hasTangents&&(e.__tangentArray=new Float32Array(4*r)),t.geometry.skinWeights.length&&t.geometry.skinIndices.length&&(e.__skinIndexArray=new Float32Array(4*r),e.__skinWeightArray=new Float32Array(4*r));var l=null!==W.get("OES_element_index_uint")&&o>21845?Uint32Array:Uint16Array;e.__typeArray=l,e.__faceArray=new l(3*o),e.__lineArray=new l(2*s);var c=e.numMorphTargets;if(c){e.__morphTargetsArrays=[];for(var h=0,u=c;h0&&(_.bindBuffer(_.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),_.bufferData(_.ARRAY_BUFFER,fe,i),_.bindBuffer(_.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),_.bufferData(_.ARRAY_BUFFER,pe,i))}if(Te){for(o=0,s=Pe.length;o0&&(_.bindBuffer(_.ARRAY_BUFFER,e.__webglColorBuffer),_.bufferData(_.ARRAY_BUFFER,de,i))}if(we&&xe.hasTangents){for(o=0,s=Pe.length;o0&&(_.bindBuffer(_.ARRAY_BUFFER,e.__webglUVBuffer),_.bufferData(_.ARRAY_BUFFER,le,i))}if(Se&&Ie){for(o=0,s=Pe.length;o0&&(_.bindBuffer(_.ARRAY_BUFFER,e.__webglUV2Buffer),_.bufferData(_.ARRAY_BUFFER,ce,i))}if(Ee){for(o=0,s=Pe.length;o=0){var u=r[c];if(void 0!==u){var d=u.itemSize;_.bindBuffer(_.ARRAY_BUFFER,u.buffer),H.enableAttribute(h),_.vertexAttribPointer(h,d,_.FLOAT,!1,0,n*d*4)}else void 0!==e.defaultAttributeValues&&(2===e.defaultAttributeValues[c].length?_.vertexAttrib2fv(h,e.defaultAttributeValues[c]):3===e.defaultAttributeValues[c].length&&_.vertexAttrib3fv(h,e.defaultAttributeValues[c]))}}H.disableUnusedAttributes()}function Pe(e,t){return e.object.renderOrder!==t.object.renderOrder?e.object.renderOrder-t.object.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?e.z-t.z:e.id-t.id}function De(e,t){return e.object.renderOrder!==t.object.renderOrder?e.object.renderOrder-t.object.renderOrder:e.z!==t.z?t.z-e.z:e.id-t.id}function Le(e,t){return t[0]-e[0]}function Ie(e){if(!1!==e.visible){if(e instanceof K.Scene||e instanceof K.Group);else if(function(e){void 0===e.__webglInit&&(e.__webglInit=!0,e._modelViewMatrix=new K.Matrix4,e._normalMatrix=new K.Matrix3,e.addEventListener("removed",pe));var t=e.geometry;void 0===t||void 0===t.__webglInit&&(t.__webglInit=!0,t.addEventListener("dispose",me),t instanceof K.BufferGeometry?E.info.memory.geometries++:e instanceof K.Mesh?ke(e,t):e instanceof K.Line?void 0===t.__webglVertexBuffer&&(!function(e){e.__webglVertexBuffer=_.createBuffer(),e.__webglColorBuffer=_.createBuffer(),e.__webglLineDistanceBuffer=_.createBuffer(),E.info.memory.geometries++}(t),function(e,t){var i=e.vertices.length;e.__vertexArray=new Float32Array(3*i),e.__colorArray=new Float32Array(3*i),e.__lineDistanceArray=new Float32Array(1*i),e.__webglLineCount=i,Ae(t)}(t,e),t.verticesNeedUpdate=!0,t.colorsNeedUpdate=!0,t.lineDistancesNeedUpdate=!0):e instanceof K.PointCloud&&void 0===t.__webglVertexBuffer&&(!function(e){e.__webglVertexBuffer=_.createBuffer(),e.__webglColorBuffer=_.createBuffer(),E.info.memory.geometries++}(t),function(e,t){var i=e.vertices.length;e.__vertexArray=new Float32Array(3*i),e.__colorArray=new Float32Array(3*i),e.__webglParticleCount=i,Ae(t)}(t,e),t.verticesNeedUpdate=!0,t.colorsNeedUpdate=!0));if(void 0===e.__webglActive)if(e.__webglActive=!0,e instanceof K.Mesh){if(t instanceof K.BufferGeometry)Ve(m,t,e);else if(t instanceof K.Geometry)for(var i=Ue[t.id],n=0,r=i.length;n1&&(l=!0);for(d=0,f=b.length;d1&&(l=!0);for(d=0,f=b.length;d=0?c&&(_.bindBuffer(_.ARRAY_BUFFER,o.__webglVertexBuffer),H.enableAttribute(l.position),_.vertexAttribPointer(l.position,3,_.FLOAT,!1,0,0)):s.morphTargetBase&&function(e,t,i){var n=e.program.attributes;-1!==i.morphTargetBase&&n.position>=0?(_.bindBuffer(_.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[i.morphTargetBase]),H.enableAttribute(n.position),_.vertexAttribPointer(n.position,3,_.FLOAT,!1,0,0)):n.position>=0&&(_.bindBuffer(_.ARRAY_BUFFER,t.__webglVertexBuffer),H.enableAttribute(n.position),_.vertexAttribPointer(n.position,3,_.FLOAT,!1,0,0));if(i.morphTargetForcedOrder.length)for(var r=0,o=i.morphTargetForcedOrder,s=i.morphTargetInfluences;r=0&&(_.bindBuffer(_.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[o[r]]),H.enableAttribute(a),_.vertexAttribPointer(a,3,_.FLOAT,!1,0,0)),(a=n["morphNormal"+r])>=0&&e.morphNormals&&(_.bindBuffer(_.ARRAY_BUFFER,t.__webglMorphNormalsBuffers[o[r]]),H.enableAttribute(a),_.vertexAttribPointer(a,3,_.FLOAT,!1,0,0)),i.__webglMorphTargetInfluences[r]=s[o[r]],r++;else{var a,l=[],c=(s=i.morphTargetInfluences,i.geometry.morphTargets);s.length>c.length&&(console.warn("THREE.WebGLRenderer: Influences array is bigger than morphTargets array."),s.length=c.length);for(var h=0,u=s.length;he.numSupportedMorphTargets?(l.sort(Le),l.length=e.numSupportedMorphTargets):l.length>e.numSupportedMorphNormals?l.sort(Le):0===l.length&&l.push([0,0]);r=0;for(var f=e.numSupportedMorphTargets;r=0&&(_.bindBuffer(_.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[p]),H.enableAttribute(a),_.vertexAttribPointer(a,3,_.FLOAT,!1,0,0)),(a=n["morphNormal"+r])>=0&&e.morphNormals&&(_.bindBuffer(_.ARRAY_BUFFER,t.__webglMorphNormalsBuffers[p]),H.enableAttribute(a),_.vertexAttribPointer(a,3,_.FLOAT,!1,0,0)),i.__webglMorphTargetInfluences[r]=s[p]}else i.__webglMorphTargetInfluences[r]=0}null!==e.program.uniforms.morphTargetInfluences&&_.uniform1fv(e.program.uniforms.morphTargetInfluences,i.__webglMorphTargetInfluences)}(r,o,s),c){if(o.__webglCustomAttributesList)for(var d=0,f=o.__webglCustomAttributesList.length;d=0&&(_.bindBuffer(_.ARRAY_BUFFER,p.buffer),H.enableAttribute(l[p.buffer.belongsToAttribute]),_.vertexAttribPointer(l[p.buffer.belongsToAttribute],p.size,_.FLOAT,!1,0,0))}l.color>=0&&(s.geometry.colors.length>0||s.geometry.faces.length>0?(_.bindBuffer(_.ARRAY_BUFFER,o.__webglColorBuffer),H.enableAttribute(l.color),_.vertexAttribPointer(l.color,3,_.FLOAT,!1,0,0)):void 0!==r.defaultAttributeValues&&_.vertexAttrib3fv(l.color,r.defaultAttributeValues.color)),l.normal>=0&&(_.bindBuffer(_.ARRAY_BUFFER,o.__webglNormalBuffer),H.enableAttribute(l.normal),_.vertexAttribPointer(l.normal,3,_.FLOAT,!1,0,0)),l.tangent>=0&&(_.bindBuffer(_.ARRAY_BUFFER,o.__webglTangentBuffer),H.enableAttribute(l.tangent),_.vertexAttribPointer(l.tangent,4,_.FLOAT,!1,0,0)),l.uv>=0&&(s.geometry.faceVertexUvs[0]?(_.bindBuffer(_.ARRAY_BUFFER,o.__webglUVBuffer),H.enableAttribute(l.uv),_.vertexAttribPointer(l.uv,2,_.FLOAT,!1,0,0)):void 0!==r.defaultAttributeValues&&_.vertexAttrib2fv(l.uv,r.defaultAttributeValues.uv)),l.uv2>=0&&(s.geometry.faceVertexUvs[1]?(_.bindBuffer(_.ARRAY_BUFFER,o.__webglUV2Buffer),H.enableAttribute(l.uv2),_.vertexAttribPointer(l.uv2,2,_.FLOAT,!1,0,0)):void 0!==r.defaultAttributeValues&&_.vertexAttrib2fv(l.uv2,r.defaultAttributeValues.uv2)),r.skinning&&l.skinIndex>=0&&l.skinWeight>=0&&(_.bindBuffer(_.ARRAY_BUFFER,o.__webglSkinIndicesBuffer),H.enableAttribute(l.skinIndex),_.vertexAttribPointer(l.skinIndex,4,_.FLOAT,!1,0,0),_.bindBuffer(_.ARRAY_BUFFER,o.__webglSkinWeightsBuffer),H.enableAttribute(l.skinWeight),_.vertexAttribPointer(l.skinWeight,4,_.FLOAT,!1,0,0)),l.lineDistance>=0&&(_.bindBuffer(_.ARRAY_BUFFER,o.__webglLineDistanceBuffer),H.enableAttribute(l.lineDistance),_.vertexAttribPointer(l.lineDistance,1,_.FLOAT,!1,0,0))}if(H.disableUnusedAttributes(),s instanceof K.Mesh){var m=o.__typeArray===Uint32Array?_.UNSIGNED_INT:_.UNSIGNED_SHORT;r.wireframe?(H.setLineWidth(r.wireframeLinewidth*n),c&&_.bindBuffer(_.ELEMENT_ARRAY_BUFFER,o.__webglLineBuffer),_.drawElements(_.LINES,o.__webglLineCount,m,0)):(c&&_.bindBuffer(_.ELEMENT_ARRAY_BUFFER,o.__webglFaceBuffer),_.drawElements(_.TRIANGLES,o.__webglFaceCount,m,0)),E.info.render.calls++,E.info.render.vertices+=o.__webglFaceCount,E.info.render.faces+=o.__webglFaceCount/3}else if(s instanceof K.Line){var g=s.mode===K.LineStrip?_.LINE_STRIP:_.LINES;H.setLineWidth(r.linewidth*n),_.drawArrays(g,0,o.__webglLineCount),E.info.render.calls++}else s instanceof K.PointCloud&&(_.drawArrays(_.POINTS,0,o.__webglParticleCount),E.info.render.calls++,E.info.render.points+=o.__webglParticleCount)}},this.render=function(e,t,i,n){if(t instanceof K.Camera!=!1){var r=e.fog;M="",T=-1,C=null,V=!0,!0===e.autoUpdate&&e.updateMatrixWorld(),void 0===t.parent&&t.updateMatrixWorld(),e.traverse((function(e){e instanceof K.SkinnedMesh&&e.skeleton.update()})),t.matrixWorldInverse.getInverse(t.matrixWorld),U.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),F.setFromMatrix(U),p.length=0,v.length=0,y.length=0,b.length=0,x.length=0,Ie(e),!0===E.sortObjects&&(v.sort(Pe),y.sort(De)),he.render(e,t),E.info.render.calls=0,E.info.render.vertices=0,E.info.render.faces=0,E.info.render.points=0,this.setRenderTarget(i),(this.autoClear||n)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);for(var o=0,s=g.length;or&&(o[f].counter+=1,(i=o[f].hash+"_"+o[f].counter)in l||(n={id:Be++,faces3:[],materialIndex:f,vertices:0,numMorphTargets:s,numMorphNormals:a},l[i]=n,c.push(n))),l[i].faces3.push(h),l[i].vertices+=3}return c}(t,i instanceof K.MeshFaceMaterial),t.groupsNeedUpdate=!1);for(var r=Ue[t.id],o=0,s=r.length;o0,shadowMapType:E.shadowMapType,shadowMapDebug:E.shadowMapDebug,shadowMapCascade:E.shadowMapCascade,alphaTest:e.alphaTest,metal:e.metal,wrapAround:e.wrapAround,doubleSided:e.side===K.DoubleSide,flipSided:e.side===K.BackSide},d=[];if(o?d.push(o):(d.push(e.fragmentShader),d.push(e.vertexShader)),void 0!==e.defines)for(var f in e.defines)d.push(f),d.push(e.defines[f]);for(var f in h)d.push(f),d.push(h[f]);for(var p,m=d.join(),g=0,v=S.length;g=0&&e.numSupportedMorphTargets++}if(e.morphNormals){e.numSupportedMorphNormals=0;x="morphNormal";for(A=0;A=0&&e.numSupportedMorphNormals++}for(var w in e.uniformsList=[],e.__webglShader.uniforms){var T=e.program.uniforms[w];T&&e.uniformsList.push([e.__webglShader.uniforms[w],T])}}function qe(e){!0===e.transparent?H.setBlending(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha):H.setBlending(K.NoBlending),H.setDepthTest(e.depthTest),H.setDepthWrite(e.depthWrite),H.setColorWrite(e.colorWrite),H.setPolygonOffset(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits)}function Xe(e,i,n,r,o){P=0,r.needsUpdate&&(r.program&&Se(r),je(r,i,n,o),r.needsUpdate=!1),r.morphTargets&&(o.__webglMorphTargetInfluences||(o.__webglMorphTargetInfluences=new Float32Array(E.maxMorphTargets)));var s=!1,a=!1,l=!1,c=r.program,h=c.uniforms,d=r.__webglShader.uniforms;if(c.id!==A&&(_.useProgram(c.program),A=c.id,s=!0,a=!0,l=!0),r.id!==T&&(-1===T&&(l=!0),T=r.id,a=!0),(s||e!==C)&&(_.uniformMatrix4fv(h.projectionMatrix,!1,e.projectionMatrix.elements),u&&_.uniform1f(h.logDepthBufFC,2/(Math.log(e.far+1)/Math.LN2)),e!==C&&(C=e),(r instanceof K.ShaderMaterial||r instanceof K.MeshPhongMaterial||r.envMap)&&null!==h.cameraPosition&&(B.setFromMatrixPosition(e.matrixWorld),_.uniform3f(h.cameraPosition,B.x,B.y,B.z)),(r instanceof K.MeshPhongMaterial||r instanceof K.MeshLambertMaterial||r instanceof K.MeshBasicMaterial||r instanceof K.ShaderMaterial||r.skinning)&&null!==h.viewMatrix&&_.uniformMatrix4fv(h.viewMatrix,!1,e.matrixWorldInverse.elements)),r.skinning)if(o.bindMatrix&&null!==h.bindMatrix&&_.uniformMatrix4fv(h.bindMatrix,!1,o.bindMatrix.elements),o.bindMatrixInverse&&null!==h.bindMatrixInverse&&_.uniformMatrix4fv(h.bindMatrixInverse,!1,o.bindMatrixInverse.elements),te&&o.skeleton&&o.skeleton.useVertexTexture){if(null!==h.boneTexture){var f=Qe();_.uniform1i(h.boneTexture,f),E.setTexture(o.skeleton.boneTexture,f)}null!==h.boneTextureWidth&&_.uniform1i(h.boneTextureWidth,o.skeleton.boneTextureWidth),null!==h.boneTextureHeight&&_.uniform1i(h.boneTextureHeight,o.skeleton.boneTextureHeight)}else o.skeleton&&o.skeleton.boneMatrices&&null!==h.boneGlobalMatrices&&_.uniformMatrix4fv(h.boneGlobalMatrices,!1,o.skeleton.boneMatrices);return a&&(n&&r.fog&&function(e,t){e.fogColor.value=t.color,t instanceof K.Fog?(e.fogNear.value=t.near,e.fogFar.value=t.far):t instanceof K.FogExp2&&(e.fogDensity.value=t.density)}(d,n),(r instanceof K.MeshPhongMaterial||r instanceof K.MeshLambertMaterial||r.lights)&&(V&&(l=!0,function(e){var t,i,n,r,o,s,a,l,c=0,h=0,u=0,d=G,f=d.directional.colors,p=d.directional.positions,m=d.point.colors,g=d.point.positions,v=d.point.distances,y=d.point.decays,b=d.spot.colors,x=d.spot.positions,_=d.spot.distances,E=d.spot.directions,S=d.spot.anglesCos,A=d.spot.exponents,w=d.spot.decays,T=d.hemi.skyColors,M=d.hemi.groundColors,C=d.hemi.positions,P=0,D=0,L=0,I=0,R=0,O=0,N=0,F=0,U=0,V=0,z=0,H=0;for(t=0,i=e.length;t=Q&&K.warn("WebGLRenderer: trying to use "+e+" texture units while this GPU supports only "+Q),P+=1,e}function Ze(e,t){e._modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld),e._normalMatrix.getNormalMatrix(e._modelViewMatrix)}function $e(e,t,i,n){e[t]=i.r*n,e[t+1]=i.g*n,e[t+2]=i.b*n}function Je(e,t,i){var n;i?(_.texParameteri(e,_.TEXTURE_WRAP_S,st(t.wrapS)),_.texParameteri(e,_.TEXTURE_WRAP_T,st(t.wrapT)),_.texParameteri(e,_.TEXTURE_MAG_FILTER,st(t.magFilter)),_.texParameteri(e,_.TEXTURE_MIN_FILTER,st(t.minFilter))):(_.texParameteri(e,_.TEXTURE_WRAP_S,_.CLAMP_TO_EDGE),_.texParameteri(e,_.TEXTURE_WRAP_T,_.CLAMP_TO_EDGE),t.wrapS===K.ClampToEdgeWrapping&&t.wrapT===K.ClampToEdgeWrapping||K.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+t.sourceFile+" )"),_.texParameteri(e,_.TEXTURE_MAG_FILTER,ot(t.magFilter)),_.texParameteri(e,_.TEXTURE_MIN_FILTER,ot(t.minFilter)),t.minFilter!==K.NearestFilter&&t.minFilter!==K.LinearFilter&&K.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+t.sourceFile+" )")),(n=W.get("EXT_texture_filter_anisotropic"))&&t.type!==K.FloatType&&t.type!==K.HalfFloatType&&(t.anisotropy>1||t.__currentAnisotropy)&&(_.texParameterf(e,n.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(t.anisotropy,E.getMaxAnisotropy())),t.__currentAnisotropy=t.anisotropy)}function et(e,t){if(e.width>t||e.height>t){var i=t/Math.max(e.width,e.height),n=document.createElement("canvas");return n.width=Math.floor(e.width*i),n.height=Math.floor(e.height*i),n.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,n.width,n.height),K.warn("THREE.WebGLRenderer: image is too big ("+e.width+"x"+e.height+"). Resized to "+n.width+"x"+n.height,e),n}return e}function tt(e,t){if(6===e.image.length)if(e.needsUpdate){e.image.__webglTextureCube||(e.addEventListener("dispose",ge),e.image.__webglTextureCube=_.createTexture(),E.info.memory.textures++),_.activeTexture(_.TEXTURE0+t),_.bindTexture(_.TEXTURE_CUBE_MAP,e.image.__webglTextureCube),_.pixelStorei(_.UNPACK_FLIP_Y_WEBGL,e.flipY);for(var i=e instanceof K.CompressedTexture,n=e.image[0]instanceof K.DataTexture,r=[],o=0;o<6;o++)!E.autoScaleCubemaps||i||n?r[o]=n?e.image[o].image:e.image[o]:r[o]=et(e.image[o],J);var s=r[0],a=K.Math.isPowerOfTwo(s.width)&&K.Math.isPowerOfTwo(s.height),l=st(e.format),c=st(e.type);Je(_.TEXTURE_CUBE_MAP,e,a);for(o=0;o<6;o++)if(i)for(var h,u=r[o].mipmaps,d=0,f=u.length;d-1?_.compressedTexImage2D(_.TEXTURE_CUBE_MAP_POSITIVE_X+o,d,l,h.width,h.height,0,h.data):K.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):_.texImage2D(_.TEXTURE_CUBE_MAP_POSITIVE_X+o,d,l,h.width,h.height,0,l,c,h.data);else n?_.texImage2D(_.TEXTURE_CUBE_MAP_POSITIVE_X+o,0,l,r[o].width,r[o].height,0,l,c,r[o].data):_.texImage2D(_.TEXTURE_CUBE_MAP_POSITIVE_X+o,0,l,l,c,r[o]);e.generateMipmaps&&a&&_.generateMipmap(_.TEXTURE_CUBE_MAP),e.needsUpdate=!1,e.onUpdate&&e.onUpdate()}else _.activeTexture(_.TEXTURE0+t),_.bindTexture(_.TEXTURE_CUBE_MAP,e.image.__webglTextureCube)}function it(e,t){_.activeTexture(_.TEXTURE0+t),_.bindTexture(_.TEXTURE_CUBE_MAP,e.__webglTexture)}function nt(e,t,i){_.bindFramebuffer(_.FRAMEBUFFER,e),_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,i,t.__webglTexture,0)}function rt(e,t){_.bindRenderbuffer(_.RENDERBUFFER,e),t.depthBuffer&&!t.stencilBuffer?(_.renderbufferStorage(_.RENDERBUFFER,_.DEPTH_COMPONENT16,t.width,t.height),_.framebufferRenderbuffer(_.FRAMEBUFFER,_.DEPTH_ATTACHMENT,_.RENDERBUFFER,e)):t.depthBuffer&&t.stencilBuffer?(_.renderbufferStorage(_.RENDERBUFFER,_.DEPTH_STENCIL,t.width,t.height),_.framebufferRenderbuffer(_.FRAMEBUFFER,_.DEPTH_STENCIL_ATTACHMENT,_.RENDERBUFFER,e)):_.renderbufferStorage(_.RENDERBUFFER,_.RGBA4,t.width,t.height)}function ot(e){return e===K.NearestFilter||e===K.NearestMipMapNearestFilter||e===K.NearestMipMapLinearFilter?_.NEAREST:_.LINEAR}function st(e){var t;if(e===K.RepeatWrapping)return _.REPEAT;if(e===K.ClampToEdgeWrapping)return _.CLAMP_TO_EDGE;if(e===K.MirroredRepeatWrapping)return _.MIRRORED_REPEAT;if(e===K.NearestFilter)return _.NEAREST;if(e===K.NearestMipMapNearestFilter)return _.NEAREST_MIPMAP_NEAREST;if(e===K.NearestMipMapLinearFilter)return _.NEAREST_MIPMAP_LINEAR;if(e===K.LinearFilter)return _.LINEAR;if(e===K.LinearMipMapNearestFilter)return _.LINEAR_MIPMAP_NEAREST;if(e===K.LinearMipMapLinearFilter)return _.LINEAR_MIPMAP_LINEAR;if(e===K.UnsignedByteType)return _.UNSIGNED_BYTE;if(e===K.UnsignedShort4444Type)return _.UNSIGNED_SHORT_4_4_4_4;if(e===K.UnsignedShort5551Type)return _.UNSIGNED_SHORT_5_5_5_1;if(e===K.UnsignedShort565Type)return _.UNSIGNED_SHORT_5_6_5;if(e===K.ByteType)return _.BYTE;if(e===K.ShortType)return _.SHORT;if(e===K.UnsignedShortType)return _.UNSIGNED_SHORT;if(e===K.IntType)return _.INT;if(e===K.UnsignedIntType)return _.UNSIGNED_INT;if(e===K.FloatType)return _.FLOAT;if(null!==(t=W.get("OES_texture_half_float"))&&e===K.HalfFloatType)return t.HALF_FLOAT_OES;if(e===K.AlphaFormat)return _.ALPHA;if(e===K.RGBFormat)return _.RGB;if(e===K.RGBAFormat)return _.RGBA;if(e===K.LuminanceFormat)return _.LUMINANCE;if(e===K.LuminanceAlphaFormat)return _.LUMINANCE_ALPHA;if(e===K.AddEquation)return _.FUNC_ADD;if(e===K.SubtractEquation)return _.FUNC_SUBTRACT;if(e===K.ReverseSubtractEquation)return _.FUNC_REVERSE_SUBTRACT;if(e===K.ZeroFactor)return _.ZERO;if(e===K.OneFactor)return _.ONE;if(e===K.SrcColorFactor)return _.SRC_COLOR;if(e===K.OneMinusSrcColorFactor)return _.ONE_MINUS_SRC_COLOR;if(e===K.SrcAlphaFactor)return _.SRC_ALPHA;if(e===K.OneMinusSrcAlphaFactor)return _.ONE_MINUS_SRC_ALPHA;if(e===K.DstAlphaFactor)return _.DST_ALPHA;if(e===K.OneMinusDstAlphaFactor)return _.ONE_MINUS_DST_ALPHA;if(e===K.DstColorFactor)return _.DST_COLOR;if(e===K.OneMinusDstColorFactor)return _.ONE_MINUS_DST_COLOR;if(e===K.SrcAlphaSaturateFactor)return _.SRC_ALPHA_SATURATE;if(null!==(t=W.get("WEBGL_compressed_texture_s3tc"))){if(e===K.RGB_S3TC_DXT1_Format)return t.COMPRESSED_RGB_S3TC_DXT1_EXT;if(e===K.RGBA_S3TC_DXT1_Format)return t.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(e===K.RGBA_S3TC_DXT3_Format)return t.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(e===K.RGBA_S3TC_DXT5_Format)return t.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(null!==(t=W.get("WEBGL_compressed_texture_pvrtc"))){if(e===K.RGB_PVRTC_4BPPV1_Format)return t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(e===K.RGB_PVRTC_2BPPV1_Format)return t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(e===K.RGBA_PVRTC_4BPPV1_Format)return t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(e===K.RGBA_PVRTC_2BPPV1_Format)return t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(null!==(t=W.get("EXT_blend_minmax"))){if(e===K.MinEquation)return t.MIN_EXT;if(e===K.MaxEquation)return t.MAX_EXT}return 0}this.setFaceCulling=function(e,t){e===K.CullFaceNone?_.disable(_.CULL_FACE):(t===K.FrontFaceDirectionCW?_.frontFace(_.CW):_.frontFace(_.CCW),e===K.CullFaceBack?_.cullFace(_.BACK):e===K.CullFaceFront?_.cullFace(_.FRONT):_.cullFace(_.FRONT_AND_BACK),_.enable(_.CULL_FACE))},this.setMaterialFaces=function(e){H.setDoubleSided(e.side===K.DoubleSide),H.setFlipSided(e.side===K.BackSide)},this.uploadTexture=function(e){void 0===e.__webglInit&&(e.__webglInit=!0,e.addEventListener("dispose",ge),e.__webglTexture=_.createTexture(),E.info.memory.textures++),_.bindTexture(_.TEXTURE_2D,e.__webglTexture),_.pixelStorei(_.UNPACK_FLIP_Y_WEBGL,e.flipY),_.pixelStorei(_.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.premultiplyAlpha),_.pixelStorei(_.UNPACK_ALIGNMENT,e.unpackAlignment),e.image=et(e.image,$);var t=e.image,i=K.Math.isPowerOfTwo(t.width)&&K.Math.isPowerOfTwo(t.height),n=st(e.format),r=st(e.type);Je(_.TEXTURE_2D,e,i);var o,s=e.mipmaps;if(e instanceof K.DataTexture)if(s.length>0&&i){for(var a=0,l=s.length;a-1?_.compressedTexImage2D(_.TEXTURE_2D,a,n,o.width,o.height,0,o.data):K.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):_.texImage2D(_.TEXTURE_2D,a,n,o.width,o.height,0,n,r,o.data);else if(s.length>0&&i){for(a=0,l=s.length;a0?e.gammaFactor:1,b=function(e){var t,i,n=[];for(var r in e)!1!==(t=e[r])&&(i="#define "+r+" "+t,n.push(i));return n.join("\n")}(s),x=o.createProgram();i instanceof K.RawShaderMaterial?(g="",v=""):(g=["precision "+n.precision+" float;","precision "+n.precision+" int;",b,n.supportsVertexTextures?"#define VERTEX_TEXTURES":"",r.gammaInput?"#define GAMMA_INPUT":"",r.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+y,"#define MAX_DIR_LIGHTS "+n.maxDirLights,"#define MAX_POINT_LIGHTS "+n.maxPointLights,"#define MAX_SPOT_LIGHTS "+n.maxSpotLights,"#define MAX_HEMI_LIGHTS "+n.maxHemiLights,"#define MAX_SHADOWS "+n.maxShadows,"#define MAX_BONES "+n.maxBones,n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+p:"",n.lightMap?"#define USE_LIGHTMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.vertexColors?"#define USE_COLOR":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.useVertexTexture?"#define BONE_TEXTURE":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals?"#define USE_MORPHNORMALS":"",n.wrapAround?"#define WRAP_AROUND":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+d:"",n.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",n.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","attribute vec2 uv2;","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif",""].join("\n"),v=["precision "+n.precision+" float;","precision "+n.precision+" int;",n.bumpMap||n.normalMap||n.flatShading?"#extension GL_OES_standard_derivatives : enable":"",b,"#define MAX_DIR_LIGHTS "+n.maxDirLights,"#define MAX_POINT_LIGHTS "+n.maxPointLights,"#define MAX_SPOT_LIGHTS "+n.maxSpotLights,"#define MAX_HEMI_LIGHTS "+n.maxHemiLights,"#define MAX_SHADOWS "+n.maxShadows,n.alphaTest?"#define ALPHATEST "+n.alphaTest:"",r.gammaInput?"#define GAMMA_INPUT":"",r.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+y,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+f:"",n.envMap?"#define "+p:"",n.envMap?"#define "+m:"",n.lightMap?"#define USE_LIGHTMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.vertexColors?"#define USE_COLOR":"",n.flatShading?"#define FLAT_SHADED":"",n.metal?"#define METAL":"",n.wrapAround?"#define WRAP_AROUND":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+d:"",n.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",n.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",""].join("\n"));var _=new K.WebGLShader(o,o.VERTEX_SHADER,g+c),E=new K.WebGLShader(o,o.FRAGMENT_SHADER,v+h);o.attachShader(x,_),o.attachShader(x,E),void 0!==u&&o.bindAttribLocation(x,0,u),o.linkProgram(x);var S=o.getProgramInfoLog(x);!1===o.getProgramParameter(x,o.LINK_STATUS)&&K.error("THREE.WebGLProgram: shader error: "+o.getError(),"gl.VALIDATE_STATUS",o.getProgramParameter(x,o.VALIDATE_STATUS),"gl.getPRogramInfoLog",S),""!==S&&K.warn("THREE.WebGLProgram: gl.getProgramInfoLog()"+S),o.deleteShader(_),o.deleteShader(E);var A=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","modelMatrix","cameraPosition","morphTargetInfluences","bindMatrix","bindMatrixInverse"];for(var w in n.useVertexTexture?(A.push("boneTexture"),A.push("boneTextureWidth"),A.push("boneTextureHeight")):A.push("boneGlobalMatrices"),n.logarithmicDepthBuffer&&A.push("logDepthBufFC"),a)A.push(w);this.uniforms=function(e,t,i){for(var n={},r=0,o=i.length;r0)?{vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","uniform sampler2D occlusionMap;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","varying float vVisibility;","void main() {","vUV = uv;","vec2 pos = position;","if( renderType == 2 ) {","vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );","vVisibility = visibility.r / 9.0;","vVisibility *= 1.0 - visibility.g / 9.0;","vVisibility *= visibility.b / 9.0;","vVisibility *= 1.0 - visibility.a / 9.0;","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["uniform lowp int renderType;","uniform sampler2D map;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","varying float vVisibility;","void main() {","if( renderType == 0 ) {","gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );","} else if( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * vVisibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")}:{vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","void main() {","vUV = uv;","vec2 pos = position;","if( renderType == 2 ) {","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["precision mediump float;","uniform lowp int renderType;","uniform sampler2D map;","uniform sampler2D occlusionMap;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","void main() {","if( renderType == 0 ) {","gl_FragColor = vec4( texture2D( map, vUV ).rgb, 0.0 );","} else if( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","float visibility = texture2D( occlusionMap, vec2( 0.5, 0.1 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) ).a;","visibility = ( 1.0 - visibility / 4.0 );","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * visibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")},r=function(t){var i=h.createProgram(),n=h.createShader(h.FRAGMENT_SHADER),r=h.createShader(h.VERTEX_SHADER),o="precision "+e.getPrecision()+" float;\n";return h.shaderSource(n,o+t.fragmentShader),h.shaderSource(r,o+t.vertexShader),h.compileShader(n),h.compileShader(r),h.attachShader(i,n),h.attachShader(i,r),h.linkProgram(i),i}(t),o={vertex:h.getAttribLocation(r,"position"),uv:h.getAttribLocation(r,"uv")},s={renderType:h.getUniformLocation(r,"renderType"),map:h.getUniformLocation(r,"map"),occlusionMap:h.getUniformLocation(r,"occlusionMap"),opacity:h.getUniformLocation(r,"opacity"),color:h.getUniformLocation(r,"color"),scale:h.getUniformLocation(r,"scale"),rotation:h.getUniformLocation(r,"rotation"),screenPosition:h.getUniformLocation(r,"screenPosition")}};this.render=function(d,f,p,m){if(0!==t.length){var g=new K.Vector3,v=m/p,y=.5*p,b=.5*m,x=16/m,_=new K.Vector2(x*v,x),E=new K.Vector3(1,1,0),S=new K.Vector2(1,1);void 0===r&&u(),h.useProgram(r),h.enableVertexAttribArray(o.vertex),h.enableVertexAttribArray(o.uv),h.uniform1i(s.occlusionMap,0),h.uniform1i(s.map,1),h.bindBuffer(h.ARRAY_BUFFER,i),h.vertexAttribPointer(o.vertex,2,h.FLOAT,!1,16,0),h.vertexAttribPointer(o.uv,2,h.FLOAT,!1,16,8),h.bindBuffer(h.ELEMENT_ARRAY_BUFFER,n),h.disable(h.CULL_FACE),h.depthMask(!1);for(var A=0,w=t.length;A0&&S.x0&&S.y.001&&P.scale>.001&&(E.x=P.x,E.y=P.y,E.z=P.z,x=P.size*P.scale/m,_.x=x*v,_.y=x,h.uniform3f(s.screenPosition,E.x,E.y,E.z),h.uniform2f(s.scale,_.x,_.y),h.uniform1f(s.rotation,P.rotation),h.uniform1f(s.opacity,P.opacity),h.uniform3f(s.color,P.color.r,P.color.g,P.color.b),e.state.setBlending(P.blending,P.blendEquation,P.blendSrc,P.blendDst),e.setTexture(P.texture,1),h.drawElements(h.TRIANGLES,6,h.UNSIGNED_SHORT,0))}}}h.enable(h.CULL_FACE),h.enable(h.DEPTH_TEST),h.depthMask(!0),e.resetGLState()}}},K.ShadowMapPlugin=function(e,t,i,n){var r,o,s,a,l=e.context,c=new K.Frustum,h=new K.Matrix4,u=new K.Vector3,d=new K.Vector3,f=new K.Vector3,p=[],m=K.ShaderLib.depthRGBA,g=K.UniformsUtils.clone(m.uniforms);function v(e,t,n){if(t.visible){var r=i[t.id];if(r&&t.castShadow&&(!1===t.frustumCulled||!0===c.intersectsObject(t)))for(var o=0,s=r.length;od.x&&(d.x=s.x),s.yd.y&&(d.y=s.y),s.zd.z&&(d.z=s.z)}i.left=u.x,i.right=d.x,i.top=d.y,i.bottom=u.y,i.updateProjectionMatrix()}function _(e){return e.material instanceof K.MeshFaceMaterial?e.material.materials[0]:e.material}r=new K.ShaderMaterial({uniforms:g,vertexShader:m.vertexShader,fragmentShader:m.fragmentShader}),o=new K.ShaderMaterial({uniforms:g,vertexShader:m.vertexShader,fragmentShader:m.fragmentShader,morphTargets:!0}),s=new K.ShaderMaterial({uniforms:g,vertexShader:m.vertexShader,fragmentShader:m.fragmentShader,skinning:!0}),a=new K.ShaderMaterial({uniforms:g,vertexShader:m.vertexShader,fragmentShader:m.fragmentShader,morphTargets:!0,skinning:!0}),r._shadowPass=!0,o._shadowPass=!0,s._shadowPass=!0,a._shadowPass=!0,this.render=function(i,u){if(!1!==e.shadowMapEnabled){var d,m,g,E,S,A,w,T,M,C,P,D,L,I=[],R=0,O=null;for(l.clearColor(1,1,1,1),l.disable(l.BLEND),l.enable(l.CULL_FACE),l.frontFace(l.CCW),e.shadowMapCullFace===K.CullFaceFront?l.cullFace(l.FRONT):l.cullFace(l.BACK),e.state.setDepthTest(!0),d=0,m=t.length;d0&&k.morphTargets,G=D instanceof K.SkinnedMesh&&k.skinning,C=D.customDepthMaterial?D.customDepthMaterial:G?V?a:s:V?o:r,e.setMaterialFaces(k),M instanceof K.BufferGeometry?e.renderBufferDirect(T,t,O,C,M,D):e.renderBuffer(T,t,O,C,M,D);for(g=0,E=n.length;g 0 ) {","float depth = gl_FragCoord.z / gl_FragCoord.w;","float fogFactor = 0.0;","if ( fogType == 1 ) {","fogFactor = smoothstep( fogNear, fogFar, depth );","} else {","const float LOG2 = 1.442695;","float fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );","fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );","}","gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );","}","}"].join("\n")),l.compileShader(i),l.compileShader(n),l.attachShader(t,i),l.attachShader(t,n),l.linkProgram(t),t}(),o={position:l.getAttribLocation(r,"position"),uv:l.getAttribLocation(r,"uv")},s={uvOffset:l.getUniformLocation(r,"uvOffset"),uvScale:l.getUniformLocation(r,"uvScale"),rotation:l.getUniformLocation(r,"rotation"),scale:l.getUniformLocation(r,"scale"),color:l.getUniformLocation(r,"color"),map:l.getUniformLocation(r,"map"),opacity:l.getUniformLocation(r,"opacity"),modelViewMatrix:l.getUniformLocation(r,"modelViewMatrix"),projectionMatrix:l.getUniformLocation(r,"projectionMatrix"),fogType:l.getUniformLocation(r,"fogType"),fogDensity:l.getUniformLocation(r,"fogDensity"),fogNear:l.getUniformLocation(r,"fogNear"),fogFar:l.getUniformLocation(r,"fogFar"),fogColor:l.getUniformLocation(r,"fogColor"),alphaTest:l.getUniformLocation(r,"alphaTest")};var h=document.createElement("canvas");h.width=8,h.height=8;var u=h.getContext("2d");u.fillStyle="white",u.fillRect(0,0,8,8),(a=new K.Texture(h)).needsUpdate=!0};function f(e,t){return e.z!==t.z?t.z-e.z:t.id-e.id}this.render=function(p,m){if(0!==t.length){void 0===r&&d(),l.useProgram(r),l.enableVertexAttribArray(o.position),l.enableVertexAttribArray(o.uv),l.disable(l.CULL_FACE),l.enable(l.BLEND),l.bindBuffer(l.ARRAY_BUFFER,i),l.vertexAttribPointer(o.position,2,l.FLOAT,!1,16,0),l.vertexAttribPointer(o.uv,2,l.FLOAT,!1,16,8),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,n),l.uniformMatrix4fv(s.projectionMatrix,!1,m.projectionMatrix.elements),l.activeTexture(l.TEXTURE0),l.uniform1i(s.map,0);var g=0,v=0,y=p.fog;y?(l.uniform3f(s.fogColor,y.color.r,y.color.g,y.color.b),y instanceof K.Fog?(l.uniform1f(s.fogNear,y.near),l.uniform1f(s.fogFar,y.far),l.uniform1i(s.fogType,1),g=1,v=1):y instanceof K.FogExp2&&(l.uniform1f(s.fogDensity,y.density),l.uniform1i(s.fogType,2),g=2,v=2)):(l.uniform1i(s.fogType,0),g=0,v=0);for(var b=0,x=t.length;bo-1?o-1:p+1,v=f-1<0?0:f-1,y=f+1>r-1?r-1:f+1,b=[],x=[0,0,h[4*(p*r+f)]/255*t];b.push([-1,0,h[4*(p*r+v)]/255*t]),b.push([-1,-1,h[4*(m*r+v)]/255*t]),b.push([0,-1,h[4*(m*r+f)]/255*t]),b.push([1,-1,h[4*(m*r+y)]/255*t]),b.push([1,0,h[4*(p*r+y)]/255*t]),b.push([1,1,h[4*(g*r+y)]/255*t]),b.push([0,1,h[4*(g*r+f)]/255*t]),b.push([-1,1,h[4*(g*r+v)]/255*t]);for(var _=[],E=b.length,S=0;S(c-a)*(d-l)-(h-l)*(u-a))return!1;for(m=u-c,g=d-h,v=a-u,y=l-d,b=c-a,x=h-l,s=0;s=-1e-10&&v*(p-d)-y*(f-u)>=-1e-10&&b*(p-l)-x*(f-a)>=-1e-10)return!1;return!0},U.Triangulate=function(e,t){var i=e.length;if(i<3)return null;var n,r,o,s=[],a=[],l=[];if(k(e)>0)for(r=0;r2;){if(h--<=0)return K.warn("THREE.FontUtils: Warning, unable to triangulate polygon! in Triangulate.process()"),t?l:s;if(c<=(n=r)&&(n=0),c<=(r=n+1)&&(r=0),c<=(o=r+1)&&(o=0),V(e,n,r,o,c,a)){var u,d,f,p,m;for(u=a[n],d=a[r],f=a[o],s.push([e[u],e[d],e[f]]),l.push([a[n],a[r],a[o]]),p=r,m=r+1;m0)){l=r;break}l=r-1}if(n[r=l]==i)return r/(o-1);var c=n[r];return(r+(i-c)/(n[r+1]-c))/(o-1)},K.Curve.prototype.getTangent=function(e){var t=1e-4,i=e-t,n=e+t;i<0&&(i=0),n>1&&(n=1);var r=this.getPoint(i);return this.getPoint(n).clone().sub(r).normalize()},K.Curve.prototype.getTangentAt=function(e){var t=this.getUtoTmapping(e);return this.getTangent(t)},K.Curve.Utils={tangentQuadraticBezier:function(e,t,i,n){return 2*(1-e)*(i-t)+2*e*(n-i)},tangentCubicBezier:function(e,t,i,n,r){return-3*t*(1-e)*(1-e)+3*i*(1-e)*(1-e)-6*e*i*(1-e)+6*e*n*(1-e)-3*e*e*n+3*e*e*r},tangentSpline:function(e,t,i,n,r){return 6*e*e-6*e+(3*e*e-4*e+1)+(-6*e*e+6*e)+(3*e*e-2*e)},interpolate:function(e,t,i,n,r){var o=.5*(i-e),s=.5*(n-t),a=r*r;return(2*t-2*i+o+s)*(r*a)+(-3*t+3*i-2*o-s)*a+o*r+t}},K.Curve.create=function(e,t){return e.prototype=Object.create(K.Curve.prototype),e.prototype.constructor=e,e.prototype.getPoint=t,e},K.CurvePath=function(){this.curves=[],this.bends=[],this.autoClose=!1},K.CurvePath.prototype=Object.create(K.Curve.prototype),K.CurvePath.prototype.constructor=K.CurvePath,K.CurvePath.prototype.add=function(e){this.curves.push(e)},K.CurvePath.prototype.checkConnection=function(){},K.CurvePath.prototype.closePath=function(){var e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new K.LineCurve(t,e))},K.CurvePath.prototype.getPoint=function(e){for(var t,i=e*this.getLength(),n=this.getCurveLengths(),r=0;r=i){var o=1-(n[r]-i)/(t=this.curves[r]).getLength();return t.getPointAt(o)}r++}return null},K.CurvePath.prototype.getLength=function(){var e=this.getCurveLengths();return e[e.length-1]},K.CurvePath.prototype.getCurveLengths=function(){if(this.cacheLengths&&this.cacheLengths.length==this.curves.length)return this.cacheLengths;var e,t=[],i=0,n=this.curves.length;for(e=0;ee?e=s.x:s.xt?t=s.y:s.yi?i=s.z:s.z0?(f=(m=x[x.length-1]).x,p=m.y):(f=(m=this.actions[i-1].args)[m.length-2],p=m[m.length-1]),g=1;g<=e;g++)v=g/e,y=K.Shape.Utils.b2(v,f,u,a),b=K.Shape.Utils.b2(v,p,d,l),x.push(new K.Vector2(y,b));break;case K.PathActions.BEZIER_CURVE_TO:for(a=s[4],l=s[5],u=s[0],d=s[1],c=s[2],h=s[3],x.length>0?(f=(m=x[x.length-1]).x,p=m.y):(f=(m=this.actions[i-1].args)[m.length-2],p=m[m.length-1]),g=1;g<=e;g++)v=g/e,y=K.Shape.Utils.b3(v,f,u,c,a),b=K.Shape.Utils.b3(v,p,d,h,l),x.push(new K.Vector2(y,b));break;case K.PathActions.CSPLINE_THRU:m=this.actions[i-1].args;var _=[new K.Vector2(m[m.length-2],m[m.length-1])],E=e*s[0].length;_=_.concat(s[0]);var S=new K.SplineCurve(_);for(g=1;g<=E;g++)x.push(S.getPointAt(g/E));break;case K.PathActions.ARC:var A=s[0],w=s[1],T=s[2],M=s[3],C=s[4],P=!!s[5],D=C-M,L=2*e;for(g=1;g<=L;g++)v=g/L,P||(v=1-v),I=M+v*D,y=A+T*Math.cos(I),b=w+T*Math.sin(I),x.push(new K.Vector2(y,b));break;case K.PathActions.ELLIPSE:A=s[0],w=s[1];var I,R=s[2],O=s[3];M=s[4],C=s[5],P=!!s[6],D=C-M,L=2*e;for(g=1;g<=L;g++)v=g/L,P||(v=1-v),I=M+v*D,y=A+R*Math.cos(I),b=w+O*Math.sin(I),x.push(new K.Vector2(y,b))}var N=x[x.length-1];return Math.abs(N.x-x[0].x)<1e-10&&Math.abs(N.y-x[0].y)<1e-10&&x.splice(x.length-1,1),t&&x.push(x[0]),x},K.Path.prototype.toShapes=function(e,t){function i(e){for(var t=[],i=0,n=e.length;i1e-10){if(c<0&&(s=t[o],l=-l,a=t[r],c=-c),e.ya.y)continue;if(e.y==s.y){if(e.x==s.x)return!0}else{var h=c*(e.x-s.x)-l*(e.y-s.y);if(0==h)return!0;if(h<0)continue;n=!n}}else{if(e.y!=s.y)continue;if(a.x<=e.x&&e.x<=s.x||s.x<=e.x&&e.x<=a.x)return!0}}return n}var r=function(e){var t,i,n,r,o,s=[],a=new K.Path;for(t=0,i=e.length;t1){for(var x=!1,_=[],E=0,S=v.length;E0&&(x||(y=g))}for(u=0,d=v.length;u1e-10){var p;if(d>0){if(f<0||f>d)return[];if((p=c*h-l*u)<0||p>d)return[]}else{if(f>0||f0||pS?[]:y==S?o?[]:[g]:b<=S?[g,v]:[g,_])}function r(e,t,i,n){var r=t.x-e.x,o=t.y-e.y,s=i.x-e.x,a=i.y-e.y,l=n.x-e.x,c=n.y-e.y,h=r*a-o*s,u=r*c-o*l;if(Math.abs(h)>1e-10){var d=l*a-c*s;return h>0?u>=0&&d>=0:u>=0||d>=0}return u>0}for(var o,s,a,l,c,h,u={},d=e.concat(),f=0,p=t.length;fn&&(a=0);var l=r(o[e],o[s],o[a],i[t]);if(!l)return!1;var c=i.length-1,h=t-1;h<0&&(h=c);var u=t+1;return u>c&&(u=0),!!(l=r(i[t],i[h],i[u],o[e]))}function a(e,t){var i,r;for(i=0;i0)return!0;return!1}var l=[];function c(e,i){var r,o,s,a;for(r=0;r0)return!0;return!1}for(var h,u,d,f,p,m,g,v,y,b,x=[],_=0,E=t.length;_0;){if(--A<0){console.log("Infinite Loop! Holes left:"+l.length+", Probably Hole outside Shape!");break}for(u=S;u=0)break;x[m]=!0}if(h>=0)break}}return o}(e,t),g=K.FontUtils.Triangulate(m,!1);for(o=0,s=g.length;ot.length-2?t.length-1:n+1],l=t[n>t.length-3?t.length-1:n+2],c=new K.Vector2;return c.x=K.Curve.Utils.interpolate(o.x,s.x,a.x,l.x,r),c.y=K.Curve.Utils.interpolate(o.y,s.y,a.y,l.y,r),c},K.EllipseCurve=function(e,t,i,n,r,o,s){this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=n,this.aStartAngle=r,this.aEndAngle=o,this.aClockwise=s},K.EllipseCurve.prototype=Object.create(K.Curve.prototype),K.EllipseCurve.prototype.constructor=K.EllipseCurve,K.EllipseCurve.prototype.getPoint=function(e){var t,i=this.aEndAngle-this.aStartAngle;i<0&&(i+=2*Math.PI),i>2*Math.PI&&(i-=2*Math.PI),t=!0===this.aClockwise?this.aEndAngle+(1-e)*(2*Math.PI-i):this.aStartAngle+e*i;var n=new K.Vector2;return n.x=this.aX+this.xRadius*Math.cos(t),n.y=this.aY+this.yRadius*Math.sin(t),n},K.ArcCurve=function(e,t,i,n,r,o){K.EllipseCurve.call(this,e,t,i,i,n,r,o)},K.ArcCurve.prototype=Object.create(K.EllipseCurve.prototype),K.ArcCurve.prototype.constructor=K.ArcCurve,K.LineCurve3=K.Curve.create((function(e,t){this.v1=e,this.v2=t}),(function(e){var t=new K.Vector3;return t.subVectors(this.v2,this.v1),t.multiplyScalar(e),t.add(this.v1),t})),K.QuadraticBezierCurve3=K.Curve.create((function(e,t,i){this.v0=e,this.v1=t,this.v2=i}),(function(e){var t=new K.Vector3;return t.x=K.Shape.Utils.b2(e,this.v0.x,this.v1.x,this.v2.x),t.y=K.Shape.Utils.b2(e,this.v0.y,this.v1.y,this.v2.y),t.z=K.Shape.Utils.b2(e,this.v0.z,this.v1.z,this.v2.z),t})),K.CubicBezierCurve3=K.Curve.create((function(e,t,i,n){this.v0=e,this.v1=t,this.v2=i,this.v3=n}),(function(e){var t=new K.Vector3;return t.x=K.Shape.Utils.b3(e,this.v0.x,this.v1.x,this.v2.x,this.v3.x),t.y=K.Shape.Utils.b3(e,this.v0.y,this.v1.y,this.v2.y,this.v3.y),t.z=K.Shape.Utils.b3(e,this.v0.z,this.v1.z,this.v2.z,this.v3.z),t})),K.SplineCurve3=K.Curve.create((function(e){this.points=null==e?[]:e}),(function(e){var t=this.points,i=(t.length-1)*e,n=Math.floor(i),r=i-n,o=t[0==n?n:n-1],s=t[n],a=t[n>t.length-2?t.length-1:n+1],l=t[n>t.length-3?t.length-1:n+2],c=new K.Vector3;return c.x=K.Curve.Utils.interpolate(o.x,s.x,a.x,l.x,r),c.y=K.Curve.Utils.interpolate(o.y,s.y,a.y,l.y,r),c.z=K.Curve.Utils.interpolate(o.z,s.z,a.z,l.z,r),c})),K.ClosedSplineCurve3=K.Curve.create((function(e){this.points=null==e?[]:e}),(function(e){var t=this.points,i=(t.length-0)*e,n=Math.floor(i),r=i-n,o=t[((n+=n>0?0:(Math.floor(Math.abs(n)/t.length)+1)*t.length)-1)%t.length],s=t[n%t.length],a=t[(n+1)%t.length],l=t[(n+2)%t.length],c=new K.Vector3;return c.x=K.Curve.Utils.interpolate(o.x,s.x,a.x,l.x,r),c.y=K.Curve.Utils.interpolate(o.y,s.y,a.y,l.y,r),c.z=K.Curve.Utils.interpolate(o.z,s.z,a.z,l.z,r),c})),K.AnimationHandler={LINEAR:0,CATMULLROM:1,CATMULLROM_FORWARD:2,add:function(){K.warn("THREE.AnimationHandler.add() has been deprecated.")},get:function(){K.warn("THREE.AnimationHandler.get() has been deprecated.")},remove:function(){K.warn("THREE.AnimationHandler.remove() has been deprecated.")},animations:[],init:function(e){if(!0===e.initialized)return e;for(var t=0;tl.index;)l=c,c=this.getNextKeyWith(a,e,c.index+1);o.prevKey[a]=l,o.nextKey[a]=c}}},resetBlendWeights:function(){for(var e=0,t=this.hierarchy.length;ee.length-2?n:n+1,d[3]=n>e.length-3?n:n+2,l=e[d[0]],c=e[d[1]],h=e[d[2]],u=e[d[3]],a=r*(s=r*r),f[0]=o(l[0],c[0],h[0],u[0],r,s,a),f[1]=o(l[1],c[1],h[1],u[1],r,s,a),f[2]=o(l[2],c[2],h[2],u[2],r,s,a),f},o=function(e,t,i,n,r,o,s){var a=.5*(i-e),l=.5*(n-t);return(2*(t-i)+a+l)*s+(-3*(t-i)-2*a-l)*o+a*r+t};return function(o){if(!1!==this.isPlaying&&(this.currentTime+=o*this.timeScale,0!==this.weight)){var s=this.data.length;(this.currentTime>s||this.currentTime<0)&&(this.loop?(this.currentTime%=s,this.currentTime<0&&(this.currentTime+=s),this.reset()):this.stop());for(var a=0,l=this.hierarchy.length;a0&&m.time<=this.currentTime||this.timeScale<0&&p.time>=this.currentTime){for(p=this.data.hierarchy[a].keys[0],m=this.getNextKeyWith(f,a,1);m.timep.index;)p=m,m=this.getNextKeyWith(f,a,m.index+1);h.prevKey[f]=p,h.nextKey[f]=m}var g=(this.currentTime-p.time)/(m.time-p.time),v=p[f],y=m[f];if(g<0&&(g=0),g>1&&(g=1),"pos"===f){if(this.interpolationType===K.AnimationHandler.LINEAR){i.x=v[0]+(y[0]-v[0])*g,i.y=v[1]+(y[1]-v[1])*g,i.z=v[2]+(y[2]-v[2])*g;var b=this.weight/(this.weight+u.positionWeight);c.position.lerp(i,b),u.positionWeight+=this.weight}else if(this.interpolationType===K.AnimationHandler.CATMULLROM||this.interpolationType===K.AnimationHandler.CATMULLROM_FORWARD){e[0]=this.getPrevKeyWith("pos",a,p.index-1).pos,e[1]=v,e[2]=y,e[3]=this.getNextKeyWith("pos",a,m.index+1).pos;var x=r(e,g=.33*g+.33);b=this.weight/(this.weight+u.positionWeight);u.positionWeight+=this.weight;var _=c.position;if(_.x=_.x+(x[0]-_.x)*b,_.y=_.y+(x[1]-_.y)*b,_.z=_.z+(x[2]-_.z)*b,this.interpolationType===K.AnimationHandler.CATMULLROM_FORWARD){var E=r(e,1.01*g);t.set(E[0],E[1],E[2]),t.sub(_),t.y=0,t.normalize();var S=Math.atan2(t.x,t.z);c.rotation.set(0,S,0)}}}else if("rot"===f)if(K.Quaternion.slerp(v,y,n,g),0===u.quaternionWeight)c.quaternion.copy(n),u.quaternionWeight=this.weight;else{b=this.weight/(this.weight+u.quaternionWeight);K.Quaternion.slerp(c.quaternion,n,c.quaternion,b),u.quaternionWeight+=this.weight}else if("scl"===f){i.x=v[0]+(y[0]-v[0])*g,i.y=v[1]+(y[1]-v[1])*g,i.z=v[2]+(y[2]-v[2])*g;b=this.weight/(this.weight+u.scaleWeight);c.scale.lerp(i,b),u.scaleWeight+=this.weight}}return!0}}}(),getNextKeyWith:function(e,t,i){var n=this.data.hierarchy[t].keys;for(this.interpolationType===K.AnimationHandler.CATMULLROM||this.interpolationType===K.AnimationHandler.CATMULLROM_FORWARD?i=i0?i:0:i>=0?i:i+n.length;i>=0;i--)if(void 0!==n[i][e])return n[i];return this.data.hierarchy[t].keys[n.length-1]}},K.KeyFrameAnimation=function(e){this.root=e.node,this.data=K.AnimationHandler.init(e),this.hierarchy=K.AnimationHandler.parse(this.root),this.currentTime=0,this.timeScale=.001,this.isPlaying=!1,this.isPaused=!0,this.loop=!0;for(var t=0,i=this.hierarchy.length;tt&&(this.currentTime%=t),this.currentTime=Math.min(this.currentTime,t);for(var i=0,n=this.hierarchy.length;il.index;)c=s[(l=c).index+1];a.prevKey=l,a.nextKey=c}c.time>=this.currentTime?l.interpolate(c,this.currentTime):l.interpolate(c,c.time),this.data.hierarchy[i].node.updateMatrix(),r.matrixWorldNeedsUpdate=!0}}}},getNextKeyWith:function(e,t,i){var n=this.data.hierarchy[t].keys;for(i%=n.length;i=0?i:i+n.length;i>=0;i--)if(n[i].hasTarget(e))return n[i];return n[n.length-1]}},K.MorphAnimation=function(e){this.mesh=e,this.frames=e.morphTargetInfluences.length,this.currentTime=0,this.duration=1e3,this.loop=!0,this.lastFrame=0,this.currentFrame=0,this.isPlaying=!1},K.MorphAnimation.prototype={constructor:K.MorphAnimation,play:function(){this.isPlaying=!0},pause:function(){this.isPlaying=!1},update:function(e){if(!1!==this.isPlaying){this.currentTime+=e,!0===this.loop&&this.currentTime>this.duration&&(this.currentTime%=this.duration),this.currentTime=Math.min(this.currentTime,this.duration);var t=this.duration/this.frames,i=Math.floor(this.currentTime/t),n=this.mesh.morphTargetInfluences;i!=this.currentFrame&&(n[this.lastFrame]=0,n[this.currentFrame]=1,n[i]=0,this.lastFrame=this.currentFrame,this.currentFrame=i),n[i]=this.currentTime%t/t,n[this.lastFrame]=1-n[i]}}},K.BoxGeometry=function(e,t,i,n,r,o){K.Geometry.call(this),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:n,heightSegments:r,depthSegments:o},this.widthSegments=n||1,this.heightSegments=r||1,this.depthSegments=o||1;var s=this,a=e/2,l=t/2,c=i/2;function h(e,t,i,n,r,o,a,l){var c,h,u,d=s.widthSegments,f=s.heightSegments,p=r/2,m=o/2,g=s.vertices.length;"x"===e&&"y"===t||"y"===e&&"x"===t?c="z":"x"===e&&"z"===t||"z"===e&&"x"===t?(c="y",f=s.depthSegments):("z"===e&&"y"===t||"y"===e&&"z"===t)&&(c="x",d=s.depthSegments);var v=d+1,y=f+1,b=r/d,x=o/f,_=new K.Vector3;for(_[c]=a>0?1:-1,u=0;u0)for(this.vertices.push(new K.Vector3(0,h,0)),l=0;l0)for(this.vertices.push(new K.Vector3(0,-h,0)),l=0;lo){var f=Math.sqrt(u),p=Math.sqrt(c*c+h*h),m=t.x-l/f,g=t.y+a/f,v=((i.x-h/p-m)*h-(i.y+c/p-g)*c)/(a*h-l*c),y=(n=m+a*v-e.x)*n+(r=g+l*v-e.y)*r;if(y<=2)return new K.Vector2(n,r);s=Math.sqrt(y/2)}else{var b=!1;a>o?c>o&&(b=!0):a<-1e-10?c<-1e-10&&(b=!0):Math.sign(l)==Math.sign(h)&&(b=!0),b?(n=-l,r=a,s=Math.sqrt(u)):(n=a,r=l,s=Math.sqrt(u/2))}return new K.Vector2(n/s,r/s)}for(var V=[],G=0,z=P.length,H=z-1,W=G+1;G=0;L--){for(O=u*(1-(R=L/f)),I=d*Math.sin(R*Math.PI/2),G=0,z=P.length;G=0;){i=G,(n=G-1)<0&&(n=e.length-1);var r=0,o=g+2*f;for(r=0;r65535?Uint32Array:Uint16Array)(s*a*6);for(v=0;v1e-4&&(p.normalize(),n=Math.acos(K.Math.clamp(u[l-1].dot(u[l]),-1,1)),d[l].applyMatrix4(m.makeRotationAxis(p,n))),f[l].crossVectors(u[l],d[l]);if(i)for(n=Math.acos(K.Math.clamp(d[0].dot(d[g-1]),-1,1)),n/=g-1,u[0].dot(p.crossVectors(d[0],d[g-1]))>0&&(n=-n),l=1;l.9&&b<.1&&(m<.2&&(p[0].x+=1),g<.2&&(p[1].x+=1),v<.2&&(p[2].x+=1))}for(o=0,s=this.vertices.length;o.99999?this.quaternion.set(0,0,0,1):e.y<-.99999?this.quaternion.set(1,0,0,0):(Y.set(e.z,0,-e.x).normalize(),X=Math.acos(e.y),this.quaternion.setFromAxisAngle(Y,X))}),K.ArrowHelper.prototype.setLength=function(e,t,i){void 0===t&&(t=.2*e),void 0===i&&(i=.2*t),this.line.scale.set(1,e-t,1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()},K.ArrowHelper.prototype.setColor=function(e){this.line.material.color.set(e),this.cone.material.color.set(e)},K.BoxHelper=function(e){var t=new K.BufferGeometry;t.setAttribute("position",new K.BufferAttribute(new Float32Array(72),3)),K.Line.call(this,t,new K.LineBasicMaterial({color:16776960}),K.LinePieces),void 0!==e&&this.update(e)},K.BoxHelper.prototype=Object.create(K.Line.prototype),K.BoxHelper.prototype.constructor=K.BoxHelper,K.BoxHelper.prototype.update=function(e){var t=e.geometry;null===t.boundingBox&&t.computeBoundingBox();var i=t.boundingBox.min,n=t.boundingBox.max,r=this.geometry.attributes.position.array;r[0]=n.x,r[1]=n.y,r[2]=n.z,r[3]=i.x,r[4]=n.y,r[5]=n.z,r[6]=i.x,r[7]=n.y,r[8]=n.z,r[9]=i.x,r[10]=i.y,r[11]=n.z,r[12]=i.x,r[13]=i.y,r[14]=n.z,r[15]=n.x,r[16]=i.y,r[17]=n.z,r[18]=n.x,r[19]=i.y,r[20]=n.z,r[21]=n.x,r[22]=n.y,r[23]=n.z,r[24]=n.x,r[25]=n.y,r[26]=i.z,r[27]=i.x,r[28]=n.y,r[29]=i.z,r[30]=i.x,r[31]=n.y,r[32]=i.z,r[33]=i.x,r[34]=i.y,r[35]=i.z,r[36]=i.x,r[37]=i.y,r[38]=i.z,r[39]=n.x,r[40]=i.y,r[41]=i.z,r[42]=n.x,r[43]=i.y,r[44]=i.z,r[45]=n.x,r[46]=n.y,r[47]=i.z,r[48]=n.x,r[49]=n.y,r[50]=n.z,r[51]=n.x,r[52]=n.y,r[53]=i.z,r[54]=i.x,r[55]=n.y,r[56]=n.z,r[57]=i.x,r[58]=n.y,r[59]=i.z,r[60]=i.x,r[61]=i.y,r[62]=n.z,r[63]=i.x,r[64]=i.y,r[65]=i.z,r[66]=n.x,r[67]=i.y,r[68]=n.z,r[69]=n.x,r[70]=i.y,r[71]=i.z,this.geometry.attributes.position.needsUpdate=!0,this.geometry.computeBoundingSphere(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1},K.BoundingBoxHelper=function(e,t){var i=void 0!==t?t:8947848;this.object=e,this.box=new K.Box3,K.Mesh.call(this,new K.BoxGeometry(1,1,1),new K.MeshBasicMaterial({color:i,wireframe:!0}))},K.BoundingBoxHelper.prototype=Object.create(K.Mesh.prototype),K.BoundingBoxHelper.prototype.constructor=K.BoundingBoxHelper,K.BoundingBoxHelper.prototype.update=function(){this.box.setFromObject(this.object),this.box.size(this.scale),this.box.getCenter(this.position)},K.CameraHelper=function(e){var t=new K.Geometry,i=new K.LineBasicMaterial({color:16777215,vertexColors:K.FaceColors}),n={},r=16755200,o=16711680,s=43775,a=3355443;function l(e,t,i){c(e,i),c(t,i)}function c(e,i){t.vertices.push(new K.Vector3),t.colors.push(new K.Color(i)),void 0===n[e]&&(n[e]=[]),n[e].push(t.vertices.length-1)}l("n1","n2",r),l("n2","n4",r),l("n4","n3",r),l("n3","n1",r),l("f1","f2",r),l("f2","f4",r),l("f4","f3",r),l("f3","f1",r),l("n1","f1",r),l("n2","f2",r),l("n3","f3",r),l("n4","f4",r),l("p","n1",o),l("p","n2",o),l("p","n3",o),l("p","n4",o),l("u1","u2",s),l("u2","u3",s),l("u3","u1",s),l("c","t",16777215),l("p","c",a),l("cn1","cn2",a),l("cn3","cn4",a),l("cf1","cf2",a),l("cf3","cf4",a),K.Line.call(this,t,i,K.LinePieces),this.camera=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=n,this.update()},K.CameraHelper.prototype=Object.create(K.Line.prototype),K.CameraHelper.prototype.constructor=K.CameraHelper,K.CameraHelper.prototype.update=function(){var e,t,i=new K.Vector3,n=new K.Camera,r=function(r,o,s,a){i.set(o,s,a).unproject(n);var l=t[r];if(void 0!==l)for(var c=0,h=l.length;c1)n[l=a[1]]||(n[l]={start:1/0,end:-1/0}),o<(c=n[l]).start&&(c.start=o),o>c.end&&(c.end=o),t||(t=l)}for(var l in n){var c=n[l];this.createAnimation(l,c.start,c.end,e)}this.firstAnimation=t},K.MorphBlendMesh.prototype.setAnimationDirectionForward=function(e){var t=this.animationsMap[e];t&&(t.direction=1,t.directionBackwards=!1)},K.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(e){var t=this.animationsMap[e];t&&(t.direction=-1,t.directionBackwards=!0)},K.MorphBlendMesh.prototype.setAnimationFPS=function(e,t){var i=this.animationsMap[e];i&&(i.fps=t,i.duration=(i.end-i.start)/i.fps)},K.MorphBlendMesh.prototype.setAnimationDuration=function(e,t){var i=this.animationsMap[e];i&&(i.duration=t,i.fps=(i.end-i.start)/i.duration)},K.MorphBlendMesh.prototype.setAnimationWeight=function(e,t){var i=this.animationsMap[e];i&&(i.weight=t)},K.MorphBlendMesh.prototype.setAnimationTime=function(e,t){var i=this.animationsMap[e];i&&(i.time=t)},K.MorphBlendMesh.prototype.getAnimationTime=function(e){var t=0,i=this.animationsMap[e];return i&&(t=i.time),t},K.MorphBlendMesh.prototype.getAnimationDuration=function(e){var t=-1,i=this.animationsMap[e];return i&&(t=i.duration),t},K.MorphBlendMesh.prototype.playAnimation=function(e){var t=this.animationsMap[e];t?(t.time=0,t.active=!0):K.warn("THREE.MorphBlendMesh: animation["+e+"] undefined in .playAnimation()")},K.MorphBlendMesh.prototype.stopAnimation=function(e){var t=this.animationsMap[e];t&&(t.active=!1)},K.MorphBlendMesh.prototype.update=function(e){for(var t=0,i=this.animationsList.length;tn.duration||n.time<0)&&(n.direction*=-1,n.time>n.duration&&(n.time=n.duration,n.directionBackwards=!0),n.time<0&&(n.time=0,n.directionBackwards=!1)):(n.time=n.time%n.duration,n.time<0&&(n.time+=n.duration));var o=n.startFrame+K.Math.clamp(Math.floor(n.time/r),0,n.length-1),s=n.weight;o!==n.currentFrame&&(this.morphTargetInfluences[n.lastFrame]=0,this.morphTargetInfluences[n.currentFrame]=1*s,this.morphTargetInfluences[o]=0,n.lastFrame=n.currentFrame,n.currentFrame=o);var a=n.time%r/r;n.directionBackwards&&(a=1-a),this.morphTargetInfluences[n.currentFrame]=a*s,this.morphTargetInfluences[n.lastFrame]=(1-a)*s}}};const{polyfillTHREE:Q}=i(63004);Q(K)},67526:(e,t)=>{"use strict";t.byteLength=function(e){var t=a(e),i=t[0],n=t[1];return 3*(i+n)/4-n},t.toByteArray=function(e){var t,i,o=a(e),s=o[0],l=o[1],c=new r(function(e,t,i){return 3*(t+i)/4-i}(0,s,l)),h=0,u=l>0?s-4:s;for(i=0;i>16&255,c[h++]=t>>8&255,c[h++]=255&t;2===l&&(t=n[e.charCodeAt(i)]<<2|n[e.charCodeAt(i+1)]>>4,c[h++]=255&t);1===l&&(t=n[e.charCodeAt(i)]<<10|n[e.charCodeAt(i+1)]<<4|n[e.charCodeAt(i+2)]>>2,c[h++]=t>>8&255,c[h++]=255&t);return c},t.fromByteArray=function(e){for(var t,n=e.length,r=n%3,o=[],s=16383,a=0,c=n-r;ac?c:a+s));1===r?(t=e[n-1],o.push(i[t>>2]+i[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],o.push(i[t>>10]+i[t>>4&63]+i[t<<2&63]+"="));return o.join("")};for(var i=[],n=[],r="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0;s<64;++s)i[s]=o[s],n[o.charCodeAt(s)]=s;function a(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=e.indexOf("=");return-1===i&&(i=t),[i,i===t?0:4-i%4]}function l(e,t,n){for(var r,o,s=[],a=t;a>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},8939:e=>{e.exports=function(){"use strict";var e=function(){for(var e=3,t=document.createElement("b"),i=t.all||[];t.innerHTML="\x3c!--[if gt IE "+ ++e+"]>4?e:document.documentMode}(),t=navigator.platform.toLowerCase().indexOf("mac")+1,i=function(e){if(!(this instanceof i))return new i(e);var s=this,a={rows_in_block:50,blocks_in_cluster:4,tag:null,show_no_data_row:!0,no_data_class:"clusterize-no-data",no_data_text:"No data",keep_parity:!0,callbacks:{}};s.options={};for(var l,c=["rows_in_block","blocks_in_cluster","show_no_data_row","no_data_class","no_data_text","keep_parity","tag","callbacks"],h=0;l=c[h];h++)s.options[l]=void 0!==e[l]&&null!=e[l]?e[l]:a[l];var u,d=["scroll","content"];for(h=0;u=d[h];h++)if(s[u+"_elem"]=e[u+"Id"]?document.getElementById(e[u+"Id"]):e[u+"Elem"],!s[u+"_elem"])throw new Error("Error! Could not find "+u+" element");s.content_elem.hasAttribute("tabindex")||s.content_elem.setAttribute("tabindex",0);var f=o(e.rows)?e.rows:s.fetchMarkup(),p={},m=s.scroll_elem.scrollTop;s.insertToDOM(f,p),s.scroll_elem.scrollTop=m;var g=!1,v=0,y=!1,b=function(){t&&(y||(s.content_elem.style.pointerEvents="none"),y=!0,clearTimeout(v),v=setTimeout((function(){s.content_elem.style.pointerEvents="auto",y=!1}),50)),g!=(g=s.getClusterNum())&&s.insertToDOM(f,p),s.options.callbacks.scrollingProgress&&s.options.callbacks.scrollingProgress(s.getScrollProgress())},x=0,_=function(){clearTimeout(x),x=setTimeout(s.refresh,100)};n("scroll",s.scroll_elem,b),n("resize",window,_),s.destroy=function(e){r("scroll",s.scroll_elem,b),r("resize",window,_),s.html((e?s.generateEmptyRow():f).join(""))},s.refresh=function(e){(s.getRowsHeight(f)||e)&&s.update(f)},s.update=function(e){f=o(e)?e:[];var t=s.scroll_elem.scrollTop;f.length*s.options.item_height\s/]*)/)[1].toLowerCase()),this.content_elem.children.length<=1&&(i.data=this.html(t[0]+t[0]+t[0])),n.tag||(n.tag=this.content_elem.children[0].tagName.toLowerCase()),this.getRowsHeight(t))},getRowsHeight:function(e){var t=this.options,i=t.item_height;if(t.cluster_height=0,e.length){var n=this.content_elem.children;if(n.length){var r=n[Math.floor(n.length/2)];if(t.item_height=r.offsetHeight,"tr"==t.tag&&"collapse"!=s("borderCollapse",this.content_elem)&&(t.item_height+=parseInt(s("borderSpacing",this.content_elem),10)||0),"tr"!=t.tag){var o=parseInt(s("marginTop",r),10)||0,a=parseInt(s("marginBottom",r),10)||0;t.item_height+=Math.max(o,a)}return t.block_height=t.item_height*t.rows_in_block,t.rows_in_cluster=t.blocks_in_cluster*t.rows_in_block,t.cluster_height=t.blocks_in_cluster*t.block_height,i!=t.item_height}}},getClusterNum:function(){return this.options.scroll_top=this.scroll_elem.scrollTop,Math.floor(this.options.scroll_top/(this.options.cluster_height-this.options.block_height))||0},generateEmptyRow:function(){var e=this.options;if(!e.tag||!e.show_no_data_row)return[];var t,i=document.createElement(e.tag),n=document.createTextNode(e.no_data_text);return i.className=e.no_data_class,"tr"==e.tag&&((t=document.createElement("td")).colSpan=100,t.appendChild(n)),i.appendChild(t||n),[i.outerHTML]},generate:function(e,t){var i=this.options,n=e.length;if(n"+t+"";n=i.lastChild;)i.removeChild(n);for(var o=this.getChildNodes(r.firstChild.firstChild);o.length;)i.appendChild(o.shift())}else i.innerHTML=t},getChildNodes:function(e){for(var t=e.children,i=[],n=0,r=t.length;n{"use strict";var n=i(67526),r=i(251),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null; +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */t.hp=l,t.IS=50;var s=2147483647;function a(e){if(e>s)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,i){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return c(e,t,i)}function c(e,t,i){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var i=0|m(e,t),n=a(i),r=n.write(e,t);r!==i&&(n=n.slice(0,r));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(G(e,Uint8Array)){var t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return d(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(G(e,ArrayBuffer)||e&&G(e.buffer,ArrayBuffer))return f(e,t,i);if("undefined"!=typeof SharedArrayBuffer&&(G(e,SharedArrayBuffer)||e&&G(e.buffer,SharedArrayBuffer)))return f(e,t,i);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return l.from(n,t,i);var r=function(e){if(l.isBuffer(e)){var t=0|p(e.length),i=a(t);return 0===i.length||e.copy(i,0,0,t),i}if(void 0!==e.length)return"number"!=typeof e.length||z(e.length)?a(0):d(e);if("Buffer"===e.type&&Array.isArray(e.data))return d(e.data)}(e);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,i);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function h(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return h(e),a(e<0?0:0|p(e))}function d(e){for(var t=e.length<0?0:0|p(e.length),i=a(t),n=0;n=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|e}function m(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||G(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var i=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===i)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return k(e).length;default:if(r)return n?-1:B(e).length;t=(""+t).toLowerCase(),r=!0}}function g(e,t,i){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if((i>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,i);case"utf8":case"utf-8":return T(this,t,i);case"ascii":return C(this,t,i);case"latin1":case"binary":return P(this,t,i);case"base64":return w(this,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,t,i);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function v(e,t,i){var n=e[t];e[t]=e[i],e[i]=n}function y(e,t,i,n,r){if(0===e.length)return-1;if("string"==typeof i?(n=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),z(i=+i)&&(i=r?0:e.length-1),i<0&&(i=e.length+i),i>=e.length){if(r)return-1;i=e.length-1}else if(i<0){if(!r)return-1;i=0}if("string"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:b(e,t,i,n,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,i):Uint8Array.prototype.lastIndexOf.call(e,t,i):b(e,[t],i,n,r);throw new TypeError("val must be string, number or Buffer")}function b(e,t,i,n,r){var o,s=1,a=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s=2,a/=2,l/=2,i/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(r){var h=-1;for(o=i;oa&&(i=a-l),o=i;o>=0;o--){for(var u=!0,d=0;dr&&(n=r):n=r;var o=t.length;n>o/2&&(n=o/2);for(var s=0;s>8,r=i%256,o.push(r),o.push(n);return o}(t,e.length-i),e,i,n)}function w(e,t,i){return 0===t&&i===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,i))}function T(e,t,i){i=Math.min(e.length,i);for(var n=[],r=t;r239?4:c>223?3:c>191?2:1;if(r+u<=i)switch(u){case 1:c<128&&(h=c);break;case 2:128==(192&(o=e[r+1]))&&(l=(31&c)<<6|63&o)>127&&(h=l);break;case 3:o=e[r+1],s=e[r+2],128==(192&o)&&128==(192&s)&&(l=(15&c)<<12|(63&o)<<6|63&s)>2047&&(l<55296||l>57343)&&(h=l);break;case 4:o=e[r+1],s=e[r+2],a=e[r+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(l=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(h=l)}null===h?(h=65533,u=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),r+=u}return function(e){var t=e.length;if(t<=M)return String.fromCharCode.apply(String,e);var i="",n=0;for(;nn.length?l.from(o).copy(n,r):Uint8Array.prototype.set.call(n,o,r);else{if(!l.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,r)}r+=o.length}return n},l.byteLength=m,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;ti&&(e+=" ... "),""},o&&(l.prototype[o]=l.prototype.inspect),l.prototype.compare=function(e,t,i,n,r){if(G(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===i&&(i=e?e.length:0),void 0===n&&(n=0),void 0===r&&(r=this.length),t<0||i>e.length||n<0||r>this.length)throw new RangeError("out of range index");if(n>=r&&t>=i)return 0;if(n>=r)return-1;if(t>=i)return 1;if(this===e)return 0;for(var o=(r>>>=0)-(n>>>=0),s=(i>>>=0)-(t>>>=0),a=Math.min(o,s),c=this.slice(n,r),h=e.slice(t,i),u=0;u>>=0,isFinite(i)?(i>>>=0,void 0===n&&(n="utf8")):(n=i,i=void 0)}var r=this.length-t;if((void 0===i||i>r)&&(i=r),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return x(this,e,t,i);case"utf8":case"utf-8":return _(this,e,t,i);case"ascii":case"latin1":case"binary":return E(this,e,t,i);case"base64":return S(this,e,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,i);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var M=4096;function C(e,t,i){var n="";i=Math.min(e.length,i);for(var r=t;rn)&&(i=n);for(var r="",o=t;oi)throw new RangeError("Trying to access beyond buffer length")}function R(e,t,i,n,r,o){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function O(e,t,i,n,r,o){if(i+n>e.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function N(e,t,i,n,o){return t=+t,i>>>=0,o||O(e,0,i,4),r.write(e,t,i,n,23,4),i+4}function F(e,t,i,n,o){return t=+t,i>>>=0,o||O(e,0,i,8),r.write(e,t,i,n,52,8),i+8}l.prototype.slice=function(e,t){var i=this.length;(e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),t>>=0,t>>>=0,i||I(e,t,this.length);for(var n=this[e],r=1,o=0;++o>>=0,t>>>=0,i||I(e,t,this.length);for(var n=this[e+--t],r=1;t>0&&(r*=256);)n+=this[e+--t]*r;return n},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,i){e>>>=0,t>>>=0,i||I(e,t,this.length);for(var n=this[e],r=1,o=0;++o=(r*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,i){e>>>=0,t>>>=0,i||I(e,t,this.length);for(var n=t,r=1,o=this[e+--n];n>0&&(r*=256);)o+=this[e+--n]*r;return o>=(r*=128)&&(o-=Math.pow(2,8*t)),o},l.prototype.readInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||I(e,2,this.length);var i=this[e]|this[e+1]<<8;return 32768&i?4294901760|i:i},l.prototype.readInt16BE=function(e,t){e>>>=0,t||I(e,2,this.length);var i=this[e+1]|this[e]<<8;return 32768&i?4294901760|i:i},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||I(e,4,this.length),r.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||I(e,4,this.length),r.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||I(e,8,this.length),r.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||I(e,8,this.length),r.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,i,n){(e=+e,t>>>=0,i>>>=0,n)||R(this,e,t,i,Math.pow(2,8*i)-1,0);var r=1,o=0;for(this[t]=255&e;++o>>=0,i>>>=0,n)||R(this,e,t,i,Math.pow(2,8*i)-1,0);var r=i-1,o=1;for(this[t+r]=255&e;--r>=0&&(o*=256);)this[t+r]=e/o&255;return t+i},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,i,n){if(e=+e,t>>>=0,!n){var r=Math.pow(2,8*i-1);R(this,e,t,i,r-1,-r)}var o=0,s=1,a=0;for(this[t]=255&e;++o>>=0,!n){var r=Math.pow(2,8*i-1);R(this,e,t,i,r-1,-r)}var o=i-1,s=1,a=0;for(this[t+o]=255&e;--o>=0&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s|0)-a&255;return t+i},l.prototype.writeInt8=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,i){return N(this,e,t,!0,i)},l.prototype.writeFloatBE=function(e,t,i){return N(this,e,t,!1,i)},l.prototype.writeDoubleLE=function(e,t,i){return F(this,e,t,!0,i)},l.prototype.writeDoubleBE=function(e,t,i){return F(this,e,t,!1,i)},l.prototype.copy=function(e,t,i,n){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(i||(i=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,i=void 0===i?this.length:i>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&i<57344){if(!r){if(i>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}r=i;continue}if(i<56320){(t-=3)>-1&&o.push(239,191,189),r=i;continue}i=65536+(r-55296<<10|i-56320)}else r&&(t-=3)>-1&&o.push(239,191,189);if(r=null,i<128){if((t-=1)<0)break;o.push(i)}else if(i<2048){if((t-=2)<0)break;o.push(i>>6|192,63&i|128)}else if(i<65536){if((t-=3)<0)break;o.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return o}function k(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(U,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function V(e,t,i,n){for(var r=0;r=t.length||r>=e.length);++r)t[r+i]=e[r];return r}function G(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function z(e){return e!=e}var H=function(){for(var e="0123456789abcdef",t=new Array(256),i=0;i<16;++i)for(var n=16*i,r=0;r<16;++r)t[n+r]=e[i]+e[r];return t}()},84406:function(e,t,i){"use strict";var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function s(e){try{l(n.next(e))}catch(e){o(e)}}function a(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,a)}l((n=n.apply(e,t||[])).next())}))},r=this&&this.__generator||function(e,t){var i,n,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(i)throw new TypeError("Generator is already executing.");for(;s;)try{if(i=1,n&&(r=2&o[0]?n.return:o[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,o[1])).done)return r;switch(n=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=this.options.numOfAttempts},enumerable:!0,configurable:!0}),e.prototype.applyDelay=function(){return n(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return[4,s.DelayFactory(this.options,this.attemptNumber).apply()];case 1:return e.sent(),[2]}}))}))},e}()},88348:function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])},n(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(i(36698).Delay);t.AlwaysDelay=o},36698:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(66071),r=function(){function e(e){this.options=e,this.attempt=0}return e.prototype.apply=function(){var e=this;return new Promise((function(t){return setTimeout(t,e.jitteredDelay)}))},e.prototype.setAttemptNumber=function(e){this.attempt=e},Object.defineProperty(e.prototype,"jitteredDelay",{get:function(){return n.JitterFactory(this.options)(this.delay)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"delay",{get:function(){var e=this.options.startingDelay,t=this.options.timeMultiple,i=this.numOfDelayedAttempts,n=e*Math.pow(t,i);return Math.min(n,this.options.maxDelay)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"numOfDelayedAttempts",{get:function(){return this.attempt},enumerable:!0,configurable:!0}),e}();t.Delay=r},65757:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(7510),r=i(88348);t.DelayFactory=function(e,t){var i=function(e){if(!e.delayFirstAttempt)return new n.SkipFirstDelay(e);return new r.AlwaysDelay(e)}(e);return i.setAttemptNumber(t),i}},7510:function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])},n(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),o=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function s(e){try{l(n.next(e))}catch(e){o(e)}}function a(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,a)}l((n=n.apply(e,t||[])).next())}))},s=this&&this.__generator||function(e,t){var i,n,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(i)throw new TypeError("Generator is already executing.");for(;s;)try{if(i=1,n&&(r=2&o[0]?n.return:o[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,o[1])).done)return r;switch(n=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fullJitter=function(e){var t=Math.random()*e;return Math.round(t)}},66071:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(38500),r=i(14764);t.JitterFactory=function(e){return"full"===e.jitter?n.fullJitter:r.noJitter}},14764:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.noJitter=function(e){return e}},90784:function(e,t){"use strict";var i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,i=1,n=arguments.length;i-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function h(e){return"string"!=typeof e&&(e=String(e)),e}function u(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function d(e){this.map={},e instanceof d?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function f(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function p(e){return new Promise((function(t,i){e.onload=function(){t(e.result)},e.onerror=function(){i(e.error)}}))}function m(e){var t=new FileReader,i=p(t);return t.readAsArrayBuffer(e),i}function g(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function v(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:i&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():s&&r&&((t=e)&&DataView.prototype.isPrototypeOf(t))?(this._bodyArrayBuffer=g(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(e)||l(e))?this._bodyArrayBuffer=g(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):i&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(m)}),this.text=function(){var e,t,i,n=f(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,t=new FileReader,i=p(t),t.readAsText(e),i;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),i=new Array(t.length),n=0;n-1?n:i),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function x(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var i=e.split("="),n=i.shift().replace(/\+/g," "),r=i.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(r))}})),t}function _(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new d(t.headers),this.url=t.url||"",this._initBody(e)}b.prototype.clone=function(){return new b(this,{body:this._bodyInit})},v.call(b.prototype),v.call(_.prototype),_.prototype.clone=function(){return new _(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new d(this.headers),url:this.url})},_.error=function(){var e=new _(null,{status:0,statusText:""});return e.type="error",e};var E=[301,302,303,307,308];_.redirect=function(e,t){if(-1===E.indexOf(t))throw new RangeError("Invalid status code");return new _(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var i=Error(e);this.stack=i.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function S(e,i){return new Promise((function(n,o){var s=new b(e,i);if(s.signal&&s.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var a=new XMLHttpRequest;function l(){a.abort()}a.onload=function(){var e,t,i={status:a.status,statusText:a.statusText,headers:(e=a.getAllResponseHeaders()||"",t=new d,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var i=e.split(":"),n=i.shift().trim();if(n){var r=i.join(":").trim();t.append(n,r)}})),t)};i.url="responseURL"in a?a.responseURL:i.headers.get("X-Request-URL");var r="response"in a?a.response:a.responseText;n(new _(r,i))},a.onerror=function(){o(new TypeError("Network request failed"))},a.ontimeout=function(){o(new TypeError("Network request failed"))},a.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},a.open(s.method,s.url,!0),"include"===s.credentials?a.withCredentials=!0:"omit"===s.credentials&&(a.withCredentials=!1),"responseType"in a&&r&&(a.responseType="blob"),s.headers.forEach((function(e,t){a.setRequestHeader(t,e)})),s.signal&&(s.signal.addEventListener("abort",l),a.onreadystatechange=function(){4===a.readyState&&s.signal.removeEventListener("abort",l)}),a.send(void 0===s._bodyInit?null:s._bodyInit)}))}S.polyfill=!0,e.fetch||(e.fetch=S,e.Headers=d,e.Request=b,e.Response=_),t.Headers=d,t.Request=b,t.Response=_,t.fetch=S,Object.defineProperty(t,"__esModule",{value:!0})}({})}(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var r=n;(t=r.fetch).default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t},38842:(e,t,i)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function r(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,t||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==n(t)?t:t+""}function o(e,t,i){return(t=r(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function s(e){for(var t=1;tH});var m={type:"logger",log:function(e){this.output("log",e)},warn:function(e){this.output("warn",e)},error:function(e){this.output("error",e)},output:function(e,t){console&&console[e]&&console[e].apply(console,t)}},g=new(function(){function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};a(this,e),this.init(t,i)}return c(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||m,this.options=t,this.debug=t.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,t=new Array(e),i=0;i1?t-1:0),n=1;n-1?e.replace(/###/g,"."):e}function r(){return!e||"string"==typeof e}for(var o="string"!=typeof t?[].concat(t):t.split(".");o.length>1;){if(r())return{};var s=n(o.shift());!e[s]&&i&&(e[s]=new i),e=Object.prototype.hasOwnProperty.call(e,s)?e[s]:{}}return r()?{}:{obj:e,k:n(o.shift())}}function _(e,t,i){var n=x(e,t,Object);n.obj[n.k]=i}function E(e,t){var i=x(e,t),n=i.obj,r=i.k;if(n)return n[r]}function S(e,t,i){var n=E(e,i);return void 0!==n?n:E(t,i)}function A(e,t,i){for(var n in t)"__proto__"!==n&&"constructor"!==n&&(n in e?"string"==typeof e[n]||e[n]instanceof String||"string"==typeof t[n]||t[n]instanceof String?i&&(e[n]=t[n]):A(e[n],t[n],i):e[n]=t[n]);return e}function w(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var T={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function M(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return T[e]})):e}var C="undefined"!=typeof window&&window.navigator&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1;function P(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(e){if(e[t])return e[t];for(var n=t.split(i),r=e,o=0;oo+s;)s++,l=r[a=n.slice(o,o+s).join(i)];if(void 0===l)return;if("string"==typeof l)return l;if(a&&"string"==typeof l[a])return l[a];var c=n.slice(o+s).join(i);return c?P(l,c,i):void 0}r=r[n[o]]}return r}}var D=function(e){function t(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return a(this,t),i=u(this,d(t).call(this)),C&&v.call(h(i)),i.data=e||{},i.options=n,void 0===i.options.keySeparator&&(i.options.keySeparator="."),void 0===i.options.ignoreJSONStructure&&(i.options.ignoreJSONStructure=!0),i}return p(t,e),c(t,[{key:"addNamespaces",value:function(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}},{key:"removeNamespaces",value:function(e){var t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}},{key:"getResource",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=void 0!==n.keySeparator?n.keySeparator:this.options.keySeparator,o=void 0!==n.ignoreJSONStructure?n.ignoreJSONStructure:this.options.ignoreJSONStructure,s=[e,t];i&&"string"!=typeof i&&(s=s.concat(i)),i&&"string"==typeof i&&(s=s.concat(r?i.split(r):i)),e.indexOf(".")>-1&&(s=e.split("."));var a=E(this.data,s);return a||!o||"string"!=typeof i?a:P(this.data&&this.data[e]&&this.data[e][t],i,r)}},{key:"addResource",value:function(e,t,i,n){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},o=this.options.keySeparator;void 0===o&&(o=".");var s=[e,t];i&&(s=s.concat(o?i.split(o):i)),e.indexOf(".")>-1&&(n=t,t=(s=e.split("."))[1]),this.addNamespaces(t),_(this.data,s,n),r.silent||this.emit("added",e,t,i,n)}},{key:"addResources",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var r in i)"string"!=typeof i[r]&&"[object Array]"!==Object.prototype.toString.apply(i[r])||this.addResource(e,t,r,i[r],{silent:!0});n.silent||this.emit("added",e,t,i)}},{key:"addResourceBundle",value:function(e,t,i,n,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},a=[e,t];e.indexOf(".")>-1&&(n=i,i=t,t=(a=e.split("."))[1]),this.addNamespaces(t);var l=E(this.data,a)||{};n?A(l,i,r):l=s({},l,i),_(this.data,a,l),o.silent||this.emit("added",e,t,i)}},{key:"removeResourceBundle",value:function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}},{key:"hasResourceBundle",value:function(e,t){return void 0!==this.getResource(e,t)}},{key:"getResourceBundle",value:function(e,t){return t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI?s({},{},this.getResource(e,t)):this.getResource(e,t)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"toJSON",value:function(){return this.data}}]),t}(v),L={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,i,n,r){var o=this;return e.forEach((function(e){o.processors[e]&&(t=o.processors[e].process(t,i,n,r))})),t}},I={},R=function(e){function t(e){var i,n,r,o,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a(this,t),i=u(this,d(t).call(this)),C&&v.call(h(i)),n=["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],r=e,o=h(i),n.forEach((function(e){r[e]&&(o[e]=r[e])})),i.options=s,void 0===i.options.keySeparator&&(i.options.keySeparator="."),i.logger=g.create("translator"),i}return p(t,e),c(t,[{key:"changeLanguage",value:function(e){e&&(this.language=e)}},{key:"exists",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}};if(null==e)return!1;var i=this.resolve(e,t);return i&&void 0!==i.res}},{key:"extractFromKey",value:function(e,t){var i=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===i&&(i=":");var n=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,r=t.ns||this.options.defaultNS;if(i&&e.indexOf(i)>-1){var o=e.match(this.interpolator.nestingRegexp);if(o&&o.length>0)return{key:e,namespaces:r};var s=e.split(i);(i!==n||i===n&&this.options.ns.indexOf(s[0])>-1)&&(r=s.shift()),e=s.join(n)}return"string"==typeof r&&(r=[r]),{key:e,namespaces:r}}},{key:"translate",value:function(e,i,r){var o=this;if("object"!==n(i)&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),i||(i={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var a=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,l=this.extractFromKey(e[e.length-1],i),c=l.key,h=l.namespaces,u=h[h.length-1],d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d&&"cimode"===d.toLowerCase()){if(f){var p=i.nsSeparator||this.options.nsSeparator;return u+p+c}return c}var m=this.resolve(e,i),g=m&&m.res,v=m&&m.usedKey||c,y=m&&m.exactUsedKey||c,b=Object.prototype.toString.apply(g),x=void 0!==i.joinArrays?i.joinArrays:this.options.joinArrays,_=!this.i18nFormat||this.i18nFormat.handleAsObject;if(_&&g&&("string"!=typeof g&&"boolean"!=typeof g&&"number"!=typeof g)&&["[object Number]","[object Function]","[object RegExp]"].indexOf(b)<0&&("string"!=typeof x||"[object Array]"!==b)){if(!i.returnObjects&&!this.options.returnObjects)return this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!"),this.options.returnedObjectHandler?this.options.returnedObjectHandler(v,g,s({},i,{ns:h})):"key '".concat(c," (").concat(this.language,")' returned an object instead of string.");if(a){var E="[object Array]"===b,S=E?[]:{},A=E?y:v;for(var w in g)if(Object.prototype.hasOwnProperty.call(g,w)){var T="".concat(A).concat(a).concat(w);S[w]=this.translate(T,s({},i,{joinArrays:!1,ns:h})),S[w]===T&&(S[w]=g[w])}g=S}}else if(_&&"string"==typeof x&&"[object Array]"===b)(g=g.join(x))&&(g=this.extendTranslation(g,e,i,r));else{var M=!1,C=!1,P=void 0!==i.count&&"string"!=typeof i.count,D=t.hasDefaultValue(i),L=P?this.pluralResolver.getSuffix(d,i.count):"",I=i["defaultValue".concat(L)]||i.defaultValue;!this.isValidLookup(g)&&D&&(M=!0,g=I),this.isValidLookup(g)||(C=!0,g=c);var R=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&C?void 0:g,O=D&&I!==g&&this.options.updateMissing;if(C||M||O){if(this.logger.log(O?"updateKey":"missingKey",d,u,c,O?I:g),a){var N=this.resolve(c,s({},i,{keySeparator:!1}));N&&N.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var F=[],U=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if("fallback"===this.options.saveMissingTo&&U&&U[0])for(var B=0;B1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!s.isValidLookup(t)){var l=s.extractFromKey(e,a),c=l.key;i=c;var h=l.namespaces;s.options.fallbackNS&&(h=h.concat(s.options.fallbackNS));var u=void 0!==a.count&&"string"!=typeof a.count,d=void 0!==a.context&&("string"==typeof a.context||"number"==typeof a.context)&&""!==a.context,f=a.lngs?a.lngs:s.languageUtils.toResolveHierarchy(a.lng||s.language,a.fallbackLng);h.forEach((function(e){s.isValidLookup(t)||(o=e,!I["".concat(f[0],"-").concat(e)]&&s.utils&&s.utils.hasLoadedNamespace&&!s.utils.hasLoadedNamespace(o)&&(I["".concat(f[0],"-").concat(e)]=!0,s.logger.warn('key "'.concat(i,'" for languages "').concat(f.join(", "),'" won\'t get resolved as namespace "').concat(o,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach((function(i){if(!s.isValidLookup(t)){r=i;var o,l,h=c,f=[h];if(s.i18nFormat&&s.i18nFormat.addLookupKeys)s.i18nFormat.addLookupKeys(f,c,i,e,a);else u&&(o=s.pluralResolver.getSuffix(i,a.count)),u&&d&&f.push(h+o),d&&f.push(h+="".concat(s.options.contextSeparator).concat(a.context)),u&&f.push(h+=o);for(;l=f.pop();)s.isValidLookup(t)||(n=l,t=s.getResource(i,e,l,a))}})))}))}})),{res:t,usedKey:i,exactUsedKey:n,usedLng:r,usedNS:o}}},{key:"isValidLookup",value:function(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}},{key:"getResource",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,i,n):this.resourceStore.getResource(e,t,i,n)}}],[{key:"hasDefaultValue",value:function(e){var t="defaultValue";for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&t===i.substring(0,12)&&void 0!==e[i])return!0;return!1}}]),t}(v);function O(e){return e.charAt(0).toUpperCase()+e.slice(1)}var N=function(){function e(t){a(this,e),this.options=t,this.whitelist=this.options.supportedLngs||!1,this.supportedLngs=this.options.supportedLngs||!1,this.logger=g.create("languageUtils")}return c(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return e;var t=e.split("-");return this.formatLanguageCode(t[0])}},{key:"formatLanguageCode",value:function(e){if("string"==typeof e&&e.indexOf("-")>-1){var t=["hans","hant","latn","cyrl","cans","mong","arab"],i=e.split("-");return this.options.lowerCaseLng?i=i.map((function(e){return e.toLowerCase()})):2===i.length?(i[0]=i[0].toLowerCase(),i[1]=i[1].toUpperCase(),t.indexOf(i[1].toLowerCase())>-1&&(i[1]=O(i[1].toLowerCase()))):3===i.length&&(i[0]=i[0].toLowerCase(),2===i[1].length&&(i[1]=i[1].toUpperCase()),"sgn"!==i[0]&&2===i[2].length&&(i[2]=i[2].toUpperCase()),t.indexOf(i[1].toLowerCase())>-1&&(i[1]=O(i[1].toLowerCase())),t.indexOf(i[2].toLowerCase())>-1&&(i[2]=O(i[2].toLowerCase()))),i.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isWhitelisted",value:function(e){return this.logger.deprecate("languageUtils.isWhitelisted",'function "isWhitelisted" will be renamed to "isSupportedCode" in the next major - please make sure to rename it\'s usage asap.'),this.isSupportedCode(e)}},{key:"isSupportedCode",value:function(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}},{key:"getBestMatchFromCodes",value:function(e){var t,i=this;return e?(e.forEach((function(e){if(!t){var n=i.formatLanguageCode(e);i.options.supportedLngs&&!i.isSupportedCode(n)||(t=n)}})),!t&&this.options.supportedLngs&&e.forEach((function(e){if(!t){var n=i.getLanguagePartFromCode(e);if(i.isSupportedCode(n))return t=n;t=i.options.supportedLngs.find((function(e){if(0===e.indexOf(n))return e}))}})),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t):null}},{key:"getFallbackCodes",value:function(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),"string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!t)return e.default||[];var i=e[t];return i||(i=e[this.getScriptPartFromCode(t)]),i||(i=e[this.formatLanguageCode(t)]),i||(i=e[this.getLanguagePartFromCode(t)]),i||(i=e.default),i||[]}},{key:"toResolveHierarchy",value:function(e,t){var i=this,n=this.getFallbackCodes(t||this.options.fallbackLng||[],e),r=[],o=function(e){e&&(i.isSupportedCode(e)?r.push(e):i.logger.warn("rejecting language code not found in supportedLngs: ".concat(e)))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&o(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&o(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&o(this.getLanguagePartFromCode(e))):"string"==typeof e&&o(this.formatLanguageCode(e)),n.forEach((function(e){r.indexOf(e)<0&&o(i.formatLanguageCode(e))})),r}}]),e}(),F=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],U={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0==e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(1==e||e%10==1&&e%100!=11?0:1)},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0==e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0==e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)},22:function(e){return Number(1==e?0:2==e?1:(e<0||e>10)&&e%10==0?2:3)}};var B=function(){function e(t){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};a(this,e),this.languageUtils=t,this.options=n,this.logger=g.create("pluralResolver"),this.rules=(i={},F.forEach((function(e){e.lngs.forEach((function(t){i[t]={numbers:e.nr,plurals:U[e.fc]}}))})),i)}return c(e,[{key:"addRule",value:function(e,t){this.rules[e]=t}},{key:"getRule",value:function(e){return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var t=this.getRule(e);return t&&t.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,t){return this.getSuffixes(e).map((function(e){return t+e}))}},{key:"getSuffixes",value:function(e){var t=this,i=this.getRule(e);return i?i.numbers.map((function(i){return t.getSuffix(e,i)})):[]}},{key:"getSuffix",value:function(e,t){var i=this,n=this.getRule(e);if(n){var r=n.noAbs?n.plurals(t):n.plurals(Math.abs(t)),o=n.numbers[r];this.options.simplifyPluralSuffix&&2===n.numbers.length&&1===n.numbers[0]&&(2===o?o="plural":1===o&&(o=""));var s=function(){return i.options.prepend&&o.toString()?i.options.prepend+o.toString():o.toString()};return"v1"===this.options.compatibilityJSON?1===o?"":"number"==typeof o?"_plural_".concat(o.toString()):s():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===n.numbers.length&&1===n.numbers[0]?s():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}return this.logger.warn("no plural rule found for: ".concat(e)),""}}]),e}(),k=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a(this,e),this.logger=g.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(e){return e},this.init(t)}return c(e,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var t=e.interpolation;this.escape=void 0!==t.escape?t.escape:M,this.escapeValue=void 0===t.escapeValue||t.escapeValue,this.useRawValueToEscape=void 0!==t.useRawValueToEscape&&t.useRawValueToEscape,this.prefix=t.prefix?w(t.prefix):t.prefixEscaped||"{{",this.suffix=t.suffix?w(t.suffix):t.suffixEscaped||"}}",this.formatSeparator=t.formatSeparator?t.formatSeparator:t.formatSeparator||",",this.unescapePrefix=t.unescapeSuffix?"":t.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":t.unescapeSuffix||"",this.nestingPrefix=t.nestingPrefix?w(t.nestingPrefix):t.nestingPrefixEscaped||w("$t("),this.nestingSuffix=t.nestingSuffix?w(t.nestingSuffix):t.nestingSuffixEscaped||w(")"),this.nestingOptionsSeparator=t.nestingOptionsSeparator?t.nestingOptionsSeparator:t.nestingOptionsSeparator||",",this.maxReplaces=t.maxReplaces?t.maxReplaces:1e3,this.alwaysFormat=void 0!==t.alwaysFormat&&t.alwaysFormat,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(e,"g");var t="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(t,"g");var i="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(i,"g")}},{key:"interpolate",value:function(e,t,i,n){var r,o,a,l=this,c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function h(e){return e.replace(/\$/g,"$$$$")}var u=function(e){if(e.indexOf(l.formatSeparator)<0){var r=S(t,c,e);return l.alwaysFormat?l.format(r,void 0,i,s({},n,t,{interpolationkey:e})):r}var o=e.split(l.formatSeparator),a=o.shift().trim(),h=o.join(l.formatSeparator).trim();return l.format(S(t,c,a),h,i,s({},n,t,{interpolationkey:a}))};this.resetRegExp();var d=n&&n.missingInterpolationHandler||this.options.missingInterpolationHandler,f=n&&n.interpolation&&n.interpolation.skipOnVariables||this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(e){return h(e)}},{regex:this.regexp,safeValue:function(e){return l.escapeValue?h(l.escape(e)):h(e)}}].forEach((function(t){for(a=0;r=t.regex.exec(e);){if(void 0===(o=u(r[1].trim())))if("function"==typeof d){var i=d(e,r,n);o="string"==typeof i?i:""}else{if(f){o=r[0];continue}l.logger.warn("missed to pass in variable ".concat(r[1]," for interpolating ").concat(e)),o=""}else"string"==typeof o||l.useRawValueToEscape||(o=b(o));var s=t.safeValue(o);if(e=e.replace(r[0],s),f?(t.regex.lastIndex+=s.length,t.regex.lastIndex-=r[0].length):t.regex.lastIndex=0,++a>=l.maxReplaces)break}})),e}},{key:"nest",value:function(e,t){var i,n,r=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=s({},o);function l(e,t){var i=this.nestingOptionsSeparator;if(e.indexOf(i)<0)return e;var n=e.split(new RegExp("".concat(i,"[ ]*{"))),r="{".concat(n[1]);e=n[0],r=(r=this.interpolate(r,a)).replace(/'/g,'"');try{a=JSON.parse(r),t&&(a=s({},t,a))}catch(t){return this.logger.warn("failed parsing options string in nesting for key ".concat(e),t),"".concat(e).concat(i).concat(r)}return delete a.defaultValue,e}for(a.applyPostProcessor=!1,delete a.defaultValue;i=this.nestingRegexp.exec(e);){var c=[],h=!1;if(-1!==i[0].indexOf(this.formatSeparator)&&!/{.*}/.test(i[1])){var u=i[1].split(this.formatSeparator).map((function(e){return e.trim()}));i[1]=u.shift(),c=u,h=!0}if((n=t(l.call(this,i[1].trim(),a),a))&&i[0]===e&&"string"!=typeof n)return n;"string"!=typeof n&&(n=b(n)),n||(this.logger.warn("missed to resolve ".concat(i[1]," for nesting ").concat(e)),n=""),h&&(n=c.reduce((function(e,t){return r.format(e,t,o.lng,s({},o,{interpolationkey:i[1].trim()}))}),n.trim())),e=e.replace(i[0],n),this.regexp.lastIndex=0}return e}}]),e}();var V=function(e){function t(e,i,n){var r,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return a(this,t),r=u(this,d(t).call(this)),C&&v.call(h(r)),r.backend=e,r.store=i,r.services=n,r.languageUtils=n.languageUtils,r.options=o,r.logger=g.create("backendConnector"),r.state={},r.queue=[],r.backend&&r.backend.init&&r.backend.init(n,o.backend,o),r}return p(t,e),c(t,[{key:"queueLoad",value:function(e,t,i,n){var r=this,o=[],s=[],a=[],l=[];return e.forEach((function(e){var n=!0;t.forEach((function(t){var a="".concat(e,"|").concat(t);!i.reload&&r.store.hasResourceBundle(e,t)?r.state[a]=2:r.state[a]<0||(1===r.state[a]?s.indexOf(a)<0&&s.push(a):(r.state[a]=1,n=!1,s.indexOf(a)<0&&s.push(a),o.indexOf(a)<0&&o.push(a),l.indexOf(t)<0&&l.push(t)))})),n||a.push(e)})),(o.length||s.length)&&this.queue.push({pending:s,loaded:{},errors:[],callback:n}),{toLoad:o,pending:s,toLoadLanguages:a,toLoadNamespaces:l}}},{key:"loaded",value:function(e,t,i){var n=e.split("|"),r=n[0],o=n[1];t&&this.emit("failedLoading",r,o,t),i&&this.store.addResourceBundle(r,o,i),this.state[e]=t?-1:2;var s={};this.queue.forEach((function(i){var n,a,l,c,h,u;n=i.loaded,a=o,c=x(n,[r],Object),h=c.obj,u=c.k,h[u]=h[u]||[],l&&(h[u]=h[u].concat(a)),l||h[u].push(a),function(e,t){for(var i=e.indexOf(t);-1!==i;)e.splice(i,1),i=e.indexOf(t)}(i.pending,e),t&&i.errors.push(t),0!==i.pending.length||i.done||(Object.keys(i.loaded).forEach((function(e){s[e]||(s[e]=[]),i.loaded[e].length&&i.loaded[e].forEach((function(t){s[e].indexOf(t)<0&&s[e].push(t)}))})),i.done=!0,i.errors.length?i.callback(i.errors):i.callback())})),this.emit("loaded",s),this.queue=this.queue.filter((function(e){return!e.done}))}},{key:"read",value:function(e,t,i){var n=this,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:350,s=arguments.length>5?arguments[5]:void 0;return e.length?this.backend[i](e,t,(function(a,l){a&&l&&r<5?setTimeout((function(){n.read.call(n,e,t,i,r+1,2*o,s)}),o):s(a,l)})):s(null,{})}},{key:"prepareLoading",value:function(e,t){var i=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var o=this.queueLoad(e,t,n,r);if(!o.toLoad.length)return o.pending.length||r(),null;o.toLoad.forEach((function(e){i.loadOne(e)}))}},{key:"load",value:function(e,t,i){this.prepareLoading(e,t,{},i)}},{key:"reload",value:function(e,t,i){this.prepareLoading(e,t,{reload:!0},i)}},{key:"loadOne",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e.split("|"),r=n[0],o=n[1];this.read(r,o,"read",void 0,void 0,(function(n,s){n&&t.logger.warn("".concat(i,"loading namespace ").concat(o," for language ").concat(r," failed"),n),!n&&s&&t.logger.log("".concat(i,"loaded namespace ").concat(o," for language ").concat(r),s),t.loaded(e,n,s)}))}},{key:"saveMissing",value:function(e,t,i,n,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(t)?this.logger.warn('did not save key "'.concat(i,'" as the namespace "').concat(t,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!"):null!=i&&""!==i&&(this.backend&&this.backend.create&&this.backend.create(e,t,i,n,null,s({},o,{isUpdate:r})),e&&e[0]&&this.store.addResource(e[0],t,i,n))}}]),t}(v);function G(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.whitelist&&(e.whitelist&&e.whitelist.indexOf("cimode")<0&&(e.whitelist=e.whitelist.concat(["cimode"])),e.supportedLngs=e.whitelist),e.nonExplicitWhitelist&&(e.nonExplicitSupportedLngs=e.nonExplicitWhitelist),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function z(){}const H=new(function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(a(this,t),e=u(this,d(t).call(this)),C&&v.call(h(e)),e.options=G(i),e.services={},e.logger=g,e.modules={external:[]},n&&!e.isInitialized&&!i.isClone){if(!e.options.initImmediate)return e.init(i,n),u(e,h(e));setTimeout((function(){e.init(i,n)}),0)}return e}return p(t,e),c(t,[{key:"init",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0;function r(e){return e?"function"==typeof e?new e:e:null}if("function"==typeof t&&(i=t,t={}),t.whitelist&&!t.supportedLngs&&this.logger.deprecate("whitelist",'option "whitelist" will be renamed to "supportedLngs" in the next major - please make sure to rename this option asap.'),t.nonExplicitWhitelist&&!t.nonExplicitSupportedLngs&&this.logger.deprecate("whitelist",'options "nonExplicitWhitelist" will be renamed to "nonExplicitSupportedLngs" in the next major - please make sure to rename this option asap.'),this.options=s({},{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,whitelist:!1,nonExplicitWhitelist:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var t={};if("object"===n(e[1])&&(t=e[1]),"string"==typeof e[1]&&(t.defaultValue=e[1]),"string"==typeof e[2]&&(t.tDescription=e[2]),"object"===n(e[2])||"object"===n(e[3])){var i=e[3]||e[2];Object.keys(i).forEach((function(e){t[e]=i[e]}))}return t},interpolation:{escapeValue:!0,format:function(e,t,i,n){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!1}},this.options,G(t)),this.format=this.options.interpolation.format,i||(i=z),!this.options.isClone){this.modules.logger?g.init(r(this.modules.logger),this.options):g.init(null,this.options);var o=new N(this.options);this.store=new D(this.options.resources,this.options);var a=this.services;a.logger=g,a.resourceStore=this.store,a.languageUtils=o,a.pluralResolver=new B(o,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),a.interpolator=new k(this.options),a.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},a.backendConnector=new V(r(this.modules.backend),a.resourceStore,a,this.options),a.backendConnector.on("*",(function(t){for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r1?i-1:0),r=1;r0&&"dev"!==l[0]&&(this.options.lng=l[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach((function(t){e[t]=function(){var i;return(i=e.store)[t].apply(i,arguments)}}));["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach((function(t){e[t]=function(){var i;return(i=e.store)[t].apply(i,arguments),e}}));var c=y(),h=function(){var t=function(t,n){e.isInitialized&&!e.initializedStoreOnce&&e.logger.warn("init: i18next is already initialized. You should call init just once!"),e.isInitialized=!0,e.options.isClone||e.logger.log("initialized",e.options),e.emit("initialized",e.options),c.resolve(n),i(t,n)};if(e.languages&&"v1"!==e.options.compatibilityAPI&&!e.isInitialized)return t(null,e.t.bind(e));e.changeLanguage(e.options.lng,t)};return this.options.resources||!this.options.initImmediate?h():setTimeout(h,0),c}},{key:"loadResources",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:z,n="string"==typeof e?e:this.language;if("function"==typeof e&&(i=e),!this.options.resources||this.options.partialBundledLanguages){if(n&&"cimode"===n.toLowerCase())return i();var r=[],o=function(e){e&&t.services.languageUtils.toResolveHierarchy(e).forEach((function(e){r.indexOf(e)<0&&r.push(e)}))};if(n)o(n);else this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach((function(e){return o(e)}));this.options.preload&&this.options.preload.forEach((function(e){return o(e)})),this.services.backendConnector.load(r,this.options.ns,i)}else i(null)}},{key:"reloadResources",value:function(e,t,i){var n=y();return e||(e=this.languages),t||(t=this.options.ns),i||(i=z),this.services.backendConnector.reload(e,t,(function(e){n.resolve(),i(e)})),n}},{key:"use",value:function(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&L.addPostProcessor(e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"changeLanguage",value:function(e,t){var i=this;this.isLanguageChangingTo=e;var n=y();this.emit("languageChanging",e);var r=function(r){e||r||!i.services.languageDetector||(r=[]);var o="string"==typeof r?r:i.services.languageUtils.getBestMatchFromCodes(r);o&&(i.language||(i.language=o,i.languages=i.services.languageUtils.toResolveHierarchy(o)),i.translator.language||i.translator.changeLanguage(o),i.services.languageDetector&&i.services.languageDetector.cacheUserLanguage(o)),i.loadResources(o,(function(e){!function(e,r){r?(i.language=r,i.languages=i.services.languageUtils.toResolveHierarchy(r),i.translator.changeLanguage(r),i.isLanguageChangingTo=void 0,i.emit("languageChanged",r),i.logger.log("languageChanged",r)):i.isLanguageChangingTo=void 0,n.resolve((function(){return i.t.apply(i,arguments)})),t&&t(e,(function(){return i.t.apply(i,arguments)}))}(e,o)}))};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(r):r(e):r(this.services.languageDetector.detect()),n}},{key:"getFixedT",value:function(e,t,i){var r=this,o=function e(t,o){var a;if("object"!==n(o)){for(var l=arguments.length,c=new Array(l>2?l-2:0),h=2;h1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var n=this.languages[0],r=!!this.options&&this.options.fallbackLng,o=this.languages[this.languages.length-1];if("cimode"===n.toLowerCase())return!0;var s=function(e,i){var n=t.services.backendConnector.state["".concat(e,"|").concat(i)];return-1===n||2===n};if(i.precheck){var a=i.precheck(this,s);if(void 0!==a)return a}return!!this.hasResourceBundle(n,e)||(!this.services.backendConnector.backend||!(!s(n,e)||r&&!s(o,e)))}},{key:"loadNamespaces",value:function(e,t){var i=this,n=y();return this.options.ns?("string"==typeof e&&(e=[e]),e.forEach((function(e){i.options.ns.indexOf(e)<0&&i.options.ns.push(e)})),this.loadResources((function(e){n.resolve(),t&&t(e)})),n):(t&&t(),Promise.resolve())}},{key:"loadLanguages",value:function(e,t){var i=y();"string"==typeof e&&(e=[e]);var n=this.options.preload||[],r=e.filter((function(e){return n.indexOf(e)<0}));return r.length?(this.options.preload=n.concat(r),this.loadResources((function(e){i.resolve(),t&&t(e)})),i):(t&&t(),Promise.resolve())}},{key:"dir",value:function(e){if(e||(e=this.languages&&this.languages.length>0?this.languages[0]:this.language),!e)return"rtl";return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e))>=0?"rtl":"ltr"}},{key:"createInstance",value:function(){return new t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}},{key:"cloneInstance",value:function(){var e=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:z,r=s({},this.options,i,{isClone:!0}),o=new t(r);return["store","services","language"].forEach((function(t){o[t]=e[t]})),o.services=s({},this.services),o.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},o.translator=new R(o.services,o.options),o.translator.on("*",(function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n{t.read=function(e,t,i,n,r){var o,s,a=8*r-n-1,l=(1<>1,h=-7,u=i?r-1:0,d=i?-1:1,f=e[t+u];for(u+=d,o=f&(1<<-h)-1,f>>=-h,h+=a;h>0;o=256*o+e[t+u],u+=d,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=n;h>0;s=256*s+e[t+u],u+=d,h-=8);if(0===o)o=1-c;else{if(o===l)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,n),o-=c}return(f?-1:1)*s*Math.pow(2,o-n)},t.write=function(e,t,i,n,r,o){var s,a,l,c=8*o-r-1,h=(1<>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:o-1,p=n?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=h):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+u>=1?d/l:d*Math.pow(2,1-u))*l>=2&&(s++,l/=2),s+u>=h?(a=0,s=h):s+u>=1?(a=(t*l-1)*Math.pow(2,r),s+=u):(a=t*Math.pow(2,u-1)*Math.pow(2,r),s=0));r>=8;e[i+f]=255&a,f+=p,a/=256,r-=8);for(s=s<0;e[i+f]=255&s,f+=p,s/=256,c-=8);e[i+f-p]|=128*m}},55580:(e,t,i)=>{var n=i(56110)(i(9325),"DataView");e.exports=n},21549:(e,t,i)=>{var n=i(22032),r=i(63862),o=i(66721),s=i(12749),a=i(35749);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t{var n=i(63702),r=i(70080),o=i(24739),s=i(48655),a=i(31175);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t{var n=i(56110)(i(9325),"Map");e.exports=n},53661:(e,t,i)=>{var n=i(63040),r=i(17670),o=i(90289),s=i(4509),a=i(72949);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t{var n=i(56110)(i(9325),"Promise");e.exports=n},76545:(e,t,i)=>{var n=i(56110)(i(9325),"Set");e.exports=n},38859:(e,t,i)=>{var n=i(53661),r=i(31380),o=i(51459);function s(e){var t=-1,i=null==e?0:e.length;for(this.__data__=new n;++t{var n=i(80079),r=i(51420),o=i(90938),s=i(63605),a=i(29817),l=i(80945);function c(e){var t=this.__data__=new n(e);this.size=t.size}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=s,c.prototype.has=a,c.prototype.set=l,e.exports=c},51873:(e,t,i)=>{var n=i(9325).Symbol;e.exports=n},37828:(e,t,i)=>{var n=i(9325).Uint8Array;e.exports=n},28303:(e,t,i)=>{var n=i(56110)(i(9325),"WeakMap");e.exports=n},79770:e=>{e.exports=function(e,t){for(var i=-1,n=null==e?0:e.length,r=0,o=[];++i{var n=i(78096),r=i(72428),o=i(56449),s=i(3656),a=i(30361),l=i(37167),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var i=o(e),h=!i&&r(e),u=!i&&!h&&s(e),d=!i&&!h&&!u&&l(e),f=i||h||u||d,p=f?n(e.length,String):[],m=p.length;for(var g in e)!t&&!c.call(e,g)||f&&("length"==g||u&&("offset"==g||"parent"==g)||d&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||a(g,m))||p.push(g);return p}},14528:e=>{e.exports=function(e,t){for(var i=-1,n=t.length,r=e.length;++i{e.exports=function(e,t){for(var i=-1,n=null==e?0:e.length;++i{var n=i(75288);e.exports=function(e,t){for(var i=e.length;i--;)if(n(e[i][0],t))return i;return-1}},82199:(e,t,i)=>{var n=i(14528),r=i(56449);e.exports=function(e,t,i){var o=t(e);return r(e)?o:n(o,i(e))}},72552:(e,t,i)=>{var n=i(51873),r=i(659),o=i(59350),s=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":s&&s in Object(e)?r(e):o(e)}},27534:(e,t,i)=>{var n=i(72552),r=i(40346);e.exports=function(e){return r(e)&&"[object Arguments]"==n(e)}},60270:(e,t,i)=>{var n=i(87068),r=i(40346);e.exports=function e(t,i,o,s,a){return t===i||(null==t||null==i||!r(t)&&!r(i)?t!=t&&i!=i:n(t,i,o,s,e,a))}},87068:(e,t,i)=>{var n=i(37217),r=i(25911),o=i(21986),s=i(50689),a=i(5861),l=i(56449),c=i(3656),h=i(37167),u="[object Arguments]",d="[object Array]",f="[object Object]",p=Object.prototype.hasOwnProperty;e.exports=function(e,t,i,m,g,v){var y=l(e),b=l(t),x=y?d:a(e),_=b?d:a(t),E=(x=x==u?f:x)==f,S=(_=_==u?f:_)==f,A=x==_;if(A&&c(e)){if(!c(t))return!1;y=!0,E=!1}if(A&&!E)return v||(v=new n),y||h(e)?r(e,t,i,m,g,v):o(e,t,x,i,m,g,v);if(!(1&i)){var w=E&&p.call(e,"__wrapped__"),T=S&&p.call(t,"__wrapped__");if(w||T){var M=w?e.value():e,C=T?t.value():t;return v||(v=new n),g(M,C,i,m,v)}}return!!A&&(v||(v=new n),s(e,t,i,m,g,v))}},45083:(e,t,i)=>{var n=i(1882),r=i(87296),o=i(23805),s=i(47473),a=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,h=l.toString,u=c.hasOwnProperty,d=RegExp("^"+h.call(u).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||r(e))&&(n(e)?d:a).test(s(e))}},4901:(e,t,i)=>{var n=i(72552),r=i(30294),o=i(40346),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&r(e.length)&&!!s[n(e)]}},88984:(e,t,i)=>{var n=i(55527),r=i(3650),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!n(e))return r(e);var t=[];for(var i in Object(e))o.call(e,i)&&"constructor"!=i&&t.push(i);return t}},78096:e=>{e.exports=function(e,t){for(var i=-1,n=Array(e);++i{var n=i(31800),r=/^\s+/;e.exports=function(e){return e?e.slice(0,n(e)+1).replace(r,""):e}},27301:e=>{e.exports=function(e){return function(t){return e(t)}}},19219:e=>{e.exports=function(e,t){return e.has(t)}},55481:(e,t,i)=>{var n=i(9325)["__core-js_shared__"];e.exports=n},25911:(e,t,i)=>{var n=i(38859),r=i(14248),o=i(19219);e.exports=function(e,t,i,s,a,l){var c=1&i,h=e.length,u=t.length;if(h!=u&&!(c&&u>h))return!1;var d=l.get(e),f=l.get(t);if(d&&f)return d==t&&f==e;var p=-1,m=!0,g=2&i?new n:void 0;for(l.set(e,t),l.set(t,e);++p{var n=i(51873),r=i(37828),o=i(75288),s=i(25911),a=i(20317),l=i(84247),c=n?n.prototype:void 0,h=c?c.valueOf:void 0;e.exports=function(e,t,i,n,c,u,d){switch(i){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!u(new r(e),new r(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var f=a;case"[object Set]":var p=1&n;if(f||(f=l),e.size!=t.size&&!p)return!1;var m=d.get(e);if(m)return m==t;n|=2,d.set(e,t);var g=s(f(e),f(t),n,c,u,d);return d.delete(e),g;case"[object Symbol]":if(h)return h.call(e)==h.call(t)}return!1}},50689:(e,t,i)=>{var n=i(50002),r=Object.prototype.hasOwnProperty;e.exports=function(e,t,i,o,s,a){var l=1&i,c=n(e),h=c.length;if(h!=n(t).length&&!l)return!1;for(var u=h;u--;){var d=c[u];if(!(l?d in t:r.call(t,d)))return!1}var f=a.get(e),p=a.get(t);if(f&&p)return f==t&&p==e;var m=!0;a.set(e,t),a.set(t,e);for(var g=l;++u{var n="object"==typeof i.g&&i.g&&i.g.Object===Object&&i.g;e.exports=n},50002:(e,t,i)=>{var n=i(82199),r=i(4664),o=i(95950);e.exports=function(e){return n(e,o,r)}},12651:(e,t,i)=>{var n=i(74218);e.exports=function(e,t){var i=e.__data__;return n(t)?i["string"==typeof t?"string":"hash"]:i.map}},56110:(e,t,i)=>{var n=i(45083),r=i(10392);e.exports=function(e,t){var i=r(e,t);return n(i)?i:void 0}},659:(e,t,i)=>{var n=i(51873),r=Object.prototype,o=r.hasOwnProperty,s=r.toString,a=n?n.toStringTag:void 0;e.exports=function(e){var t=o.call(e,a),i=e[a];try{e[a]=void 0;var n=!0}catch(e){}var r=s.call(e);return n&&(t?e[a]=i:delete e[a]),r}},4664:(e,t,i)=>{var n=i(79770),r=i(63345),o=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols,a=s?function(e){return null==e?[]:(e=Object(e),n(s(e),(function(t){return o.call(e,t)})))}:r;e.exports=a},5861:(e,t,i)=>{var n=i(55580),r=i(68223),o=i(32804),s=i(76545),a=i(28303),l=i(72552),c=i(47473),h="[object Map]",u="[object Promise]",d="[object Set]",f="[object WeakMap]",p="[object DataView]",m=c(n),g=c(r),v=c(o),y=c(s),b=c(a),x=l;(n&&x(new n(new ArrayBuffer(1)))!=p||r&&x(new r)!=h||o&&x(o.resolve())!=u||s&&x(new s)!=d||a&&x(new a)!=f)&&(x=function(e){var t=l(e),i="[object Object]"==t?e.constructor:void 0,n=i?c(i):"";if(n)switch(n){case m:return p;case g:return h;case v:return u;case y:return d;case b:return f}return t}),e.exports=x},10392:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},22032:(e,t,i)=>{var n=i(81042);e.exports=function(){this.__data__=n?n(null):{},this.size=0}},63862:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},66721:(e,t,i)=>{var n=i(81042),r=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(n){var i=t[e];return"__lodash_hash_undefined__"===i?void 0:i}return r.call(t,e)?t[e]:void 0}},12749:(e,t,i)=>{var n=i(81042),r=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return n?void 0!==t[e]:r.call(t,e)}},35749:(e,t,i)=>{var n=i(81042);e.exports=function(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=n&&void 0===t?"__lodash_hash_undefined__":t,this}},30361:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,i){var n=typeof e;return!!(i=null==i?9007199254740991:i)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},87296:(e,t,i)=>{var n,r=i(55481),o=(n=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";e.exports=function(e){return!!o&&o in e}},55527:e=>{var t=Object.prototype;e.exports=function(e){var i=e&&e.constructor;return e===("function"==typeof i&&i.prototype||t)}},63702:e=>{e.exports=function(){this.__data__=[],this.size=0}},70080:(e,t,i)=>{var n=i(26025),r=Array.prototype.splice;e.exports=function(e){var t=this.__data__,i=n(t,e);return!(i<0)&&(i==t.length-1?t.pop():r.call(t,i,1),--this.size,!0)}},24739:(e,t,i)=>{var n=i(26025);e.exports=function(e){var t=this.__data__,i=n(t,e);return i<0?void 0:t[i][1]}},48655:(e,t,i)=>{var n=i(26025);e.exports=function(e){return n(this.__data__,e)>-1}},31175:(e,t,i)=>{var n=i(26025);e.exports=function(e,t){var i=this.__data__,r=n(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this}},63040:(e,t,i)=>{var n=i(21549),r=i(80079),o=i(68223);e.exports=function(){this.size=0,this.__data__={hash:new n,map:new(o||r),string:new n}}},17670:(e,t,i)=>{var n=i(12651);e.exports=function(e){var t=n(this,e).delete(e);return this.size-=t?1:0,t}},90289:(e,t,i)=>{var n=i(12651);e.exports=function(e){return n(this,e).get(e)}},4509:(e,t,i)=>{var n=i(12651);e.exports=function(e){return n(this,e).has(e)}},72949:(e,t,i)=>{var n=i(12651);e.exports=function(e,t){var i=n(this,e),r=i.size;return i.set(e,t),this.size+=i.size==r?0:1,this}},20317:e=>{e.exports=function(e){var t=-1,i=Array(e.size);return e.forEach((function(e,n){i[++t]=[n,e]})),i}},81042:(e,t,i)=>{var n=i(56110)(Object,"create");e.exports=n},3650:(e,t,i)=>{var n=i(74335)(Object.keys,Object);e.exports=n},86009:(e,t,i)=>{e=i.nmd(e);var n=i(34840),r=t&&!t.nodeType&&t,o=r&&e&&!e.nodeType&&e,s=o&&o.exports===r&&n.process,a=function(){try{var e=o&&o.require&&o.require("util").types;return e||s&&s.binding&&s.binding("util")}catch(e){}}();e.exports=a},59350:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},74335:e=>{e.exports=function(e,t){return function(i){return e(t(i))}}},9325:(e,t,i)=>{var n=i(34840),r="object"==typeof self&&self&&self.Object===Object&&self,o=n||r||Function("return this")();e.exports=o},31380:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},51459:e=>{e.exports=function(e){return this.__data__.has(e)}},84247:e=>{e.exports=function(e){var t=-1,i=Array(e.size);return e.forEach((function(e){i[++t]=e})),i}},51420:(e,t,i)=>{var n=i(80079);e.exports=function(){this.__data__=new n,this.size=0}},90938:e=>{e.exports=function(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}},63605:e=>{e.exports=function(e){return this.__data__.get(e)}},29817:e=>{e.exports=function(e){return this.__data__.has(e)}},80945:(e,t,i)=>{var n=i(80079),r=i(68223),o=i(53661);e.exports=function(e,t){var i=this.__data__;if(i instanceof n){var s=i.__data__;if(!r||s.length<199)return s.push([e,t]),this.size=++i.size,this;i=this.__data__=new o(s)}return i.set(e,t),this.size=i.size,this}},47473:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},31800:e=>{var t=/\s/;e.exports=function(e){for(var i=e.length;i--&&t.test(e.charAt(i)););return i}},38221:(e,t,i)=>{var n=i(23805),r=i(10124),o=i(99374),s=Math.max,a=Math.min;e.exports=function(e,t,i){var l,c,h,u,d,f,p=0,m=!1,g=!1,v=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function y(t){var i=l,n=c;return l=c=void 0,p=t,u=e.apply(n,i)}function b(e){var i=e-f;return void 0===f||i>=t||i<0||g&&e-p>=h}function x(){var e=r();if(b(e))return _(e);d=setTimeout(x,function(e){var i=t-(e-f);return g?a(i,h-(e-p)):i}(e))}function _(e){return d=void 0,v&&l?y(e):(l=c=void 0,u)}function E(){var e=r(),i=b(e);if(l=arguments,c=this,f=e,i){if(void 0===d)return function(e){return p=e,d=setTimeout(x,t),m?y(e):u}(f);if(g)return clearTimeout(d),d=setTimeout(x,t),y(f)}return void 0===d&&(d=setTimeout(x,t)),u}return t=o(t)||0,n(i)&&(m=!!i.leading,h=(g="maxWait"in i)?s(o(i.maxWait)||0,t):h,v="trailing"in i?!!i.trailing:v),E.cancel=function(){void 0!==d&&clearTimeout(d),p=0,l=f=c=d=void 0},E.flush=function(){return void 0===d?u:_(r())},E}},75288:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},72428:(e,t,i)=>{var n=i(27534),r=i(40346),o=Object.prototype,s=o.hasOwnProperty,a=o.propertyIsEnumerable,l=n(function(){return arguments}())?n:function(e){return r(e)&&s.call(e,"callee")&&!a.call(e,"callee")};e.exports=l},56449:e=>{var t=Array.isArray;e.exports=t},64894:(e,t,i)=>{var n=i(1882),r=i(30294);e.exports=function(e){return null!=e&&r(e.length)&&!n(e)}},3656:(e,t,i)=>{e=i.nmd(e);var n=i(9325),r=i(89935),o=t&&!t.nodeType&&t,s=o&&e&&!e.nodeType&&e,a=s&&s.exports===o?n.Buffer:void 0,l=(a?a.isBuffer:void 0)||r;e.exports=l},2404:(e,t,i)=>{var n=i(60270);e.exports=function(e,t){return n(e,t)}},1882:(e,t,i)=>{var n=i(72552),r=i(23805);e.exports=function(e){if(!r(e))return!1;var t=n(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},30294:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},23805:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},40346:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},44394:(e,t,i)=>{var n=i(72552),r=i(40346);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==n(e)}},37167:(e,t,i)=>{var n=i(4901),r=i(27301),o=i(86009),s=o&&o.isTypedArray,a=s?r(s):n;e.exports=a},95950:(e,t,i)=>{var n=i(70695),r=i(88984),o=i(64894);e.exports=function(e){return o(e)?n(e):r(e)}},10124:(e,t,i)=>{var n=i(9325);e.exports=function(){return n.Date.now()}},63345:e=>{e.exports=function(){return[]}},89935:e=>{e.exports=function(){return!1}},99374:(e,t,i)=>{var n=i(54128),r=i(23805),o=i(44394),s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return NaN;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=n(e);var i=a.test(e);return i||l.test(e)?c(e.slice(2),i?2:8):s.test(e)?NaN:+e}},51436:e=>{function t(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}function i(e){e.pending+=1;var t=!1;return function(r){if(t)throw new Error("callback called twice");if(t=!0,e.error=e.error||r,e.pending-=1,e.waiting.length>0&&e.pending{"use strict";i.r(t),i.d(t,{UniformGroup:()=>h,getDefaultSampler:()=>c});var n,r=i(19698),o=i(26027);function s(e){switch(e){case n.f32:case n.i32:return 1;case n.vec2f:return 2;case n.vec3f:return 3;case n.vec4f:return 4;case n.mat3x3f:return 12;default:throw new Error(`Unknown uniform type: ${e}`)}}function a(e,t,i,r){switch(i){case n.f32:e.setFloat(t,r);break;case n.i32:e.setInt(t,r);break;case n.vec2f:e.setFloat2(t,r.x,r.y);break;case n.vec3f:e.setVector3(t,r);break;case n.vec4f:e.setVector4(t,r);break;case n.mat3x3f:e.setMatrix3x3(t,r);break;default:throw new Error(`Unknown uniform type: ${i}`)}}function l(e,t){const i={},n=function(e,t){let i=0;for(const n in e){const r=e[n];t&&(t[n]=i),i+=s(r)}return i}(e,i),o=Boolean(t&GPUShaderStage.FRAGMENT),a=Boolean(t&GPUShaderStage.VERTEX);return{buffer:new r.D(void 0,n,o,a),offsets:i}}function c(){return{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"linear",minFilter:"linear",mipmapFilter:"linear",lodMinClamp:0,lodMaxClamp:10,maxAnisotropy:16}}!function(e){e.f32="f32",e.i32="i32",e.vec2f="vec2f",e.vec3f="vec3f",e.vec4f="vec4f",e.mat3x3f="mat3x3f"}(n||(n={}));class h{#oo=new Map;#so=new Map;#ao=new Map;#lo;#wt;#Lt;#co;#Pt;#ho;#uo=!1;constructor(){}setDefaultTexture(e){const t=e?.createView();e!=this.#Pt&&(this.#so.forEach((e=>{!e.texture&&e.bindGroupEntry?.resource&&(e.bindGroupEntry.resource=t,this.#Lt=null)})),(0,o.el)(this.#Pt),(0,o.rL)(e),this.#Pt=e||null,this.#ho=t||null)}addUniformBuffer(e,t,i=GPUShaderStage.FRAGMENT|GPUShaderStage.VERTEX){if(this.#do(e))return;const n={uniformBufferLayout:t,uniformBufferValues:{},layoutEntry:{binding:e,visibility:i,buffer:{}},needsUpload:!0,bindGroupEntry:null,uniformBuffer:null,offsets:null};this.#oo.set(e,n),this.#fo()}addTexture(e,t,i=GPUShaderStage.FRAGMENT,n="float"){if(this.#do(e))return;const r={binding:e,visibility:i,texture:{sampleType:n}},o={texture:t,textureView:t?.createView()||null,layoutEntry:r,bindGroupEntry:null};this.#so.set(e,o),this.#fo()}addSampler(e,t=GPUShaderStage.FRAGMENT,i={addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"linear",minFilter:"linear",mipmapFilter:"linear",lodMinClamp:0,lodMaxClamp:10,maxAnisotropy:16},n={}){if(this.#do(e))return;const r={samplerDesc:i,layoutEntry:{binding:e,visibility:t,sampler:n},sampler:null,bindGroupEntry:null};this.#ao.set(e,r),this.#fo()}setUniformBufferValues(e,t=0){const i=this.#oo.get(t);if(i){for(const t in e){const n=i.uniformBufferLayout[t];n?(i.uniformBufferValues[t]=e[t],i.uniformBuffer&&a(i.uniformBuffer,i.offsets[t],n,e[t])):console.error("Uniform name not found in the UniformBufferLayout: ",t)}i.needsUpload=!0,this.#uo=!0}else console.error("Uniform buffer not found for binding: ",t)}setTexture(e,t){const i=this.#so.get(t);i?((0,o.el)(i.texture),(0,o.rL)(e),i.texture=e,i.textureView=e?.createView()||this.#ho,i.bindGroupEntry&&(i.bindGroupEntry.resource=i.textureView),this.#Lt=null):console.error("Texture not found for binding: ",t)}isAssigned(e){return void 0!==this.#po(e)}update(e){this.#wt||(this.#mo(e),this.#go(e),this.#vo(e)),this.#yo(e),this.#bo()}get layout(){return this.#wt}get bindGroup(){return this.#Lt}#go(e){for(const t of this.#oo.values()){(!t.uniformBuffer||!t.offsets)&&(this.#xo(e,t),this.#_o(t))}}#xo(e,t){const{buffer:i,offsets:n}=l(t.uniformBufferLayout,t.layoutEntry.visibility);i.setDevice(e),t.uniformBuffer=i,t.offsets=n}#_o(e){for(const t in e.uniformBufferValues){const i=e.uniformBufferLayout[t];a(e.uniformBuffer,e.offsets[t],i,e.uniformBufferValues[t]),e.uniformBuffer.upload(),e.needsUpload=!1}}#vo(e){this.#ao.forEach((t=>{t.sampler||(t.sampler=e.createSampler(t.samplerDesc))}))}#mo(e){const t=[];for(const e of this.#oo.values())t.push(e.layoutEntry);for(const e of this.#so.values())t.push(e.layoutEntry);for(const e of this.#ao.values())t.push(e.layoutEntry);this.#lo={entries:t},this.#wt=e.createBindGroupLayout(this.#lo)}#yo(e){this.#co||this.#Eo(),this.#Lt||(this.#Lt=e.createBindGroup({layout:this.#wt,entries:this.#co}))}#So(e){const t=e.uniformBuffer?.getBuffer(),i=e.textureView,n=e.sampler;return t?{buffer:t}:i||(n||null)}#Ao(e){const t={binding:e.layoutEntry.binding,resource:this.#So(e)};this.#co.push(t),e.bindGroupEntry=t}#Eo(){this.#co=[];for(const e of this.#oo.values())this.#Ao(e);for(const e of this.#so.values())e.textureView||this.#ho||console.error(`Texture is missing for binding: ${e.layoutEntry.binding}. Null textures are only allowed if a default texture is provided`),this.#Ao(e);for(const e of this.#ao.values())this.#Ao(e)}#wo(){this.#lo=null,this.#wt=null,this.#Lt=null,this.#oo.forEach((e=>{e.bindGroupEntry=null,e.uniformBuffer=null,e.offsets=null})),this.#so.forEach((e=>{e.bindGroupEntry=null})),this.#ao.forEach((e=>{e.bindGroupEntry=null}))}#fo(){this.#wo()}#po(e){const t=this.#oo.get(e),i=this.#so.get(e),n=this.#ao.get(e);return t||i||n}#do(e){return!!this.#po(e)&&(console.error("Binding ",e," is assigned."),!0)}#bo(){if(this.#uo){for(const e of this.#oo.values())e.needsUpload&&e.uniformBuffer.upload();this.#uo=!1}}}},65796:e=>{"use strict";e.exports="\n//https://www.shadertoy.com/view/ltc3zl\n//https://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/\n\n//Packs a float in the range 0-1 to an RGBA8\nfn packDepth( depth: f32 ) -> vec4f {\n var enc = vec4f(1.0, 255.0, 65025.0, 16581375.0) * depth;\n enc = fract(enc);\n enc -= enc.yzww * vec4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);\n return enc;\n}\n\n//Used to unpack depth value when input depth texture is RGBA8\nfn unpackDepth( rgba_depth: vec4f ) -> f32 {\n return dot( rgba_depth, vec4(1.0, 1.0/255.0, 1.0/65025.0, 1.0/16581375.0) );\n}\n\n//Packs a float in the range 0-1 to an RGB8\nfn packDepth3( depth: f32 ) -> vec3f {\n var enc = vec3f(1.0, 255.0, 65025.0) * depth;\n enc = fract(enc);\n enc -= vec3f(enc.yz, 0.0) * vec3f(1.0/255.0 ,1.0/255.0, 0.0);\n return enc;\n}\n\n//Used to unpack depth value when input depth texture is RGB8\nfn unpackDepth3( rgba_depth: vec3f ) -> f32 {\n return dot( rgba_depth, vec3f(1.0, 1.0/255.0, 1.0/65025.0) );\n}\n\n//Packs depth in the range 0-1 in an RGB10\nfn packDepth10( depth: f32 ) -> vec3f {\n var enc = vec3f(1.0, 1023.0, 1023.0 * 1023.0) * depth;\n enc = fract(enc);\n enc -= vec3f(enc.yz, 0.0) * vec3f(1.0/1023.0 ,1.0/1023.0, 0.0);\n return enc;\n}\n\n//Used to unpack depth value when input depth texture is RGB10A2\nfn unpackDepth10( rgba_depth: vec3f ) -> f32 {\n return dot( rgba_depth, vec3f(1.0, 1.0/1023.0, 1.0/(1023.0*1023.0)) );\n}\n\n//Pack view space normal for use in rgb10unorm target\n//Packing the sign bits into the spare B component gives us\n//an extra bit of precision, until we need to pack something else into\n//that component. The difference in the SSAO output is not really visible\nfn packNormal10( normal: vec3f) -> vec3f {\n/*\n\t//we keep the absolute values of the x and y components (z is derived)\n\tvar res = abs(normal);\n\n\t//pack the sign bits of the x and y components into the z component\n\tvar sxIsNeg = clamp(-sign(res.x), 0.0, 1.0);\n\tvar syIsNeg = clamp(-sign(res.y), 0.0, 1.0);\n\tres.z = (sxIsNeg + 2.0 * syIsNeg) * 0.25;\n*/\n\tvar res = normal * 0.5 + vec3f(0.5);\n\n\treturn res;\n}\n\nfn unpackNormal10( value: vec3f) -> vec3f {\n/*\n\tvar res = value;\n\tvar signs = value.z * 4.0;\n\t//There's probably more efficient way to retrieve this\n\tif (signs >= 2.0) {\n\t\tres.y = -res.y;\n\t}\n\tif (signs == 1.0 || signs == 3.0) {\n\t\tres.x = -res.x;\n\t}\n\tres.z = sqrt(1.0 - dot(res.xy, res.xy));\n*/\n\tvar res = (value - vec3f(0.5)) * 2.0;\n\n\treturn res;\n}\n"},43851:e=>{"use strict";e.exports="\nstruct VertexOutput {\n\t@builtin(position) position: vec4f,\n\t@location(0) @interpolate(linear) vUv: vec2f\n}\n\n@vertex\nfn main(\n @builtin(vertex_index) VertexIndex : u32\n) -> VertexOutput {\n\n\t//Instead of using a screen quad we use a large triangle -- this is slightly\n\t//faster (~6% measured in our specific case), due to better cache coherency. See this article:\n\t//http://michaldrobot.com/2014/04/01/gcn-execution-patterns-in-full-screen-passes/\n\n\tconst pos = array(\n\t\tvec2f(-1.0, -1.0),\n\t\tvec2f( 3.0, -1.0),\n\t\tvec2f(-1.0, 3.0),\n\t);\n\tconst uv = array(\n\t\tvec2f(0.0, 0.0),\n\t\tvec2f(2.0, 0.0),\n\t\tvec2f(0.0, 2.0),\n\t);\n\n\tvar output: VertexOutput;\n\toutput.position = vec4f(pos[VertexIndex], 0.0, 1.0);\n\toutput.vUv = uv[VertexIndex];\n\n\treturn output;\n}\n\n@vertex\nfn mainFlipY(\n @builtin(vertex_index) VertexIndex : u32\n) -> VertexOutput {\n\n\t//Instead of using a screen quad we use a large triangle -- this is slightly\n\t//faster (~6% measured in our specific case), due to better cache coherency. See this article:\n\t//http://michaldrobot.com/2014/04/01/gcn-execution-patterns-in-full-screen-passes/\n\n\tconst pos = array(\n\t\tvec2f(-1.0, -1.0),\n\t\tvec2f( 3.0, -1.0),\n\t\tvec2f(-1.0, 3.0),\n\t);\n\tconst uv = array(\n\t\tvec2f(0.0, 1.0),\n\t\tvec2f(2.0, 1.0),\n\t\tvec2f(0.0, -1.0),\n\t);\n\n\tvar output: VertexOutput;\n\toutput.position = vec4f(pos[VertexIndex], 0.0, 1.0);\n\toutput.vUv = uv[VertexIndex];\n\n\treturn output;\n}"},86059:e=>{"use strict";e.exports="DELETED_WORKERNODE"},39709:()=>{},50684:()=>{},9631:()=>{},18215:()=>{},90315:()=>{},79306:(e,t,i)=>{"use strict";var n=i(94901),r=i(16823),o=TypeError;e.exports=function(e){if(n(e))return e;throw new o(r(e)+" is not a function")}},36194:(e,t,i)=>{"use strict";var n=i(72248).has;e.exports=function(e){return n(e),e}},73506:(e,t,i)=>{"use strict";var n=i(13925),r=String,o=TypeError;e.exports=function(e){if(n(e))return e;throw new o("Can't set "+r(e)+" as a prototype")}},97080:(e,t,i)=>{"use strict";var n=i(94402).has;e.exports=function(e){return n(e),e}},76557:(e,t,i)=>{"use strict";var n=i(44995).has;e.exports=function(e){return n(e),e}},23755:(e,t,i)=>{"use strict";var n=i(88205).has;e.exports=function(e){return n(e),e}},6469:(e,t,i)=>{"use strict";var n=i(78227),r=i(2360),o=i(24913).f,s=n("unscopables"),a=Array.prototype;void 0===a[s]&&o(a,s,{configurable:!0,value:r(null)}),e.exports=function(e){a[s][e]=!0}},90679:(e,t,i)=>{"use strict";var n=i(1625),r=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw new r("Incorrect invocation")}},28551:(e,t,i)=>{"use strict";var n=i(20034),r=String,o=TypeError;e.exports=function(e){if(n(e))return e;throw new o(r(e)+" is not an object")}},77811:e=>{"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},15652:(e,t,i)=>{"use strict";var n=i(79039);e.exports=n((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},94644:(e,t,i)=>{"use strict";var n,r,o,s=i(77811),a=i(43724),l=i(24475),c=i(94901),h=i(20034),u=i(39297),d=i(36955),f=i(16823),p=i(66699),m=i(36840),g=i(62106),v=i(1625),y=i(42787),b=i(52967),x=i(78227),_=i(33392),E=i(91181),S=E.enforce,A=E.get,w=l.Int8Array,T=w&&w.prototype,M=l.Uint8ClampedArray,C=M&&M.prototype,P=w&&y(w),D=T&&y(T),L=Object.prototype,I=l.TypeError,R=x("toStringTag"),O=_("TYPED_ARRAY_TAG"),N="TypedArrayConstructor",F=s&&!!b&&"Opera"!==d(l.opera),U=!1,B={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},k={BigInt64Array:8,BigUint64Array:8},V=function(e){var t=y(e);if(h(t)){var i=A(t);return i&&u(i,N)?i[N]:V(t)}},G=function(e){if(!h(e))return!1;var t=d(e);return u(B,t)||u(k,t)};for(n in B)(o=(r=l[n])&&r.prototype)?S(o)[N]=r:F=!1;for(n in k)(o=(r=l[n])&&r.prototype)&&(S(o)[N]=r);if((!F||!c(P)||P===Function.prototype)&&(P=function(){throw new I("Incorrect invocation")},F))for(n in B)l[n]&&b(l[n],P);if((!F||!D||D===L)&&(D=P.prototype,F))for(n in B)l[n]&&b(l[n].prototype,D);if(F&&y(C)!==D&&b(C,D),a&&!u(D,R))for(n in U=!0,g(D,R,{configurable:!0,get:function(){return h(this)?this[O]:void 0}}),B)l[n]&&p(l[n],O,n);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:F,TYPED_ARRAY_TAG:U&&O,aTypedArray:function(e){if(G(e))return e;throw new I("Target is not a typed array")},aTypedArrayConstructor:function(e){if(c(e)&&(!b||v(P,e)))return e;throw new I(f(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,i,n){if(a){if(i)for(var r in B){var o=l[r];if(o&&u(o.prototype,e))try{delete o.prototype[e]}catch(i){try{o.prototype[e]=t}catch(e){}}}D[e]&&!i||m(D,e,i?t:F&&T[e]||t,n)}},exportTypedArrayStaticMethod:function(e,t,i){var n,r;if(a){if(b){if(i)for(n in B)if((r=l[n])&&u(r,e))try{delete r[e]}catch(e){}if(P[e]&&!i)return;try{return m(P,e,i?t:F&&P[e]||t)}catch(e){}}for(n in B)!(r=l[n])||r[e]&&!i||m(r,e,t)}},getTypedArrayConstructor:V,isView:function(e){if(!h(e))return!1;var t=d(e);return"DataView"===t||u(B,t)||u(k,t)},isTypedArray:G,TypedArray:P,TypedArrayPrototype:D}},19617:(e,t,i)=>{"use strict";var n=i(25397),r=i(35610),o=i(26198),s=function(e){return function(t,i,s){var a=n(t),l=o(a);if(0===l)return!e&&-1;var c,h=r(s,l);if(e&&i!=i){for(;l>h;)if((c=a[h++])!=c)return!0}else for(;l>h;h++)if((e||h in a)&&a[h]===i)return e||h||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},59213:(e,t,i)=>{"use strict";var n=i(76080),r=i(79504),o=i(47055),s=i(48981),a=i(26198),l=i(1469),c=r([].push),h=function(e){var t=1===e,i=2===e,r=3===e,h=4===e,u=6===e,d=7===e,f=5===e||u;return function(p,m,g,v){for(var y,b,x=s(p),_=o(x),E=a(_),S=n(m,g),A=0,w=v||l,T=t?w(p,E):i||d?w(p,0):void 0;E>A;A++)if((f||A in _)&&(b=S(y=_[A],A,x),e))if(t)T[A]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return A;case 2:c(T,y)}else switch(e){case 4:return!1;case 7:c(T,y)}return u?-1:r||h?h:T}};e.exports={forEach:h(0),map:h(1),filter:h(2),some:h(3),every:h(4),find:h(5),findIndex:h(6),filterReject:h(7)}},67680:(e,t,i)=>{"use strict";var n=i(79504);e.exports=n([].slice)},87433:(e,t,i)=>{"use strict";var n=i(34376),r=i(33517),o=i(20034),s=i(78227)("species"),a=Array;e.exports=function(e){var t;return n(e)&&(t=e.constructor,(r(t)&&(t===a||n(t.prototype))||o(t)&&null===(t=t[s]))&&(t=void 0)),void 0===t?a:t}},1469:(e,t,i)=>{"use strict";var n=i(87433);e.exports=function(e,t){return new(n(e))(0===t?0:t)}},79565:(e,t,i)=>{"use strict";var n=i(79504),r=i(79306),o=i(64117),s=i(26198),a=i(48981),l=i(72248),c=i(26223),h=l.Map,u=l.has,d=l.set,f=n([].push);e.exports=function(e){var t,i,n,l=a(this),p=s(l),m=[],g=new h,v=o(e)?function(e){return e}:r(e);for(t=0;t{"use strict";var n=i(78227)("iterator"),r=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){r=!0}};s[n]=function(){return this},Array.from(s,(function(){throw 2}))}catch(e){}e.exports=function(e,t){try{if(!t&&!r)return!1}catch(e){return!1}var i=!1;try{var o={};o[n]=function(){return{next:function(){return{done:i=!0}}}},e(o)}catch(e){}return i}},44576:(e,t,i)=>{"use strict";var n=i(79504),r=n({}.toString),o=n("".slice);e.exports=function(e){return o(r(e),8,-1)}},36955:(e,t,i)=>{"use strict";var n=i(92140),r=i(94901),o=i(44576),s=i(78227)("toStringTag"),a=Object,l="Arguments"===o(function(){return arguments}());e.exports=n?o:function(e){var t,i,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,t){try{return e[t]}catch(e){}}(t=a(e),s))?i:l?o(t):"Object"===(n=o(t))&&r(t.callee)?"Arguments":n}},70933:(e,t,i)=>{"use strict";var n=i(76080),r=i(28551),o=i(48981),s=i(72652);e.exports=function(e,t,i){return function(a){var l=o(a),c=arguments.length,h=c>1?arguments[1]:void 0,u=void 0!==h,d=u?n(h,c>2?arguments[2]:void 0):void 0,f=new e,p=0;return s(l,(function(e){var n=u?d(e,p++):e;i?t(f,r(n)[0],n[1]):t(f,n)})),f}}},87500:(e,t,i)=>{"use strict";var n=i(28551);e.exports=function(e,t,i){return function(){for(var r=new e,o=arguments.length,s=0;s{"use strict";var n=i(2360),r=i(62106),o=i(56279),s=i(76080),a=i(90679),l=i(64117),c=i(72652),h=i(51088),u=i(62529),d=i(87633),f=i(43724),p=i(3451).fastKey,m=i(91181),g=m.set,v=m.getterFor;e.exports={getConstructor:function(e,t,i,h){var u=e((function(e,r){a(e,d),g(e,{type:t,index:n(null),first:void 0,last:void 0,size:0}),f||(e.size=0),l(r)||c(r,e[h],{that:e,AS_ENTRIES:i})})),d=u.prototype,m=v(t),y=function(e,t,i){var n,r,o=m(e),s=b(e,t);return s?s.value=i:(o.last=s={index:r=p(t,!0),key:t,value:i,previous:n=o.last,next:void 0,removed:!1},o.first||(o.first=s),n&&(n.next=s),f?o.size++:e.size++,"F"!==r&&(o.index[r]=s)),e},b=function(e,t){var i,n=m(e),r=p(t);if("F"!==r)return n.index[r];for(i=n.first;i;i=i.next)if(i.key===t)return i};return o(d,{clear:function(){for(var e=m(this),t=e.first;t;)t.removed=!0,t.previous&&(t.previous=t.previous.next=void 0),t=t.next;e.first=e.last=void 0,e.index=n(null),f?e.size=0:this.size=0},delete:function(e){var t=this,i=m(t),n=b(t,e);if(n){var r=n.next,o=n.previous;delete i.index[n.index],n.removed=!0,o&&(o.next=r),r&&(r.previous=o),i.first===n&&(i.first=r),i.last===n&&(i.last=o),f?i.size--:t.size--}return!!n},forEach:function(e){for(var t,i=m(this),n=s(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:i.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!b(this,e)}}),o(d,i?{get:function(e){var t=b(this,e);return t&&t.value},set:function(e,t){return y(this,0===e?0:e,t)}}:{add:function(e){return y(this,e=0===e?0:e,e)}}),f&&r(d,"size",{configurable:!0,get:function(){return m(this).size}}),u},setStrong:function(e,t,i){var n=t+" Iterator",r=v(t),o=v(n);h(e,t,(function(e,t){g(this,{type:n,target:e,state:r(e),kind:t,last:void 0})}),(function(){for(var e=o(this),t=e.kind,i=e.last;i&&i.removed;)i=i.previous;return e.target&&(e.last=i=i?i.next:e.state.first)?u("keys"===t?i.key:"values"===t?i.value:[i.key,i.value],!1):(e.target=void 0,u(void 0,!0))}),i?"entries":"values",!i,!0),d(t)}}},91625:(e,t,i)=>{"use strict";var n=i(79504),r=i(56279),o=i(3451).getWeakData,s=i(90679),a=i(28551),l=i(64117),c=i(20034),h=i(72652),u=i(59213),d=i(39297),f=i(91181),p=f.set,m=f.getterFor,g=u.find,v=u.findIndex,y=n([].splice),b=0,x=function(e){return e.frozen||(e.frozen=new _)},_=function(){this.entries=[]},E=function(e,t){return g(e.entries,(function(e){return e[0]===t}))};_.prototype={get:function(e){var t=E(this,e);if(t)return t[1]},has:function(e){return!!E(this,e)},set:function(e,t){var i=E(this,e);i?i[1]=t:this.entries.push([e,t])},delete:function(e){var t=v(this.entries,(function(t){return t[0]===e}));return~t&&y(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,i,n){var u=e((function(e,r){s(e,f),p(e,{type:t,id:b++,frozen:void 0}),l(r)||h(r,e[n],{that:e,AS_ENTRIES:i})})),f=u.prototype,g=m(t),v=function(e,t,i){var n=g(e),r=o(a(t),!0);return!0===r?x(n).set(t,i):r[n.id]=i,e};return r(f,{delete:function(e){var t=g(this);if(!c(e))return!1;var i=o(e);return!0===i?x(t).delete(e):i&&d(i,t.id)&&delete i[t.id]},has:function(e){var t=g(this);if(!c(e))return!1;var i=o(e);return!0===i?x(t).has(e):i&&d(i,t.id)}}),r(f,i?{get:function(e){var t=g(this);if(c(e)){var i=o(e);return!0===i?x(t).get(e):i?i[t.id]:void 0}},set:function(e,t){return v(this,e,t)}}:{add:function(e){return v(this,e,!0)}}),u}}},16468:(e,t,i)=>{"use strict";var n=i(46518),r=i(24475),o=i(79504),s=i(92796),a=i(36840),l=i(3451),c=i(72652),h=i(90679),u=i(94901),d=i(64117),f=i(20034),p=i(79039),m=i(84428),g=i(10687),v=i(23167);e.exports=function(e,t,i){var y=-1!==e.indexOf("Map"),b=-1!==e.indexOf("Weak"),x=y?"set":"add",_=r[e],E=_&&_.prototype,S=_,A={},w=function(e){var t=o(E[e]);a(E,e,"add"===e?function(e){return t(this,0===e?0:e),this}:"delete"===e?function(e){return!(b&&!f(e))&&t(this,0===e?0:e)}:"get"===e?function(e){return b&&!f(e)?void 0:t(this,0===e?0:e)}:"has"===e?function(e){return!(b&&!f(e))&&t(this,0===e?0:e)}:function(e,i){return t(this,0===e?0:e,i),this})};if(s(e,!u(_)||!(b||E.forEach&&!p((function(){(new _).entries().next()})))))S=i.getConstructor(t,e,y,x),l.enable();else if(s(e,!0)){var T=new S,M=T[x](b?{}:-0,1)!==T,C=p((function(){T.has(1)})),P=m((function(e){new _(e)})),D=!b&&p((function(){for(var e=new _,t=5;t--;)e[x](t,t);return!e.has(-0)}));P||((S=t((function(e,t){h(e,E);var i=v(new _,e,S);return d(t)||c(t,i[x],{that:i,AS_ENTRIES:y}),i}))).prototype=E,E.constructor=S),(C||D)&&(w("delete"),w("has"),y&&w("get")),(D||M)&&w(x),b&&E.clear&&delete E.clear}return A[e]=S,n({global:!0,constructor:!0,forced:S!==_},A),g(S,e),b||i.setStrong(S,e,y),S}},59323:(e,t,i)=>{"use strict";i(36033),i(73772);var n=i(97751),r=i(2360),o=i(20034),s=Object,a=TypeError,l=n("Map"),c=n("WeakMap"),h=function(){this.object=null,this.symbol=null,this.primitives=null,this.objectsByIndex=r(null)};h.prototype.get=function(e,t){return this[e]||(this[e]=t())},h.prototype.next=function(e,t,i){var n=i?this.objectsByIndex[e]||(this.objectsByIndex[e]=new c):this.primitives||(this.primitives=new l),r=n.get(t);return r||n.set(t,r=new h),r};var u=new h;e.exports=function(){var e,t,i=u,n=arguments.length;for(e=0;e{"use strict";var n=i(39297),r=i(35031),o=i(77347),s=i(24913);e.exports=function(e,t,i){for(var a=r(t),l=s.f,c=o.f,h=0;h{"use strict";var n=i(79039);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},62529:e=>{"use strict";e.exports=function(e,t){return{value:e,done:t}}},66699:(e,t,i)=>{"use strict";var n=i(43724),r=i(24913),o=i(6980);e.exports=n?function(e,t,i){return r.f(e,t,o(1,i))}:function(e,t,i){return e[t]=i,e}},6980:e=>{"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},62106:(e,t,i)=>{"use strict";var n=i(50283),r=i(24913);e.exports=function(e,t,i){return i.get&&n(i.get,t,{getter:!0}),i.set&&n(i.set,t,{setter:!0}),r.f(e,t,i)}},36840:(e,t,i)=>{"use strict";var n=i(94901),r=i(24913),o=i(50283),s=i(39433);e.exports=function(e,t,i,a){a||(a={});var l=a.enumerable,c=void 0!==a.name?a.name:t;if(n(i)&&o(i,c,a),a.global)l?e[t]=i:s(t,i);else{try{a.unsafe?e[t]&&(l=!0):delete e[t]}catch(e){}l?e[t]=i:r.f(e,t,{value:i,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return e}},56279:(e,t,i)=>{"use strict";var n=i(36840);e.exports=function(e,t,i){for(var r in t)n(e,r,t[r],i);return e}},39433:(e,t,i)=>{"use strict";var n=i(24475),r=Object.defineProperty;e.exports=function(e,t){try{r(n,e,{value:t,configurable:!0,writable:!0})}catch(i){n[e]=t}return t}},43724:(e,t,i)=>{"use strict";var n=i(79039);e.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:(e,t,i)=>{"use strict";var n=i(24475),r=i(20034),o=n.document,s=r(o)&&r(o.createElement);e.exports=function(e){return s?o.createElement(e):{}}},6763:e=>{"use strict";e.exports="function"==typeof Bun&&Bun&&"string"==typeof Bun.version},48119:(e,t,i)=>{"use strict";var n=i(79392);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},19088:(e,t,i)=>{"use strict";var n=i(24475),r=i(44576);e.exports="process"===r(n.process)},79392:e=>{"use strict";e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},77388:(e,t,i)=>{"use strict";var n,r,o=i(24475),s=i(79392),a=o.process,l=o.Deno,c=a&&a.versions||l&&l.version,h=c&&c.v8;h&&(r=(n=h.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!r&&s&&(!(n=s.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=s.match(/Chrome\/(\d+)/))&&(r=+n[1]),e.exports=r},88727:e=>{"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},46518:(e,t,i)=>{"use strict";var n=i(24475),r=i(77347).f,o=i(66699),s=i(36840),a=i(39433),l=i(77740),c=i(92796);e.exports=function(e,t){var i,h,u,d,f,p=e.target,m=e.global,g=e.stat;if(i=m?n:g?n[p]||a(p,{}):n[p]&&n[p].prototype)for(h in t){if(d=t[h],u=e.dontCallGetSet?(f=r(i,h))&&f.value:i[h],!c(m?h:p+(g?".":"#")+h,e.forced)&&void 0!==u){if(typeof d==typeof u)continue;l(d,u)}(e.sham||u&&u.sham)&&o(d,"sham",!0),s(i,h,d,e)}}},79039:e=>{"use strict";e.exports=function(e){try{return!!e()}catch(e){return!0}}},92744:(e,t,i)=>{"use strict";var n=i(79039);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},18745:(e,t,i)=>{"use strict";var n=i(40616),r=Function.prototype,o=r.apply,s=r.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?s.bind(o):function(){return s.apply(o,arguments)})},76080:(e,t,i)=>{"use strict";var n=i(27476),r=i(79306),o=i(40616),s=n(n.bind);e.exports=function(e,t){return r(e),void 0===t?e:o?s(e,t):function(){return e.apply(t,arguments)}}},40616:(e,t,i)=>{"use strict";var n=i(79039);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},69565:(e,t,i)=>{"use strict";var n=i(40616),r=Function.prototype.call;e.exports=n?r.bind(r):function(){return r.apply(r,arguments)}},10350:(e,t,i)=>{"use strict";var n=i(43724),r=i(39297),o=Function.prototype,s=n&&Object.getOwnPropertyDescriptor,a=r(o,"name"),l=a&&"something"===function(){}.name,c=a&&(!n||n&&s(o,"name").configurable);e.exports={EXISTS:a,PROPER:l,CONFIGURABLE:c}},46706:(e,t,i)=>{"use strict";var n=i(79504),r=i(79306);e.exports=function(e,t,i){try{return n(r(Object.getOwnPropertyDescriptor(e,t)[i]))}catch(e){}}},27476:(e,t,i)=>{"use strict";var n=i(44576),r=i(79504);e.exports=function(e){if("Function"===n(e))return r(e)}},79504:(e,t,i)=>{"use strict";var n=i(40616),r=Function.prototype,o=r.call,s=n&&r.bind.bind(o,o);e.exports=n?s:function(e){return function(){return o.apply(e,arguments)}}},97751:(e,t,i)=>{"use strict";var n=i(24475),r=i(94901);e.exports=function(e,t){return arguments.length<2?(i=n[e],r(i)?i:void 0):n[e]&&n[e][t];var i}},1767:e=>{"use strict";e.exports=function(e){return{iterator:e,next:e.next,done:!1}}},50851:(e,t,i)=>{"use strict";var n=i(36955),r=i(55966),o=i(64117),s=i(26269),a=i(78227)("iterator");e.exports=function(e){if(!o(e))return r(e,a)||r(e,"@@iterator")||s[n(e)]}},70081:(e,t,i)=>{"use strict";var n=i(69565),r=i(79306),o=i(28551),s=i(16823),a=i(50851),l=TypeError;e.exports=function(e,t){var i=arguments.length<2?a(e):t;if(r(i))return o(n(i,e));throw new l(s(e)+" is not iterable")}},55966:(e,t,i)=>{"use strict";var n=i(79306),r=i(64117);e.exports=function(e,t){var i=e[t];return r(i)?void 0:n(i)}},83789:(e,t,i)=>{"use strict";var n=i(79306),r=i(28551),o=i(69565),s=i(91291),a=i(1767),l="Invalid size",c=RangeError,h=TypeError,u=Math.max,d=function(e,t){this.set=e,this.size=u(t,0),this.has=n(e.has),this.keys=n(e.keys)};d.prototype={getIterator:function(){return a(r(o(this.keys,this.set)))},includes:function(e){return o(this.has,this.set,e)}},e.exports=function(e){r(e);var t=+e.size;if(t!=t)throw new h(l);var i=s(t);if(i<0)throw new c(l);return new d(e,i)}},24475:function(e,t,i){"use strict";var n=function(e){return e&&e.Math===Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof i.g&&i.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},39297:(e,t,i)=>{"use strict";var n=i(79504),r=i(48981),o=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return o(r(e),t)}},30421:e=>{"use strict";e.exports={}},90757:e=>{"use strict";e.exports=function(e,t){try{1===arguments.length?console.error(e):console.error(e,t)}catch(e){}}},20397:(e,t,i)=>{"use strict";var n=i(97751);e.exports=n("document","documentElement")},35917:(e,t,i)=>{"use strict";var n=i(43724),r=i(79039),o=i(4055);e.exports=!n&&!r((function(){return 7!==Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},47055:(e,t,i)=>{"use strict";var n=i(79504),r=i(79039),o=i(44576),s=Object,a=n("".split);e.exports=r((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"===o(e)?a(e,""):s(e)}:s},23167:(e,t,i)=>{"use strict";var n=i(94901),r=i(20034),o=i(52967);e.exports=function(e,t,i){var s,a;return o&&n(s=t.constructor)&&s!==i&&r(a=s.prototype)&&a!==i.prototype&&o(e,a),e}},33706:(e,t,i)=>{"use strict";var n=i(79504),r=i(94901),o=i(77629),s=n(Function.toString);r(o.inspectSource)||(o.inspectSource=function(e){return s(e)}),e.exports=o.inspectSource},3451:(e,t,i)=>{"use strict";var n=i(46518),r=i(79504),o=i(30421),s=i(20034),a=i(39297),l=i(24913).f,c=i(38480),h=i(10298),u=i(34124),d=i(33392),f=i(92744),p=!1,m=d("meta"),g=0,v=function(e){l(e,m,{value:{objectID:"O"+g++,weakData:{}}})},y=e.exports={enable:function(){y.enable=function(){},p=!0;var e=c.f,t=r([].splice),i={};i[m]=1,e(i).length&&(c.f=function(i){for(var n=e(i),r=0,o=n.length;r{"use strict";var n,r,o,s=i(58622),a=i(24475),l=i(20034),c=i(66699),h=i(39297),u=i(77629),d=i(66119),f=i(30421),p="Object already initialized",m=a.TypeError,g=a.WeakMap;if(s||u.state){var v=u.state||(u.state=new g);v.get=v.get,v.has=v.has,v.set=v.set,n=function(e,t){if(v.has(e))throw new m(p);return t.facade=e,v.set(e,t),t},r=function(e){return v.get(e)||{}},o=function(e){return v.has(e)}}else{var y=d("state");f[y]=!0,n=function(e,t){if(h(e,y))throw new m(p);return t.facade=e,c(e,y,t),t},r=function(e){return h(e,y)?e[y]:{}},o=function(e){return h(e,y)}}e.exports={set:n,get:r,has:o,enforce:function(e){return o(e)?r(e):n(e,{})},getterFor:function(e){return function(t){var i;if(!l(t)||(i=r(t)).type!==e)throw new m("Incompatible receiver, "+e+" required");return i}}}},44209:(e,t,i)=>{"use strict";var n=i(78227),r=i(26269),o=n("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||s[o]===e)}},34376:(e,t,i)=>{"use strict";var n=i(44576);e.exports=Array.isArray||function(e){return"Array"===n(e)}},94901:e=>{"use strict";var t="object"==typeof document&&document.all;e.exports=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},33517:(e,t,i)=>{"use strict";var n=i(79504),r=i(79039),o=i(94901),s=i(36955),a=i(97751),l=i(33706),c=function(){},h=a("Reflect","construct"),u=/^\s*(?:class|function)\b/,d=n(u.exec),f=!u.test(c),p=function(e){if(!o(e))return!1;try{return h(c,[],e),!0}catch(e){return!1}},m=function(e){if(!o(e))return!1;switch(s(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return f||!!d(u,l(e))}catch(e){return!0}};m.sham=!0,e.exports=!h||r((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?m:p},92796:(e,t,i)=>{"use strict";var n=i(79039),r=i(94901),o=/#|\.prototype\./,s=function(e,t){var i=l[a(e)];return i===h||i!==c&&(r(t)?n(t):!!t)},a=s.normalize=function(e){return String(e).replace(o,".").toLowerCase()},l=s.data={},c=s.NATIVE="N",h=s.POLYFILL="P";e.exports=s},31563:(e,t,i)=>{"use strict";var n=i(36955),r=i(39297),o=i(64117),s=i(78227),a=i(26269),l=s("iterator"),c=Object;e.exports=function(e){if(o(e))return!1;var t=c(e);return void 0!==t[l]||"@@iterator"in t||r(a,n(t))}},64117:e=>{"use strict";e.exports=function(e){return null==e}},20034:(e,t,i)=>{"use strict";var n=i(94901);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},13925:(e,t,i)=>{"use strict";var n=i(20034);e.exports=function(e){return n(e)||null===e}},96395:e=>{"use strict";e.exports=!1},10757:(e,t,i)=>{"use strict";var n=i(97751),r=i(94901),o=i(1625),s=i(7040),a=Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return r(t)&&o(t.prototype,a(e))}},40507:(e,t,i)=>{"use strict";var n=i(69565);e.exports=function(e,t,i){for(var r,o,s=i?e:e.iterator,a=e.next;!(r=n(a,s)).done;)if(void 0!==(o=t(r.value)))return o}},72652:(e,t,i)=>{"use strict";var n=i(76080),r=i(69565),o=i(28551),s=i(16823),a=i(44209),l=i(26198),c=i(1625),h=i(70081),u=i(50851),d=i(9539),f=TypeError,p=function(e,t){this.stopped=e,this.result=t},m=p.prototype;e.exports=function(e,t,i){var g,v,y,b,x,_,E,S=i&&i.that,A=!(!i||!i.AS_ENTRIES),w=!(!i||!i.IS_RECORD),T=!(!i||!i.IS_ITERATOR),M=!(!i||!i.INTERRUPTED),C=n(t,S),P=function(e){return g&&d(g,"normal",e),new p(!0,e)},D=function(e){return A?(o(e),M?C(e[0],e[1],P):C(e[0],e[1])):M?C(e,P):C(e)};if(w)g=e.iterator;else if(T)g=e;else{if(!(v=u(e)))throw new f(s(e)+" is not iterable");if(a(v)){for(y=0,b=l(e);b>y;y++)if((x=D(e[y]))&&c(m,x))return x;return new p(!1)}g=h(e,v)}for(_=w?e.next:g.next;!(E=r(_,g)).done;){try{x=D(E.value)}catch(e){d(g,"throw",e)}if("object"==typeof x&&x&&c(m,x))return x}return new p(!1)}},9539:(e,t,i)=>{"use strict";var n=i(69565),r=i(28551),o=i(55966);e.exports=function(e,t,i){var s,a;r(e);try{if(!(s=o(e,"return"))){if("throw"===t)throw i;return i}s=n(s,e)}catch(e){a=!0,s=e}if("throw"===t)throw i;if(a)throw s;return r(s),i}},33994:(e,t,i)=>{"use strict";var n=i(57657).IteratorPrototype,r=i(2360),o=i(6980),s=i(10687),a=i(26269),l=function(){return this};e.exports=function(e,t,i,c){var h=t+" Iterator";return e.prototype=r(n,{next:o(+!c,i)}),s(e,h,!1,!0),a[h]=l,e}},51088:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(96395),s=i(10350),a=i(94901),l=i(33994),c=i(42787),h=i(52967),u=i(10687),d=i(66699),f=i(36840),p=i(78227),m=i(26269),g=i(57657),v=s.PROPER,y=s.CONFIGURABLE,b=g.IteratorPrototype,x=g.BUGGY_SAFARI_ITERATORS,_=p("iterator"),E="keys",S="values",A="entries",w=function(){return this};e.exports=function(e,t,i,s,p,g,T){l(i,t,s);var M,C,P,D=function(e){if(e===p&&N)return N;if(!x&&e&&e in R)return R[e];switch(e){case E:case S:case A:return function(){return new i(this,e)}}return function(){return new i(this)}},L=t+" Iterator",I=!1,R=e.prototype,O=R[_]||R["@@iterator"]||p&&R[p],N=!x&&O||D(p),F="Array"===t&&R.entries||O;if(F&&(M=c(F.call(new e)))!==Object.prototype&&M.next&&(o||c(M)===b||(h?h(M,b):a(M[_])||f(M,_,w)),u(M,L,!0,!0),o&&(m[L]=w)),v&&p===S&&O&&O.name!==S&&(!o&&y?d(R,"name",S):(I=!0,N=function(){return r(O,this)})),p)if(C={values:D(S),keys:g?N:D(E),entries:D(A)},T)for(P in C)(x||I||!(P in R))&&f(R,P,C[P]);else n({target:t,proto:!0,forced:x||I},C);return o&&!T||R[_]===N||f(R,_,N,{name:p}),m[t]=N,C}},57657:(e,t,i)=>{"use strict";var n,r,o,s=i(79039),a=i(94901),l=i(20034),c=i(2360),h=i(42787),u=i(36840),d=i(78227),f=i(96395),p=d("iterator"),m=!1;[].keys&&("next"in(o=[].keys())?(r=h(h(o)))!==Object.prototype&&(n=r):m=!0),!l(n)||s((function(){var e={};return n[p].call(e)!==e}))?n={}:f&&(n=c(n)),a(n[p])||u(n,p,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:m}},26269:e=>{"use strict";e.exports={}},26198:(e,t,i)=>{"use strict";var n=i(18014);e.exports=function(e){return n(e.length)}},50283:(e,t,i)=>{"use strict";var n=i(79504),r=i(79039),o=i(94901),s=i(39297),a=i(43724),l=i(10350).CONFIGURABLE,c=i(33706),h=i(91181),u=h.enforce,d=h.get,f=String,p=Object.defineProperty,m=n("".slice),g=n("".replace),v=n([].join),y=a&&!r((function(){return 8!==p((function(){}),"length",{value:8}).length})),b=String(String).split("String"),x=e.exports=function(e,t,i){"Symbol("===m(f(t),0,7)&&(t="["+g(f(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),i&&i.getter&&(t="get "+t),i&&i.setter&&(t="set "+t),(!s(e,"name")||l&&e.name!==t)&&(a?p(e,"name",{value:t,configurable:!0}):e.name=t),y&&i&&s(i,"arity")&&e.length!==i.arity&&p(e,"length",{value:i.arity});try{i&&s(i,"constructor")&&i.constructor?a&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=u(e);return s(n,"source")||(n.source=v(b,"string"==typeof t?t:"")),e};Function.prototype.toString=x((function(){return o(this)&&d(this).source||c(this)}),"toString")},72248:(e,t,i)=>{"use strict";var n=i(79504),r=Map.prototype;e.exports={Map,set:n(r.set),get:n(r.get),has:n(r.has),remove:n(r.delete),proto:r}},26223:(e,t,i)=>{"use strict";var n=i(79504),r=i(40507),o=i(72248),s=o.Map,a=o.proto,l=n(a.forEach),c=n(a.entries),h=c(new s).next;e.exports=function(e,t,i){return i?r({iterator:c(e),next:h},(function(e){return t(e[1],e[0])})):l(e,t)}},33164:(e,t,i)=>{"use strict";var n=i(77782),r=Math.abs,o=2220446049250313e-31,s=1/o;e.exports=function(e,t,i,a){var l=+e,c=r(l),h=n(l);if(ci||d!=d?h*(1/0):h*d}},15617:(e,t,i)=>{"use strict";var n=i(33164);e.exports=Math.fround||function(e){return n(e,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)}},77905:e=>{"use strict";e.exports=Math.scale||function(e,t,i,n,r){var o=+e,s=+t,a=+i,l=+n,c=+r;return o!=o||s!=s||a!=a||l!=l||c!=c?NaN:o===1/0||o===-1/0?o:(o-s)*(c-l)/(a-s)+l}},77782:e=>{"use strict";e.exports=Math.sign||function(e){var t=+e;return 0===t||t!=t?t:t<0?-1:1}},80741:e=>{"use strict";var t=Math.ceil,i=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?i:t)(n)}},36043:(e,t,i)=>{"use strict";var n=i(79306),r=TypeError,o=function(e){var t,i;this.promise=new e((function(e,n){if(void 0!==t||void 0!==i)throw new r("Bad Promise constructor");t=e,i=n})),this.resolve=n(t),this.reject=n(i)};e.exports.f=function(e){return new o(e)}},50360:(e,t,i)=>{"use strict";var n=i(24475).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&n(e)}},2360:(e,t,i)=>{"use strict";var n,r=i(28551),o=i(96801),s=i(88727),a=i(30421),l=i(20397),c=i(4055),h=i(66119),u="prototype",d="script",f=h("IE_PROTO"),p=function(){},m=function(e){return"<"+d+">"+e+""},g=function(e){e.write(m("")),e.close();var t=e.parentWindow.Object;return e=null,t},v=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,i;v="undefined"!=typeof document?document.domain&&n?g(n):(t=c("iframe"),i="java"+d+":",t.style.display="none",l.appendChild(t),t.src=String(i),(e=t.contentWindow.document).open(),e.write(m("document.F=Object")),e.close(),e.F):g(n);for(var r=s.length;r--;)delete v[u][s[r]];return v()};a[f]=!0,e.exports=Object.create||function(e,t){var i;return null!==e?(p[u]=r(e),i=new p,p[u]=null,i[f]=e):i=v(),void 0===t?i:o.f(i,t)}},96801:(e,t,i)=>{"use strict";var n=i(43724),r=i(48686),o=i(24913),s=i(28551),a=i(25397),l=i(71072);t.f=n&&!r?Object.defineProperties:function(e,t){s(e);for(var i,n=a(t),r=l(t),c=r.length,h=0;c>h;)o.f(e,i=r[h++],n[i]);return e}},24913:(e,t,i)=>{"use strict";var n=i(43724),r=i(35917),o=i(48686),s=i(28551),a=i(56969),l=TypeError,c=Object.defineProperty,h=Object.getOwnPropertyDescriptor,u="enumerable",d="configurable",f="writable";t.f=n?o?function(e,t,i){if(s(e),t=a(t),s(i),"function"==typeof e&&"prototype"===t&&"value"in i&&f in i&&!i[f]){var n=h(e,t);n&&n[f]&&(e[t]=i.value,i={configurable:d in i?i[d]:n[d],enumerable:u in i?i[u]:n[u],writable:!1})}return c(e,t,i)}:c:function(e,t,i){if(s(e),t=a(t),s(i),r)try{return c(e,t,i)}catch(e){}if("get"in i||"set"in i)throw new l("Accessors not supported");return"value"in i&&(e[t]=i.value),e}},77347:(e,t,i)=>{"use strict";var n=i(43724),r=i(69565),o=i(48773),s=i(6980),a=i(25397),l=i(56969),c=i(39297),h=i(35917),u=Object.getOwnPropertyDescriptor;t.f=n?u:function(e,t){if(e=a(e),t=l(t),h)try{return u(e,t)}catch(e){}if(c(e,t))return s(!r(o.f,e,t),e[t])}},10298:(e,t,i)=>{"use strict";var n=i(44576),r=i(25397),o=i(38480).f,s=i(67680),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"Window"===n(e)?function(e){try{return o(e)}catch(e){return s(a)}}(e):o(r(e))}},38480:(e,t,i)=>{"use strict";var n=i(61828),r=i(88727).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,r)}},33717:(e,t)=>{"use strict";t.f=Object.getOwnPropertySymbols},42787:(e,t,i)=>{"use strict";var n=i(39297),r=i(94901),o=i(48981),s=i(66119),a=i(12211),l=s("IE_PROTO"),c=Object,h=c.prototype;e.exports=a?c.getPrototypeOf:function(e){var t=o(e);if(n(t,l))return t[l];var i=t.constructor;return r(i)&&t instanceof i?i.prototype:t instanceof c?h:null}},34124:(e,t,i)=>{"use strict";var n=i(79039),r=i(20034),o=i(44576),s=i(15652),a=Object.isExtensible,l=n((function(){a(1)}));e.exports=l||s?function(e){return!!r(e)&&((!s||"ArrayBuffer"!==o(e))&&(!a||a(e)))}:a},1625:(e,t,i)=>{"use strict";var n=i(79504);e.exports=n({}.isPrototypeOf)},61828:(e,t,i)=>{"use strict";var n=i(79504),r=i(39297),o=i(25397),s=i(19617).indexOf,a=i(30421),l=n([].push);e.exports=function(e,t){var i,n=o(e),c=0,h=[];for(i in n)!r(a,i)&&r(n,i)&&l(h,i);for(;t.length>c;)r(n,i=t[c++])&&(~s(h,i)||l(h,i));return h}},71072:(e,t,i)=>{"use strict";var n=i(61828),r=i(88727);e.exports=Object.keys||function(e){return n(e,r)}},48773:(e,t)=>{"use strict";var i={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,r=n&&!i.call({1:2},1);t.f=r?function(e){var t=n(this,e);return!!t&&t.enumerable}:i},52967:(e,t,i)=>{"use strict";var n=i(46706),r=i(20034),o=i(67750),s=i(73506);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,i={};try{(e=n(Object.prototype,"__proto__","set"))(i,[]),t=i instanceof Array}catch(e){}return function(i,n){return o(i),s(n),r(i)?(t?e(i,n):i.__proto__=n,i):i}}():void 0)},84270:(e,t,i)=>{"use strict";var n=i(69565),r=i(94901),o=i(20034),s=TypeError;e.exports=function(e,t){var i,a;if("string"===t&&r(i=e.toString)&&!o(a=n(i,e)))return a;if(r(i=e.valueOf)&&!o(a=n(i,e)))return a;if("string"!==t&&r(i=e.toString)&&!o(a=n(i,e)))return a;throw new s("Can't convert object to primitive value")}},35031:(e,t,i)=>{"use strict";var n=i(97751),r=i(79504),o=i(38480),s=i(33717),a=i(28551),l=r([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=o.f(a(e)),i=s.f;return i?l(t,i(e)):t}},19167:(e,t,i)=>{"use strict";var n=i(24475);e.exports=n},1103:e=>{"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},18449:(e,t,i)=>{"use strict";i(36033),i(73772);var n=i(97751),r=i(79504),o=i(25745),s=n("Map"),a=n("WeakMap"),l=r([].push),c=o("metadata"),h=c.store||(c.store=new a),u=function(e,t,i){var n=h.get(e);if(!n){if(!i)return;h.set(e,n=new s)}var r=n.get(t);if(!r){if(!i)return;n.set(t,r=new s)}return r};e.exports={store:h,getMap:u,has:function(e,t,i){var n=u(t,i,!1);return void 0!==n&&n.has(e)},get:function(e,t,i){var n=u(t,i,!1);return void 0===n?void 0:n.get(e)},set:function(e,t,i,n){u(i,n,!0).set(e,t)},keys:function(e,t){var i=u(e,t,!1),n=[];return i&&i.forEach((function(e,t){l(n,t)})),n},toKey:function(e){return void 0===e||"symbol"==typeof e?e:String(e)}}},67979:(e,t,i)=>{"use strict";var n=i(28551);e.exports=function(){var e=n(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},67750:(e,t,i)=>{"use strict";var n=i(64117),r=TypeError;e.exports=function(e){if(n(e))throw new r("Can't call method on "+e);return e}},33317:e=>{"use strict";e.exports=function(e,t){return e===t||e!=e&&t!=t}},79472:(e,t,i)=>{"use strict";var n,r=i(24475),o=i(18745),s=i(94901),a=i(6763),l=i(79392),c=i(67680),h=i(22812),u=r.Function,d=/MSIE .\./.test(l)||a&&((n=r.Bun.version.split(".")).length<3||"0"===n[0]&&(n[1]<3||"3"===n[1]&&"0"===n[2]));e.exports=function(e,t){var i=t?2:1;return d?function(n,r){var a=h(arguments.length,1)>i,l=s(n)?n:u(n),d=a?c(arguments,i):[],f=a?function(){o(l,this,d)}:l;return t?e(f,r):e(f)}:e}},89286:(e,t,i)=>{"use strict";var n=i(94402),r=i(38469),o=n.Set,s=n.add;e.exports=function(e){var t=new o;return r(e,(function(e){s(t,e)})),t}},83440:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402),o=i(89286),s=i(25170),a=i(83789),l=i(38469),c=i(40507),h=r.has,u=r.remove;e.exports=function(e){var t=n(this),i=a(e),r=o(t);return s(t)<=i.size?l(t,(function(e){i.includes(e)&&u(r,e)})):c(i.getIterator(),(function(e){h(t,e)&&u(r,e)})),r}},94402:(e,t,i)=>{"use strict";var n=i(79504),r=Set.prototype;e.exports={Set,add:n(r.add),has:n(r.has),remove:n(r.delete),proto:r}},68750:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402),o=i(25170),s=i(83789),a=i(38469),l=i(40507),c=r.Set,h=r.add,u=r.has;e.exports=function(e){var t=n(this),i=s(e),r=new c;return o(t)>i.size?l(i.getIterator(),(function(e){u(t,e)&&h(r,e)})):a(t,(function(e){i.includes(e)&&h(r,e)})),r}},64449:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402).has,o=i(25170),s=i(83789),a=i(38469),l=i(40507),c=i(9539);e.exports=function(e){var t=n(this),i=s(e);if(o(t)<=i.size)return!1!==a(t,(function(e){if(i.includes(e))return!1}),!0);var h=i.getIterator();return!1!==l(h,(function(e){if(r(t,e))return c(h,"normal",!1)}))}},53838:(e,t,i)=>{"use strict";var n=i(97080),r=i(25170),o=i(38469),s=i(83789);e.exports=function(e){var t=n(this),i=s(e);return!(r(t)>i.size)&&!1!==o(t,(function(e){if(!i.includes(e))return!1}),!0)}},28527:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402).has,o=i(25170),s=i(83789),a=i(40507),l=i(9539);e.exports=function(e){var t=n(this),i=s(e);if(o(t){"use strict";var n=i(79504),r=i(40507),o=i(94402),s=o.Set,a=o.proto,l=n(a.forEach),c=n(a.keys),h=c(new s).next;e.exports=function(e,t,i){return i?r({iterator:c(e),next:h},t):l(e,t)}},25170:(e,t,i)=>{"use strict";var n=i(46706),r=i(94402);e.exports=n(r.proto,"size","get")||function(e){return e.size}},87633:(e,t,i)=>{"use strict";var n=i(97751),r=i(62106),o=i(78227),s=i(43724),a=o("species");e.exports=function(e){var t=n(e);s&&t&&!t[a]&&r(t,a,{configurable:!0,get:function(){return this}})}},83650:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402),o=i(89286),s=i(83789),a=i(40507),l=r.add,c=r.has,h=r.remove;e.exports=function(e){var t=n(this),i=s(e).getIterator(),r=o(t);return a(i,(function(e){c(t,e)?h(r,e):l(r,e)})),r}},10687:(e,t,i)=>{"use strict";var n=i(24913).f,r=i(39297),o=i(78227)("toStringTag");e.exports=function(e,t,i){e&&!i&&(e=e.prototype),e&&!r(e,o)&&n(e,o,{configurable:!0,value:t})}},44204:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402).add,o=i(89286),s=i(83789),a=i(40507);e.exports=function(e){var t=n(this),i=s(e).getIterator(),l=o(t);return a(i,(function(e){r(l,e)})),l}},66119:(e,t,i)=>{"use strict";var n=i(25745),r=i(33392),o=n("keys");e.exports=function(e){return o[e]||(o[e]=r(e))}},77629:(e,t,i)=>{"use strict";var n=i(96395),r=i(24475),o=i(39433),s="__core-js_shared__",a=e.exports=r[s]||o(s,{});(a.versions||(a.versions=[])).push({version:"3.36.1",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE",source:"https://github.com/zloirock/core-js"})},25745:(e,t,i)=>{"use strict";var n=i(77629);e.exports=function(e,t){return n[e]||(n[e]=t||{})}},68183:(e,t,i)=>{"use strict";var n=i(79504),r=i(91291),o=i(655),s=i(67750),a=n("".charAt),l=n("".charCodeAt),c=n("".slice),h=function(e){return function(t,i){var n,h,u=o(s(t)),d=r(i),f=u.length;return d<0||d>=f?e?"":void 0:(n=l(u,d))<55296||n>56319||d+1===f||(h=l(u,d+1))<56320||h>57343?e?a(u,d):n:e?c(u,d,d+2):h-56320+(n-55296<<10)+65536}};e.exports={codeAt:h(!1),charAt:h(!0)}},4495:(e,t,i)=>{"use strict";var n=i(77388),r=i(79039),o=i(24475).String;e.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol("symbol detection");return!o(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},59225:(e,t,i)=>{"use strict";var n,r,o,s,a=i(24475),l=i(18745),c=i(76080),h=i(94901),u=i(39297),d=i(79039),f=i(20397),p=i(67680),m=i(4055),g=i(22812),v=i(48119),y=i(19088),b=a.setImmediate,x=a.clearImmediate,_=a.process,E=a.Dispatch,S=a.Function,A=a.MessageChannel,w=a.String,T=0,M={},C="onreadystatechange";d((function(){n=a.location}));var P=function(e){if(u(M,e)){var t=M[e];delete M[e],t()}},D=function(e){return function(){P(e)}},L=function(e){P(e.data)},I=function(e){a.postMessage(w(e),n.protocol+"//"+n.host)};b&&x||(b=function(e){g(arguments.length,1);var t=h(e)?e:S(e),i=p(arguments,1);return M[++T]=function(){l(t,void 0,i)},r(T),T},x=function(e){delete M[e]},y?r=function(e){_.nextTick(D(e))}:E&&E.now?r=function(e){E.now(D(e))}:A&&!v?(s=(o=new A).port2,o.port1.onmessage=L,r=c(s.postMessage,s)):a.addEventListener&&h(a.postMessage)&&!a.importScripts&&n&&"file:"!==n.protocol&&!d(I)?(r=I,a.addEventListener("message",L,!1)):r=C in m("script")?function(e){f.appendChild(m("script"))[C]=function(){f.removeChild(this),P(e)}}:function(e){setTimeout(D(e),0)}),e.exports={set:b,clear:x}},35610:(e,t,i)=>{"use strict";var n=i(91291),r=Math.max,o=Math.min;e.exports=function(e,t){var i=n(e);return i<0?r(i+t,0):o(i,t)}},25397:(e,t,i)=>{"use strict";var n=i(47055),r=i(67750);e.exports=function(e){return n(r(e))}},91291:(e,t,i)=>{"use strict";var n=i(80741);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},18014:(e,t,i)=>{"use strict";var n=i(91291),r=Math.min;e.exports=function(e){var t=n(e);return t>0?r(t,9007199254740991):0}},48981:(e,t,i)=>{"use strict";var n=i(67750),r=Object;e.exports=function(e){return r(n(e))}},58229:(e,t,i)=>{"use strict";var n=i(99590),r=RangeError;e.exports=function(e,t){var i=n(e);if(i%t)throw new r("Wrong offset");return i}},99590:(e,t,i)=>{"use strict";var n=i(91291),r=RangeError;e.exports=function(e){var t=n(e);if(t<0)throw new r("The argument can't be less than 0");return t}},72777:(e,t,i)=>{"use strict";var n=i(69565),r=i(20034),o=i(10757),s=i(55966),a=i(84270),l=i(78227),c=TypeError,h=l("toPrimitive");e.exports=function(e,t){if(!r(e)||o(e))return e;var i,l=s(e,h);if(l){if(void 0===t&&(t="default"),i=n(l,e,t),!r(i)||o(i))return i;throw new c("Can't convert object to primitive value")}return void 0===t&&(t="number"),a(e,t)}},56969:(e,t,i)=>{"use strict";var n=i(72777),r=i(10757);e.exports=function(e){var t=n(e,"string");return r(t)?t:t+""}},47650:(e,t,i)=>{"use strict";var n=i(97751),r=i(94901),o=i(31563),s=i(20034),a=n("Set");e.exports=function(e){return function(e){return s(e)&&"number"==typeof e.size&&r(e.has)&&r(e.keys)}(e)?e:o(e)?new a(e):e}},92140:(e,t,i)=>{"use strict";var n={};n[i(78227)("toStringTag")]="z",e.exports="[object z]"===String(n)},655:(e,t,i)=>{"use strict";var n=i(36955),r=String;e.exports=function(e){if("Symbol"===n(e))throw new TypeError("Cannot convert a Symbol value to a string");return r(e)}},16823:e=>{"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},33392:(e,t,i)=>{"use strict";var n=i(79504),r=0,o=Math.random(),s=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+s(++r+o,36)}},7040:(e,t,i)=>{"use strict";var n=i(4495);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},48686:(e,t,i)=>{"use strict";var n=i(43724),r=i(79039);e.exports=n&&r((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},22812:e=>{"use strict";var t=TypeError;e.exports=function(e,i){if(e{"use strict";var n=i(24475),r=i(94901),o=n.WeakMap;e.exports=r(o)&&/native code/.test(String(o))},44995:(e,t,i)=>{"use strict";var n=i(79504),r=WeakMap.prototype;e.exports={WeakMap,set:n(r.set),get:n(r.get),has:n(r.has),remove:n(r.delete)}},88205:(e,t,i)=>{"use strict";var n=i(79504),r=WeakSet.prototype;e.exports={WeakSet,add:n(r.add),has:n(r.has),remove:n(r.delete)}},70511:(e,t,i)=>{"use strict";var n=i(19167),r=i(39297),o=i(1951),s=i(24913).f;e.exports=function(e){var t=n.Symbol||(n.Symbol={});r(t,e)||s(t,e,{value:o.f(e)})}},1951:(e,t,i)=>{"use strict";var n=i(78227);t.f=n},78227:(e,t,i)=>{"use strict";var n=i(24475),r=i(25745),o=i(39297),s=i(33392),a=i(4495),l=i(7040),c=n.Symbol,h=r("wks"),u=l?c.for||c:c&&c.withoutSetter||s;e.exports=function(e){return o(h,e)||(h[e]=a&&o(c,e)?c[e]:u("Symbol."+e)),h[e]}},74423:(e,t,i)=>{"use strict";var n=i(46518),r=i(19617).includes,o=i(79039),s=i(6469);n({target:"Array",proto:!0,forced:o((function(){return!Array(1).includes()}))},{includes:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),s("includes")},48523:(e,t,i)=>{"use strict";i(16468)("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),i(86938))},47072:(e,t,i)=>{"use strict";var n=i(46518),r=i(79504),o=i(79306),s=i(67750),a=i(72652),l=i(72248),c=i(96395),h=l.Map,u=l.has,d=l.get,f=l.set,p=r([].push);n({target:"Map",stat:!0,forced:c},{groupBy:function(e,t){s(e),o(t);var i=new h,n=0;return a(e,(function(e){var r=t(e,n++);u(i,r)?p(d(i,r),e):f(i,r,[e])})),i}})},36033:(e,t,i)=>{"use strict";i(48523)},69479:(e,t,i)=>{"use strict";var n=i(24475),r=i(43724),o=i(62106),s=i(67979),a=i(79039),l=n.RegExp,c=l.prototype;r&&a((function(){var e=!0;try{l(".","d")}catch(t){e=!1}var t={},i="",n=e?"dgimsy":"gimsy",r=function(e,n){Object.defineProperty(t,e,{get:function(){return i+=n,!0}})},o={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var s in e&&(o.hasIndices="d"),o)r(s,o[s]);return Object.getOwnPropertyDescriptor(c,"flags").get.call(t)!==n||i!==n}))&&o(c,"flags",{configurable:!0,get:s})},28845:(e,t,i)=>{"use strict";var n=i(24475),r=i(69565),o=i(94644),s=i(26198),a=i(58229),l=i(48981),c=i(79039),h=n.RangeError,u=n.Int8Array,d=u&&u.prototype,f=d&&d.set,p=o.aTypedArray,m=o.exportTypedArrayMethod,g=!c((function(){var e=new Uint8ClampedArray(2);return r(f,e,{length:1,0:3},1),3!==e[1]})),v=g&&o.NATIVE_ARRAY_BUFFER_VIEWS&&c((function(){var e=new u(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));m("set",(function(e){p(this);var t=a(arguments.length>1?arguments[1]:void 0,1),i=l(e);if(g)return r(f,this,i,t);var n=this.length,o=s(i),c=0;if(o+t>n)throw new h("Wrong length");for(;c{"use strict";var n,r=i(92744),o=i(24475),s=i(79504),a=i(56279),l=i(3451),c=i(16468),h=i(91625),u=i(20034),d=i(91181).enforce,f=i(79039),p=i(58622),m=Object,g=Array.isArray,v=m.isExtensible,y=m.isFrozen,b=m.isSealed,x=m.freeze,_=m.seal,E=!o.ActiveXObject&&"ActiveXObject"in o,S=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},A=c("WeakMap",S,h),w=A.prototype,T=s(w.set);if(p)if(E){n=h.getConstructor(S,"WeakMap",!0),l.enable();var M=s(w.delete),C=s(w.has),P=s(w.get);a(w,{delete:function(e){if(u(e)&&!v(e)){var t=d(this);return t.frozen||(t.frozen=new n),M(this,e)||t.frozen.delete(e)}return M(this,e)},has:function(e){if(u(e)&&!v(e)){var t=d(this);return t.frozen||(t.frozen=new n),C(this,e)||t.frozen.has(e)}return C(this,e)},get:function(e){if(u(e)&&!v(e)){var t=d(this);return t.frozen||(t.frozen=new n),C(this,e)?P(this,e):t.frozen.get(e)}return P(this,e)},set:function(e,t){if(u(e)&&!v(e)){var i=d(this);i.frozen||(i.frozen=new n),C(this,e)?T(this,e,t):i.frozen.set(e,t)}else T(this,e,t);return this}})}else r&&f((function(){var e=x([]);return T(new A,e,1),!y(e)}))&&a(w,{set:function(e,t){var i;return g(e)&&(y(e)?i=x:b(e)&&(i=_)),T(this,e,t),i&&i(e),this}})},73772:(e,t,i)=>{"use strict";i(65746)},17656:(e,t,i)=>{"use strict";var n=i(43724),r=i(6469),o=i(48981),s=i(26198),a=i(62106);n&&(a(Array.prototype,"lastIndex",{configurable:!0,get:function(){var e=o(this),t=s(e);return 0===t?0:t-1}}),r("lastIndex"))},55105:(e,t,i)=>{"use strict";var n=i(43724),r=i(6469),o=i(48981),s=i(26198),a=i(62106);n&&(a(Array.prototype,"lastItem",{configurable:!0,get:function(){var e=o(this),t=s(e);return 0===t?void 0:e[t-1]},set:function(e){var t=o(this),i=s(t);return t[0===i?0:i-1]=e}}),r("lastItem"))},7467:(e,t,i)=>{"use strict";var n=i(46518),r=i(18745),o=i(59323),s=i(97751),a=i(2360),l=Object,c=function(){var e=s("Object","freeze");return e?e(a(null)):a(null)};n({global:!0,forced:!0},{compositeKey:function(){return r(o,l,arguments).get("object",c)}})},10586:(e,t,i)=>{"use strict";var n=i(46518),r=i(59323),o=i(97751),s=i(18745);n({global:!0,forced:!0},{compositeSymbol:function(){return 1===arguments.length&&"string"==typeof arguments[0]?o("Symbol").for(arguments[0]):s(r,null,arguments).get("symbol",o("Symbol"))}})},71517:(e,t,i)=>{"use strict";var n=i(46518),r=i(36194),o=i(72248).remove;n({target:"Map",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var e,t=r(this),i=!0,n=0,s=arguments.length;n{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{every:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0);return!1!==s(t,(function(e,n){if(!i(e,n,t))return!1}),!0)}})},14190:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(72248),a=i(26223),l=s.Map,c=s.set;n({target:"Map",proto:!0,real:!0,forced:!0},{filter:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=new l;return a(t,(function(e,r){i(e,r,t)&&c(n,r,e)})),n}})},86097:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{findKey:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=s(t,(function(e,n){if(i(e,n,t))return{key:n}}),!0);return n&&n.key}})},12359:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{find:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=s(t,(function(e,n){if(i(e,n,t))return{value:e}}),!0);return n&&n.value}})},39172:(e,t,i)=>{"use strict";var n=i(46518),r=i(72248);n({target:"Map",stat:!0,forced:!0},{from:i(70933)(r.Map,r.set,!0)})},57019:(e,t,i)=>{"use strict";i(47072)},17273:(e,t,i)=>{"use strict";var n=i(46518),r=i(33317),o=i(36194),s=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{includes:function(e){return!0===s(o(this),(function(t){if(r(t,e))return!0}),!0)}})},81723:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(72652),s=i(94901),a=i(79306),l=i(72248).Map;n({target:"Map",stat:!0,forced:!0},{keyBy:function(e,t){var i=new(s(this)?this:l);a(t);var n=a(i.set);return o(e,(function(e){r(n,i,t(e),e)})),i}})},27415:(e,t,i)=>{"use strict";var n=i(46518),r=i(36194),o=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{keyOf:function(e){var t=o(r(this),(function(t,i){if(t===e)return{key:i}}),!0);return t&&t.key}})},19929:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(72248),a=i(26223),l=s.Map,c=s.set;n({target:"Map",proto:!0,real:!0,forced:!0},{mapKeys:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=new l;return a(t,(function(e,r){c(n,i(e,r,t),e)})),n}})},37583:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(72248),a=i(26223),l=s.Map,c=s.set;n({target:"Map",proto:!0,real:!0,forced:!0},{mapValues:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=new l;return a(t,(function(e,r){c(n,r,i(e,r,t))})),n}})},55122:(e,t,i)=>{"use strict";var n=i(46518),r=i(36194),o=i(72652),s=i(72248).set;n({target:"Map",proto:!0,real:!0,arity:1,forced:!0},{merge:function(e){for(var t=r(this),i=arguments.length,n=0;n{"use strict";var n=i(46518),r=i(72248);n({target:"Map",stat:!0,forced:!0},{of:i(87500)(r.Map,r.set,!0)})},20230:(e,t,i)=>{"use strict";var n=i(46518),r=i(79306),o=i(36194),s=i(26223),a=TypeError;n({target:"Map",proto:!0,real:!0,forced:!0},{reduce:function(e){var t=o(this),i=arguments.length<2,n=i?void 0:arguments[1];if(r(e),s(t,(function(r,o){i?(i=!1,n=r):n=e(n,r,o,t)})),i)throw new a("Reduce of empty map with no initial value");return n}})},57268:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{some:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0);return!0===s(t,(function(e,n){if(i(e,n,t))return!0}),!0)}})},79733:(e,t,i)=>{"use strict";var n=i(46518),r=i(79306),o=i(36194),s=i(72248),a=TypeError,l=s.get,c=s.has,h=s.set;n({target:"Map",proto:!0,real:!0,forced:!0},{update:function(e,t){var i=o(this),n=arguments.length;r(t);var s=c(i,e);if(!s&&n<3)throw new a("Updating absent value");var u=s?l(i,e):r(n>2?arguments[2]:void 0)(e,i);return h(i,e,t(u,e,i)),i}})},58179:(e,t,i)=>{"use strict";var n=i(46518),r=Math.min,o=Math.max;n({target:"Math",stat:!0,forced:!0},{clamp:function(e,t,i){return r(i,o(t,e))}})},30456:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,nonConfigurable:!0,nonWritable:!0},{DEG_PER_RAD:Math.PI/180})},74017:(e,t,i)=>{"use strict";var n=i(46518),r=180/Math.PI;n({target:"Math",stat:!0,forced:!0},{degrees:function(e){return e*r}})},79310:(e,t,i)=>{"use strict";var n=i(46518),r=i(77905),o=i(15617);n({target:"Math",stat:!0,forced:!0},{fscale:function(e,t,i,n,s){return o(r(e,t,i,n,s))}})},83062:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{iaddh:function(e,t,i,n){var r=e>>>0,o=i>>>0;return(t>>>0)+(n>>>0)+((r&o|(r|o)&~(r+o>>>0))>>>31)|0}})},96369:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{imulh:function(e,t){var i=65535,n=+e,r=+t,o=n&i,s=r&i,a=n>>16,l=r>>16,c=(a*s>>>0)+(o*s>>>16);return a*l+(c>>16)+((o*l>>>0)+(c&i)>>16)}})},15637:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{isubh:function(e,t,i,n){var r=e>>>0,o=i>>>0;return(t>>>0)-(n>>>0)-((~r&o|(r^~o)&r-o>>>0)>>>31)|0}})},2848:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,nonConfigurable:!0,nonWritable:!0},{RAD_PER_DEG:180/Math.PI})},24842:(e,t,i)=>{"use strict";var n=i(46518),r=Math.PI/180;n({target:"Math",stat:!0,forced:!0},{radians:function(e){return e*r}})},24746:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{scale:i(77905)})},33454:(e,t,i)=>{"use strict";var n=i(46518),r=i(28551),o=i(50360),s=i(33994),a=i(62529),l=i(91181),c="Seeded Random",h=c+" Generator",u=l.set,d=l.getterFor(h),f=TypeError,p=s((function(e){u(this,{type:h,seed:e%2147483647})}),c,(function(){var e=d(this),t=e.seed=(1103515245*e.seed+12345)%2147483647;return a((1073741823&t)/1073741823,!1)}));n({target:"Math",stat:!0,forced:!0},{seededPRNG:function(e){var t=r(e).seed;if(!o(t))throw new f('Math.seededPRNG() argument should have a "seed" field with a finite value.');return new p(t)}})},6660:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{signbit:function(e){var t=+e;return t==t&&0===t?1/t==-1/0:t<0}})},15941:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{umulh:function(e,t){var i=65535,n=+e,r=+t,o=n&i,s=r&i,a=n>>>16,l=r>>>16,c=(a*s>>>0)+(o*s>>>16);return a*l+(c>>>16)+((o*l>>>0)+(c&i)>>>16)}})},82101:(e,t,i)=>{"use strict";var n=i(46518),r=i(79504),o=i(91291),s="Invalid number representation",a=RangeError,l=SyntaxError,c=TypeError,h=parseInt,u=Math.pow,d=/^[\d.a-z]+$/,f=r("".charAt),p=r(d.exec),m=r(1..toString),g=r("".slice),v=r("".split);n({target:"Number",stat:!0,forced:!0},{fromString:function(e,t){var i=1;if("string"!=typeof e)throw new c(s);if(!e.length)throw new l(s);if("-"===f(e,0)&&(i=-1,!(e=g(e,1)).length))throw new l(s);var n=void 0===t?10:o(t);if(n<2||n>36)throw new a("Invalid radix");if(!p(d,e))throw new l(s);var r=v(e,"."),y=h(r[0],n);if(r.length>1&&(y+=h(r[1],n)/u(n,r[1].length)),10===n&&m(y,n)!==e)throw new l(s);return i*y}})},15239:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(43724),s=i(87633),a=i(79306),l=i(28551),c=i(90679),h=i(94901),u=i(64117),d=i(20034),f=i(55966),p=i(36840),m=i(56279),g=i(62106),v=i(90757),y=i(78227),b=i(91181),x=y("observable"),_="Observable",E="Subscription",S="SubscriptionObserver",A=b.getterFor,w=b.set,T=A(_),M=A(E),C=A(S),P=function(e){this.observer=l(e),this.cleanup=void 0,this.subscriptionObserver=void 0};P.prototype={type:E,clean:function(){var e=this.cleanup;if(e){this.cleanup=void 0;try{e()}catch(e){v(e)}}},close:function(){if(!o){var e=this.facade,t=this.subscriptionObserver;e.closed=!0,t&&(t.closed=!0)}this.observer=void 0},isClosed:function(){return void 0===this.observer}};var D=function(e,t){var i,n=w(this,new P(e));o||(this.closed=!1);try{(i=f(e,"start"))&&r(i,e,this)}catch(e){v(e)}if(!n.isClosed()){var s=n.subscriptionObserver=new L(n);try{var l=t(s),c=l;u(l)||(n.cleanup=h(l.unsubscribe)?function(){c.unsubscribe()}:a(l))}catch(e){return void s.error(e)}n.isClosed()&&n.clean()}};D.prototype=m({},{unsubscribe:function(){var e=M(this);e.isClosed()||(e.close(),e.clean())}}),o&&g(D.prototype,"closed",{configurable:!0,get:function(){return M(this).isClosed()}});var L=function(e){w(this,{type:S,subscriptionState:e}),o||(this.closed=!1)};L.prototype=m({},{next:function(e){var t=C(this).subscriptionState;if(!t.isClosed()){var i=t.observer;try{var n=f(i,"next");n&&r(n,i,e)}catch(e){v(e)}}},error:function(e){var t=C(this).subscriptionState;if(!t.isClosed()){var i=t.observer;t.close();try{var n=f(i,"error");n?r(n,i,e):v(e)}catch(e){v(e)}t.clean()}},complete:function(){var e=C(this).subscriptionState;if(!e.isClosed()){var t=e.observer;e.close();try{var i=f(t,"complete");i&&r(i,t)}catch(e){v(e)}e.clean()}}}),o&&g(L.prototype,"closed",{configurable:!0,get:function(){return C(this).subscriptionState.isClosed()}});var I=function(e){c(this,R),w(this,{type:_,subscriber:a(e)})},R=I.prototype;m(R,{subscribe:function(e){var t=arguments.length;return new D(h(e)?{next:e,error:t>1?arguments[1]:void 0,complete:t>2?arguments[2]:void 0}:d(e)?e:{},T(this).subscriber)}}),p(R,x,(function(){return this})),n({global:!0,constructor:!0,forced:!0},{Observable:I}),s(_)},9035:(e,t,i)=>{"use strict";var n=i(46518),r=i(97751),o=i(69565),s=i(28551),a=i(33517),l=i(70081),c=i(55966),h=i(72652),u=i(78227)("observable");n({target:"Observable",stat:!0,forced:!0},{from:function(e){var t=a(this)?this:r("Observable"),i=c(s(e),u);if(i){var n=s(o(i,e));return n.constructor===t?n:new t((function(e){return n.subscribe(e)}))}var d=l(e);return new t((function(e){h(d,(function(t,i){if(e.next(t),e.closed)return i()}),{IS_ITERATOR:!0,INTERRUPTED:!0}),e.complete()}))}})},2917:(e,t,i)=>{"use strict";i(15239),i(9035),i(78662)},78662:(e,t,i)=>{"use strict";var n=i(46518),r=i(97751),o=i(33517),s=r("Array");n({target:"Observable",stat:!0,forced:!0},{of:function(){for(var e=o(this)?this:r("Observable"),t=arguments.length,i=s(t),n=0;n{"use strict";var n=i(46518),r=i(36043),o=i(1103);n({target:"Promise",stat:!0,forced:!0},{try:function(e){var t=r.f(this),i=o(e);return(i.error?t.reject:t.resolve)(i.value),t.promise}})},65186:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.toKey,a=r.set;n({target:"Reflect",stat:!0},{defineMetadata:function(e,t,i){var n=arguments.length<4?void 0:s(arguments[3]);a(e,t,o(i),n)}})},42978:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.toKey,a=r.getMap,l=r.store;n({target:"Reflect",stat:!0},{deleteMetadata:function(e,t){var i=arguments.length<3?void 0:s(arguments[2]),n=a(o(t),i,!1);if(void 0===n||!n.delete(e))return!1;if(n.size)return!0;var r=l.get(t);return r.delete(i),!!r.size||l.delete(t)}})},79852:(e,t,i)=>{"use strict";var n=i(46518),r=i(79504),o=i(18449),s=i(28551),a=i(42787),l=r(i(79565)),c=r([].concat),h=o.keys,u=o.toKey,d=function(e,t){var i=h(e,t),n=a(e);if(null===n)return i;var r=d(n,t);return r.length?i.length?l(c(i,r)):r:i};n({target:"Reflect",stat:!0},{getMetadataKeys:function(e){var t=arguments.length<2?void 0:u(arguments[1]);return d(s(e),t)}})},72527:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=i(42787),a=r.has,l=r.get,c=r.toKey,h=function(e,t,i){if(a(e,t,i))return l(e,t,i);var n=s(t);return null!==n?h(e,n,i):void 0};n({target:"Reflect",stat:!0},{getMetadata:function(e,t){var i=arguments.length<3?void 0:c(arguments[2]);return h(e,o(t),i)}})},40617:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.keys,a=r.toKey;n({target:"Reflect",stat:!0},{getOwnMetadataKeys:function(e){var t=arguments.length<2?void 0:a(arguments[1]);return s(o(e),t)}})},42376:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.get,a=r.toKey;n({target:"Reflect",stat:!0},{getOwnMetadata:function(e,t){var i=arguments.length<3?void 0:a(arguments[2]);return s(e,o(t),i)}})},73067:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=i(42787),a=r.has,l=r.toKey,c=function(e,t,i){if(a(e,t,i))return!0;var n=s(t);return null!==n&&c(e,n,i)};n({target:"Reflect",stat:!0},{hasMetadata:function(e,t){var i=arguments.length<3?void 0:l(arguments[2]);return c(e,o(t),i)}})},66820:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.has,a=r.toKey;n({target:"Reflect",stat:!0},{hasOwnMetadata:function(e,t){var i=arguments.length<3?void 0:a(arguments[2]);return s(e,o(t),i)}})},8288:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.toKey,a=r.set;n({target:"Reflect",stat:!0},{metadata:function(e,t){return function(i,n){a(e,t,o(i),s(n))}}})},25509:(e,t,i)=>{"use strict";var n=i(46518),r=i(97080),o=i(94402).add;n({target:"Set",proto:!0,real:!0,forced:!0},{addAll:function(){for(var e=r(this),t=0,i=arguments.length;t{"use strict";var n=i(46518),r=i(97080),o=i(94402).remove;n({target:"Set",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var e,t=r(this),i=!0,n=0,s=arguments.length;n{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(83440);n({target:"Set",proto:!0,real:!0,forced:!0},{difference:function(e){return r(s,this,o(e))}})},41927:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(97080),s=i(38469);n({target:"Set",proto:!0,real:!0,forced:!0},{every:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0);return!1!==s(t,(function(e){if(!i(e,e,t))return!1}),!0)}})},11632:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(97080),s=i(94402),a=i(38469),l=s.Set,c=s.add;n({target:"Set",proto:!0,real:!0,forced:!0},{filter:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=new l;return a(t,(function(e){i(e,e,t)&&c(n,e)})),n}})},64377:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(97080),s=i(38469);n({target:"Set",proto:!0,real:!0,forced:!0},{find:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=s(t,(function(e){if(i(e,e,t))return{value:e}}),!0);return n&&n.value}})},49522:(e,t,i)=>{"use strict";var n=i(46518),r=i(94402);n({target:"Set",stat:!0,forced:!0},{from:i(70933)(r.Set,r.add,!1)})},66771:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(68750);n({target:"Set",proto:!0,real:!0,forced:!0},{intersection:function(e){return r(s,this,o(e))}})},12516:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(64449);n({target:"Set",proto:!0,real:!0,forced:!0},{isDisjointFrom:function(e){return r(s,this,o(e))}})},68931:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(53838);n({target:"Set",proto:!0,real:!0,forced:!0},{isSubsetOf:function(e){return r(s,this,o(e))}})},52514:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(28527);n({target:"Set",proto:!0,real:!0,forced:!0},{isSupersetOf:function(e){return r(s,this,o(e))}})},35694:(e,t,i)=>{"use strict";var n=i(46518),r=i(79504),o=i(97080),s=i(38469),a=i(655),l=r([].join),c=r([].push);n({target:"Set",proto:!0,real:!0,forced:!0},{join:function(e){var t=o(this),i=void 0===e?",":a(e),n=[];return s(t,(function(e){c(n,e)})),l(n,i)}})},52774:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(97080),s=i(94402),a=i(38469),l=s.Set,c=s.add;n({target:"Set",proto:!0,real:!0,forced:!0},{map:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=new l;return a(t,(function(e){c(n,i(e,e,t))})),n}})},23283:(e,t,i)=>{"use strict";var n=i(46518),r=i(94402);n({target:"Set",stat:!0,forced:!0},{of:i(87500)(r.Set,r.add,!1)})},49536:(e,t,i)=>{"use strict";var n=i(46518),r=i(79306),o=i(97080),s=i(38469),a=TypeError;n({target:"Set",proto:!0,real:!0,forced:!0},{reduce:function(e){var t=o(this),i=arguments.length<2,n=i?void 0:arguments[1];if(r(e),s(t,(function(r){i?(i=!1,n=r):n=e(n,r,r,t)})),i)throw new a("Reduce of empty set with no initial value");return n}})},21926:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(97080),s=i(38469);n({target:"Set",proto:!0,real:!0,forced:!0},{some:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0);return!0===s(t,(function(e){if(i(e,e,t))return!0}),!0)}})},94483:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(83650);n({target:"Set",proto:!0,real:!0,forced:!0},{symmetricDifference:function(e){return r(s,this,o(e))}})},16215:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(44204);n({target:"Set",proto:!0,real:!0,forced:!0},{union:function(e){return r(s,this,o(e))}})},78898:(e,t,i)=>{"use strict";var n=i(46518),r=i(68183).charAt,o=i(67750),s=i(91291),a=i(655);n({target:"String",proto:!0,forced:!0},{at:function(e){var t=a(o(this)),i=t.length,n=s(e),l=n>=0?n:i+n;return l<0||l>=i?void 0:r(t,l)}})},74176:(e,t,i)=>{"use strict";var n=i(46518),r=i(33994),o=i(62529),s=i(67750),a=i(655),l=i(91181),c=i(68183),h=c.codeAt,u=c.charAt,d="String Iterator",f=l.set,p=l.getterFor(d),m=r((function(e){f(this,{type:d,string:e,index:0})}),"String",(function(){var e,t=p(this),i=t.string,n=t.index;return n>=i.length?o(void 0,!0):(e=u(i,n),t.index+=e.length,o({codePoint:h(e,0),position:n},!1))}));n({target:"String",proto:!0,forced:!0},{codePoints:function(){return new m(a(s(this)))}})},43275:(e,t,i)=>{"use strict";var n=i(24475),r=i(70511),o=i(24913).f,s=i(77347).f,a=n.Symbol;if(r("dispose"),a){var l=s(a,"dispose");l.enumerable&&l.configurable&&l.writable&&o(a,"dispose",{value:l.value,enumerable:!1,configurable:!1,writable:!1})}},42793:(e,t,i)=>{"use strict";i(70511)("observable")},77208:(e,t,i)=>{"use strict";i(70511)("patternMatch")},67348:(e,t,i)=>{"use strict";var n=i(46518),r=i(76557),o=i(44995).remove;n({target:"WeakMap",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var e,t=r(this),i=!0,n=0,s=arguments.length;n{"use strict";var n=i(46518),r=i(44995);n({target:"WeakMap",stat:!0,forced:!0},{from:i(70933)(r.WeakMap,r.set,!0)})},79732:(e,t,i)=>{"use strict";var n=i(46518),r=i(44995);n({target:"WeakMap",stat:!0,forced:!0},{of:i(87500)(r.WeakMap,r.set,!0)})},83742:(e,t,i)=>{"use strict";var n=i(46518),r=i(23755),o=i(88205).add;n({target:"WeakSet",proto:!0,real:!0,forced:!0},{addAll:function(){for(var e=r(this),t=0,i=arguments.length;t{"use strict";var n=i(46518),r=i(23755),o=i(88205).remove;n({target:"WeakSet",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var e,t=r(this),i=!0,n=0,s=arguments.length;n{"use strict";var n=i(46518),r=i(88205);n({target:"WeakSet",stat:!0,forced:!0},{from:i(70933)(r.WeakSet,r.add,!1)})},46270:(e,t,i)=>{"use strict";var n=i(46518),r=i(88205);n({target:"WeakSet",stat:!0,forced:!0},{of:i(87500)(r.WeakSet,r.add,!1)})},86368:(e,t,i)=>{"use strict";var n=i(46518),r=i(24475),o=i(59225).clear;n({global:!0,bind:!0,enumerable:!0,forced:r.clearImmediate!==o},{clearImmediate:o})},59848:(e,t,i)=>{"use strict";i(86368),i(29309)},29309:(e,t,i)=>{"use strict";var n=i(46518),r=i(24475),o=i(59225).set,s=i(79472),a=r.setImmediate?s(o,!1):o;n({global:!0,bind:!0,enumerable:!0,forced:r.setImmediate!==a},{setImmediate:a})},85178:(e,t,i)=>{var n;if("function"==typeof fetch&&(n=void 0!==i.g&&i.g.fetch?i.g.fetch:"undefined"!=typeof window&&window.fetch?window.fetch:fetch),"undefined"==typeof window||void 0===window.document){var r=n||i(95204);r.default&&(r=r.default),t.default=r,e.exports=t.default}},92467:e=>{"use strict";e.exports=JSON.parse('{"globals":{"dimension":{},"factor":{"factor":1},"factor.derived":{"parentFactors":{}},"quantity":{"units":[]},"symbol":{"doc":"http://docs.adskunits.apiary.io/#introduction/definitions/unit-symbols","unit":{"typeid":"unit","description":"Measurement unit this symbol applies to."}},"symbol.placement":{"Prefix":{"value":0},"Suffix":1},"symbol.prefixOrSuffix":{"text":{"typeid":"String","description":"Text to annotate the value."},"placement":{"typeid":"symbol.placement","description":"Placement of the annotation text."},"space":{"typeid":"Bool","description":"Specifies whether the annotation should be separated from the value by a space."}},"system":{"Metric":{"value":0,"description":"Metric system of measurement units."},"Imperial":1},"unit":{"doc":"http://docs.adskunits.apiary.io/#introduction/definitions/measurement-units","unitSystem":{"typeid":"system"}},"unit.absolute":{"parentUnit":{"typeid":"unit.relative","description":"Relative unit from which this absolute unit is derived."},"offset":{"typeid":"Float64","value":0,"description":"An offset used to position an absolute scale of measurement on the number line."}},"unit.derived":{"parentFactors":{},"parentUnits":{}},"unit.primitive":{},"unit.primitive.dimensional":{"dimension":{"typeid":"dimension"}},"unit.relative":{}},"factor":{"nineFifths":{"factor":1.8},"pi":{"factor":3.14159265358979},"atto":{"parentFactors":{"ten":-18}},"centi":{"parentFactors":{"ten":-2}},"deci":{"parentFactors":{"ten":-1}},"deka":{"parentFactors":{"ten":1}},"exa":{"parentFactors":{"ten":18}},"femto":{"parentFactors":{"ten":-15}},"giga":{"parentFactors":{"ten":9}},"hecto":{"parentFactors":{"ten":2}},"kilo":{"parentFactors":{"ten":3}},"mega":{"parentFactors":{"ten":6}},"micro":{"parentFactors":{"ten":-6}},"milli":{"parentFactors":{"ten":-3}},"nano":{"parentFactors":{"ten":-9}},"peta":{"parentFactors":{"ten":15}},"pico":{"parentFactors":{"ten":-12}},"tera":{"parentFactors":{"ten":12}},"yocto":{"parentFactors":{"ten":-24}},"yotta":{"parentFactors":{"ten":24}},"zepto":{"parentFactors":{"ten":-21}},"zetta":{"parentFactors":{"ten":21}},"ten":{"factor":10},"threeHundredSixty":{"factor":360},"threeThousandNineHundredThirtySeven":{"factor":3937},"twelve":{"factor":12}},"dimension":{"currency":{},"electricCurrent":{},"length":{},"luminousIntensity":{},"mass":{},"temperature":{},"time":{}},"unit":{"1ToRatio":{"unitSystem":"Metric","parentUnits":{"ratioTo1":-1},"symbols":{"1Colon":{"text":"1:","placement":"Prefix","space":false}}},"acres":{"unitSystem":"Imperial","factor":4840,"parentUnits":{"squareYards":1},"symbols":{"acres":{"text":"acres","placement":"Suffix","space":true}}},"ampereHours":{"unitSystem":"Metric","parentUnits":{"amperes":1,"hours":1},"symbols":{"aDashH":{"text":"A-h","placement":"Suffix","space":true}}},"ampereSeconds":{"unitSystem":"Metric","parentUnits":{"amperes":1,"seconds":1},"symbols":{"aDashS":{"text":"A-s","placement":"Suffix","space":true}}},"amperes":{"unitSystem":"Metric","dimension":"electricCurrent","symbols":{"ampere":{"text":"A","placement":"Suffix","space":true}}},"atmospheres":{"unitSystem":"Imperial","factor":101325,"parentUnits":{"pascals":1},"symbols":{"atm":{"text":"atm","placement":"Suffix","space":true}}},"bars":{"unitSystem":"Metric","factor":100,"parentUnits":{"kilopascals":1},"symbols":{"bar":{"text":"bar","placement":"Suffix","space":true}}},"britishThermalUnits":{"unitSystem":"Imperial","factor":1055.05585262,"parentUnits":{"joules":1},"symbols":{"btu":{"text":"Btu","placement":"Suffix","space":true}}},"britishThermalUnitsPerDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnits":1,"fahrenheitInterval":-1},"symbols":{"btuPerDegreeF":{"text":"BTU/°F","placement":"Suffix","space":true}}},"britishThermalUnitsPerHour":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnits":1,"hours":-1},"symbols":{"btuPerH":{"text":"Btu/h","placement":"Suffix","space":true}}},"britishThermalUnitsPerHourCubicFoot":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnitsPerHour":1,"cubicFeet":-1},"symbols":{"btuPerHFtSup3":{"text":"Btu/(h·ft³)","placement":"Suffix","space":true}}},"britishThermalUnitsPerHourFootDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnitsPerHour":1,"feet":-1,"fahrenheitInterval":-1},"symbols":{"btuPerHFtDegreeF":{"text":"BTU/(h·ft·°F)","placement":"Suffix","space":true}}},"britishThermalUnitsPerHourSquareFoot":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnitsPerHour":1,"squareFeet":-1},"symbols":{"btuPerHFtSup2":{"text":"Btu/(h·ft²)","placement":"Suffix","space":true}}},"britishThermalUnitsPerHourSquareFootDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnitsPerHourSquareFoot":1,"fahrenheitInterval":-1},"symbols":{"btuPerHFtSup2DegreeF":{"text":"BTU/(h·ft²·°F)","placement":"Suffix","space":true}}},"britishThermalUnitsPerPound":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnits":1,"poundsMass":-1},"symbols":{"btuPerLb":{"text":"BTU/lb","placement":"Suffix","space":true}}},"britishThermalUnitsPerPoundDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnitsPerPound":1,"fahrenheitInterval":-1},"symbols":{"btuPerLbDegreeF":{"text":"BTU/(lb·°F)","placement":"Suffix","space":true}}},"britishThermalUnitsPerSecond":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnits":1,"seconds":-1},"symbols":{"btuPerS":{"text":"Btu/s","placement":"Suffix","space":true}}},"britishThermalUnitsPerSquareFootDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnits":1,"squareFeet":-1,"fahrenheitInterval":-1},"symbols":{"btuPerFtSup2DegreeF":{"text":"BTU/(ft²·°F)","placement":"Suffix","space":true}}},"calories":{"unitSystem":"Metric","factor":4.1868,"parentUnits":{"joules":1},"symbols":{"cal":{"text":"cal","placement":"Suffix","space":true}}},"caloriesPerSecond":{"unitSystem":"Metric","parentUnits":{"calories":1,"seconds":-1},"symbols":{"calPerS":{"text":"cal/s","placement":"Suffix","space":true}}},"candelas":{"unitSystem":"Metric","dimension":"luminousIntensity","symbols":{"cd":{"text":"cd","placement":"Suffix","space":true}}},"candelasPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"candelas":1,"squareFeet":-1},"symbols":{"cdPerFtSup2":{"text":"cd/ft²","placement":"Suffix","space":true}}},"candelasPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"candelas":1,"squareMeters":-1},"symbols":{"cdPerMSup2":{"text":"cd/m²","placement":"Suffix","space":true}}},"celsius":{"unitSystem":"Metric","parentUnit":"celsiusInterval","offset":273.15,"symbols":{"degreeC":{"text":"°C","placement":"Suffix","space":true}}},"celsiusInterval":{"unitSystem":"Metric","parentUnits":{"kelvinInterval":1},"symbols":{"degreeCInterval":{"text":"°C","placement":"Suffix","space":true},"deltaDegreeC":{"text":"delta°C","placement":"Suffix","space":true}}},"centimeters":{"unitSystem":"Metric","parentFactors":{"centi":1},"parentUnits":{"meters":1},"symbols":{"cm":{"text":"cm","placement":"Suffix","space":true}}},"centimetersPerMinute":{"unitSystem":"Metric","parentUnits":{"centimeters":1,"minutes":-1},"symbols":{"cmPerMin":{"text":"cm/min","placement":"Suffix","space":true}}},"centimetersToTheFourthPower":{"unitSystem":"Metric","parentUnits":{"centimeters":4},"symbols":{"cmSup4":{"text":"cm⁴","placement":"Suffix","space":true}}},"centimetersToTheSixthPower":{"unitSystem":"Metric","parentUnits":{"centimeters":6},"symbols":{"cmSup6":{"text":"cm⁶","placement":"Suffix","space":true}}},"centipoises":{"unitSystem":"Metric","parentFactors":{"centi":1},"parentUnits":{"poises":1},"symbols":{"cP":{"text":"cP","placement":"Suffix","space":true}}},"circularMils":{"unitSystem":"Imperial","factor":0.25,"parentFactors":{"pi":1},"parentUnits":{"squareMils":1},"symbols":{"cMil":{"text":"cmil","placement":"Suffix","space":true}}},"coulombs":{"unitSystem":"Metric","parentUnits":{"ampereSeconds":1},"symbols":{"coulomb":{"text":"C","placement":"Suffix","space":true}}},"cubicCentimeters":{"defaultSymbol":"cmSup3","unitSystem":"Metric","parentUnits":{"centimeters":3},"symbols":{"cmCaret3":{"text":"cm^3","placement":"Suffix","space":true},"cmSup3":{"text":"cm³","placement":"Suffix","space":true}}},"cubicFeet":{"defaultSymbol":"ftSup3","unitSystem":"Imperial","parentUnits":{"feet":3},"symbols":{"cf":{"text":"CF","placement":"Suffix","space":true},"ftCaret3":{"text":"ft^3","placement":"Suffix","space":true},"ftSup3":{"text":"ft³","placement":"Suffix","space":true}}},"cubicFeetPerHour":{"defaultSymbol":"ftSup3PerHour","unitSystem":"Imperial","parentUnits":{"cubicFeet":1,"hours":-1},"symbols":{"cfh":{"text":"CFH","placement":"Suffix","space":true},"ftSup3PerH":{"text":"ft³/h","placement":"Suffix","space":true}}},"cubicFeetPerKip":{"unitSystem":"Imperial","parentUnits":{"cubicFeet":1,"kips":-1},"symbols":{"ftSup3PerKip":{"text":"ft³/kip","placement":"Suffix","space":true}}},"cubicFeetPerMinute":{"defaultSymbol":"ftSup3PerMin","unitSystem":"Imperial","parentUnits":{"cubicFeet":1,"minutes":-1},"symbols":{"cfm":{"text":"CFM","placement":"Suffix","space":true},"ftSup3PerMin":{"text":"ft³/min","placement":"Suffix","space":true}}},"cubicFeetPerMinuteCubicFoot":{"defaultSymbol":"cfmPerFtSup3","unitSystem":"Imperial","parentUnits":{"cubicFeetPerMinute":1,"cubicFeet":-1},"symbols":{"cfmPerCf":{"text":"CFM/CF","placement":"Suffix","space":true},"cfmPerFtSup3":{"text":"CFM/ft³","placement":"Suffix","space":true}}},"cubicFeetPerMinutePerBritishThermalUnitPerHour":{"unitSystem":"Imperial","parentUnits":{"cubicFeetPerMinute":1,"britishThermalUnitsPerHour":-1},"symbols":{"ftSup3HPerMinBtu":{"text":"ft³·h/(min·Btu)","placement":"Suffix","space":true}}},"cubicFeetPerMinuteSquareFoot":{"defaultSymbol":"cfmPerFtSup2","unitSystem":"Imperial","parentUnits":{"cubicFeetPerMinute":1,"squareFeet":-1},"symbols":{"cfmPerFtSup2":{"text":"CFM/ft²","placement":"Suffix","space":true},"cfmPerSf":{"text":"CFM/SF","placement":"Suffix","space":true}}},"cubicFeetPerMinuteSquareMeter":{"unitSystem":"Metric","parentUnits":{"cubicFeetPerMinute":1,"squareMeters":-1}},"cubicFeetPerMinuteTonOfRefrigeration":{"unitSystem":"Imperial","parentUnits":{"cubicFeetPerMinute":1,"tonsOfRefrigeration":-1},"symbols":{"cfmPerTon":{"text":"CFM/ton","placement":"Suffix","space":true}}},"cubicFeetPerPoundMass":{"unitSystem":"Imperial","parentUnits":{"cubicFeet":1,"poundsMass":-1},"symbols":{"ftSup3PerLbMass":{"text":"ft³/lb","placement":"Suffix","space":true}}},"cubicInches":{"defaultSymbol":"inSup3","unitSystem":"Imperial","parentUnits":{"inches":3},"symbols":{"inCaret3":{"text":"in^3","placement":"Suffix","space":true},"inSup3":{"text":"in³","placement":"Suffix","space":true}}},"cubicMeters":{"defaultSymbol":"mSup3","unitSystem":"Metric","parentUnits":{"meters":3},"symbols":{"mCaret3":{"text":"m^3","placement":"Suffix","space":true},"mSup3":{"text":"m³","placement":"Suffix","space":true}}},"cubicMetersPerHour":{"defaultSymbol":"mSup3PerH","unitSystem":"Metric","parentUnits":{"cubicMeters":1,"hours":-1},"symbols":{"cmh":{"text":"CMH","placement":"Suffix","space":true},"mSup3PerH":{"text":"m³/h","placement":"Suffix","space":true}}},"cubicMetersPerHourCubicMeter":{"unitSystem":"Metric","parentUnits":{"cubicMetersPerHour":1,"cubicMeters":-1},"symbols":{"mSup3PerHMSup3":{"text":"m³/(h·m³)","placement":"Suffix","space":true}}},"cubicMetersPerHourSquareMeter":{"unitSystem":"Metric","parentUnits":{"cubicMetersPerHour":1,"squareMeters":-1},"symbols":{"mSup3PerHMSup2":{"text":"m³/(h·m²)","placement":"Suffix","space":true}}},"cubicMetersPerKilogram":{"unitSystem":"Metric","parentUnits":{"cubicMeters":1,"kilograms":-1},"symbols":{"mSup3PerKg":{"text":"m³/kg","placement":"Suffix","space":true}}},"cubicMetersPerKilonewton":{"unitSystem":"Metric","parentUnits":{"cubicMeters":1,"kilonewtons":-1},"symbols":{"mSup3PerKN":{"text":"m³/kN","placement":"Suffix","space":true}}},"cubicMetersPerSecond":{"defaultSymbol":"mSup3PerS","unitSystem":"Metric","parentUnits":{"cubicMeters":1,"seconds":-1},"symbols":{"cms":{"text":"CMS","placement":"Suffix","space":true},"mSup3PerS":{"text":"m³/s","placement":"Suffix","space":true}}},"cubicMetersPerWattSecond":{"unitSystem":"Metric","parentUnits":{"cubicMeters":1,"watts":-1,"seconds":-1},"symbols":{"mSup3PerWS":{"text":"m³/(W·s)","placement":"Suffix","space":true}}},"cubicMillimeters":{"defaultSymbol":"mmSup3","unitSystem":"Metric","parentUnits":{"millimeters":3},"symbols":{"mmCaret3":{"text":"mm^3","placement":"Suffix","space":true},"mmSup3":{"text":"mm³","placement":"Suffix","space":true}}},"cubicYards":{"unitSystem":"Imperial","parentUnits":{"yards":3},"symbols":{"cy":{"text":"CY","placement":"Suffix","space":true}}},"currency":{"defaultSymbol":"usDollar","unitSystem":"Imperial","dimension":"currency","symbols":{"baht":{"description":"Baht is the official currency of Thailand.","text":"฿","placement":"Prefix","space":false},"chineseHongKongDollar":{"description":"Hong Kong Dollar is the official currency of Hong Kong..","text":"HK$","placement":"Prefix","space":false},"dong":{"description":"Dong is the official currency of Vietnam.","text":"₫","placement":"Suffix","space":false},"euroPrefix":{"text":"€","placement":"Prefix","space":false},"euroSuffix":{"text":"€","placement":"Suffix","space":false},"krone":{"description":"Krone is the official currency of Denmark, Greenland, and the Faroe Islands.","text":"kr","placement":"Suffix","space":true},"shekel":{"description":"Shekel is the official currency of Israel.","text":"₪","placement":"Prefix","space":false},"ukPound":{"text":"£","placement":"Prefix","space":false},"usDollar":{"text":"$","placement":"Prefix","space":false},"won":{"description":"Won is the official currency of South Korea.","text":"₩","placement":"Prefix","space":false},"yen":{"text":"¥","placement":"Prefix","space":false}}},"currencyPerBritishThermalUnit":{"unitSystem":"Imperial","parentUnits":{"currency":1,"britishThermalUnits":-1},"symbols":{"dollarPerBtu":{"text":"$/Btu","placement":"Suffix","space":true}}},"currencyPerBritishThermalUnitPerHour":{"unitSystem":"Imperial","parentUnits":{"currency":1,"britishThermalUnitsPerHour":-1},"symbols":{"dollarHPerBtu":{"text":"$·h/Btu","placement":"Suffix","space":true}}},"currencyPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"currency":1,"squareFeet":-1},"symbols":{"dollarPerFtSup2":{"text":"$/ft²","placement":"Suffix","space":true}}},"currencyPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"currency":1,"squareMeters":-1},"symbols":{"dollarPerMSup2":{"text":"$/m²","placement":"Suffix","space":true}}},"currencyPerWatt":{"unitSystem":"Metric","parentUnits":{"currency":1,"watts":-1},"symbols":{"dollarPerW":{"text":"$/W","placement":"Suffix","space":true}}},"currencyPerWattHour":{"unitSystem":"Metric","parentUnits":{"currency":1,"watts":-1,"hours":-1},"symbols":{"dollarPerWH":{"text":"$/(W·h)","placement":"Suffix","space":true}}},"cyclesPerSecond":{"unitSystem":"Metric","parentUnits":{"seconds":-1},"symbols":{"cps":{"text":"cps","placement":"Suffix","space":true}}},"decimeters":{"unitSystem":"Metric","parentFactors":{"deci":1},"parentUnits":{"meters":1},"symbols":{"dm":{"text":"dm","placement":"Suffix","space":true}}},"degrees":{"defaultSymbol":"degree","unitSystem":"Metric","parentFactors":{"threeHundredSixty":-1},"parentUnits":{"turns":1},"symbols":{"degree":{"text":"°","placement":"Suffix","space":false},"degreesMinutesSeconds":{"inherits":"symbol"}}},"dekanewtonMeters":{"unitSystem":"Metric","parentUnits":{"dekanewtons":1,"meters":1},"symbols":{"daNDashM":{"text":"daN-m","placement":"Suffix","space":true}}},"dekanewtonMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"dekanewtonMeters":1,"meters":-1},"symbols":{"daNDashMPerM":{"text":"daN-m/m","placement":"Suffix","space":true}}},"dekanewtons":{"unitSystem":"Metric","parentFactors":{"deka":1},"parentUnits":{"newtons":1},"symbols":{"daN":{"text":"daN","placement":"Suffix","space":true}}},"dekanewtonsPerMeter":{"unitSystem":"Metric","parentUnits":{"dekanewtons":1,"meters":-1},"symbols":{"daNPerM":{"text":"daN/m","placement":"Suffix","space":true}}},"dekanewtonsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"dekanewtons":1,"squareMeters":-1},"symbols":{"daNPerMSup2":{"text":"daN/m²","placement":"Suffix","space":true}}},"dynes":{"unitSystem":"Metric","factor":10,"parentFactors":{"micro":1},"parentUnits":{"newtons":1},"symbols":{"dyn":{"text":"dyn","placement":"Suffix","space":true}}},"ergs":{"unitSystem":"Metric","parentFactors":{"ten":-7},"parentUnits":{"joules":1},"symbols":{"erg":{"text":"erg","placement":"Suffix","space":true}}},"fahrenheit":{"unitSystem":"Imperial","parentUnit":"fahrenheitInterval","offset":459.67,"symbols":{"degreeF":{"text":"°F","placement":"Suffix","space":true}}},"fahrenheitInterval":{"defaultSymbol":"degreeFInterval","unitSystem":"Imperial","parentUnits":{"rankineInterval":1},"symbols":{"degreeFInterval":{"text":"°F","placement":"Suffix","space":true},"deltaDegreeF":{"text":"delta°F","placement":"Suffix","space":true}}},"farads":{"unitSystem":"Metric","parentUnits":{"coulombs":1,"volts":-1},"symbols":{"farad":{"text":"F","placement":"Suffix","space":true}}},"feet":{"defaultSymbol":"feetAndInches","unitSystem":"Imperial","factor":12,"parentUnits":{"inches":1},"symbols":{"feetAndInches":{"inherits":"symbol"},"footSingleQuote":{"text":"\'","placement":"Suffix","space":false},"ft":{"text":"ft","placement":"Suffix","space":true},"lf":{"text":"LF","placement":"Suffix","space":true}}},"feetOfWater39.2DegreesFahrenheit":{"defaultSymbol":"feetOfWater","unitSystem":"Imperial","factor":2988.98,"parentUnits":{"pascals":1},"symbols":{"feetOfWater":{"text":"Feet","placement":"Suffix","space":true},"ftH2O":{"text":"ftH2O","placement":"Suffix","space":true},"ftOfWater":{"text":"FT","placement":"Suffix","space":true}}},"feetOfWater39.2DegreesFahrenheitPer100Feet":{"defaultSymbol":"feetOfWaterPer100ft","unitSystem":"Imperial","factor":0.01,"parentUnits":{"feetOfWater39.2DegreesFahrenheit":1,"feet":-1},"symbols":{"feetOfWaterPer100ft":{"text":"Feet/100ft","placement":"Suffix","space":true},"ftH2OPer100ft":{"text":"ftH2O/100ft","placement":"Suffix","space":true},"ftOfWaterPer100ft":{"text":"FT/100ft","placement":"Suffix","space":true}}},"feetPerKip":{"unitSystem":"Imperial","parentUnits":{"feet":1,"kips":-1},"symbols":{"ftPerKip":{"text":"ft/kip","placement":"Suffix","space":true}}},"feetPerKipFoot":{"unitSystem":"Imperial","parentUnits":{"feet":1,"kipFeet":-1},"symbols":{"ftPerKipDashFt":{"text":"ft/kip-ft","placement":"Suffix","space":true}}},"feetPerMinute":{"defaultSymbol":"fpm","unitSystem":"Imperial","parentUnits":{"feet":1,"minutes":-1},"symbols":{"fpm":{"text":"FPM","placement":"Suffix","space":true},"ftPerMin":{"text":"ft/min","placement":"Suffix","space":true}}},"feetPerSecond":{"defaultSymbol":"fps","unitSystem":"Imperial","parentUnits":{"feet":1,"seconds":-1},"symbols":{"fps":{"text":"FPS","placement":"Suffix","space":true},"ftPerS":{"text":"ft/s","placement":"Suffix","space":true}}},"feetPerSecondSquared":{"unitSystem":"Imperial","parentUnits":{"feetPerSecond":1,"seconds":-1},"symbols":{"ftPerSSup2":{"text":"ft/s²","placement":"Suffix","space":true}}},"feetToTheFourthPower":{"unitSystem":"Imperial","parentUnits":{"feet":4},"symbols":{"ftSup4":{"text":"ft⁴","placement":"Suffix","space":true}}},"feetToTheSixthPower":{"unitSystem":"Imperial","parentUnits":{"feet":6},"symbols":{"ftSup6":{"text":"ft⁶","placement":"Suffix","space":true}}},"fixed":{"unitSystem":"Metric","parentUnits":{"ratioTo1":1}},"footcandles":{"defaultSymbol":"fc","unitSystem":"Imperial","parentUnits":{"lumens":1,"squareFeet":-1},"symbols":{"fc":{"text":"fc","placement":"Suffix","space":true},"ftc":{"text":"Ftc","placement":"Suffix","space":true}}},"footlamberts":{"defaultSymbol":"fL","unitSystem":"Imperial","parentFactors":{"pi":-1},"parentUnits":{"candelas":1,"squareFeet":-1},"symbols":{"fL":{"text":"fL","placement":"Suffix","space":true},"flLowercase":{"text":"fl","placement":"Suffix","space":true},"ftL":{"text":"ftL","placement":"Suffix","space":true}}},"gammas":{"unitSystem":"Metric","parentFactors":{"nano":1},"parentUnits":{"teslas":1},"symbols":{"gamma":{"text":"gamma","placement":"Suffix","space":true}}},"gauss":{"unitSystem":"Metric","parentFactors":{"ten":-4},"parentUnits":{"teslas":1},"symbols":{"gs":{"text":"Gs","placement":"Suffix","space":true}}},"general":{"unitSystem":"Metric","parentUnits":{"ratioTo1":1}},"gigajoules":{"unitSystem":"Metric","parentFactors":{"giga":1},"parentUnits":{"joules":1}},"gradians":{"unitSystem":"Metric","factor":0.9,"parentUnits":{"degrees":1},"symbols":{"grad":{"text":"grad","placement":"Suffix","space":true}}},"grains":{"unitSystem":"Imperial","factor":64.79891,"parentUnits":{"milligrams":1},"symbols":{"gr":{"text":"gr","placement":"Suffix","space":true}}},"grainsPerHourSquareFootInchMercury":{"unitSystem":"Imperial","parentUnits":{"grains":1,"hours":-1,"squareFeet":-1,"inchesOfMercury32DegreesFahrenheit":-1},"symbols":{"grPerHFtSup2InHg":{"text":"gr/(h·ft²·inHg)","placement":"Suffix","space":true}}},"grams":{"unitSystem":"Metric","factor":0.001,"parentUnits":{"kilograms":1},"symbols":{"gram":{"text":"g","placement":"Suffix","space":true}}},"hectares":{"unitSystem":"Metric","parentUnits":{"squareHectometers":1},"symbols":{"hectare":{"text":"hectare","placement":"Suffix","space":true}}},"hectometers":{"unitSystem":"Metric","parentFactors":{"hecto":1},"parentUnits":{"meters":1},"symbols":{"hm":{"text":"hm","placement":"Suffix","space":true}}},"henries":{"unitSystem":"Metric","parentUnits":{"ohms":1,"seconds":1},"symbols":{"henry":{"text":"H","placement":"Suffix","space":true}}},"hertz":{"unitSystem":"Metric","parentUnits":{"cyclesPerSecond":1},"symbols":{"hz":{"text":"Hz","placement":"Suffix","space":true}}},"horsepower":{"unitSystem":"Imperial","factor":33000,"parentUnits":{"poundForceFeet":1,"minutes":-1},"symbols":{"hp":{"text":"hp","placement":"Suffix","space":true}}},"hourSquareFootDegreesFahrenheitPerBritishThermalUnit":{"unitSystem":"Imperial","parentUnits":{"hours":1,"squareFeet":1,"fahrenheitInterval":1,"britishThermalUnits":-1},"symbols":{"hFtSup2DegreeFPerBtu":{"text":"(h·ft²·°F)/BTU","placement":"Suffix","space":true}}},"hours":{"unitSystem":"Metric","factor":60,"parentUnits":{"minutes":1},"symbols":{"hour":{"text":"h","placement":"Suffix","space":true}}},"inches":{"defaultSymbol":"in","unitSystem":"Imperial","factor":2.54,"parentUnits":{"centimeters":1},"symbols":{"in":{"text":"in","placement":"Suffix","space":true},"inchDoubleQuote":{"text":"\\"","placement":"Suffix","space":false}}},"inchesOfMercury32DegreesFahrenheit":{"unitSystem":"Imperial","factor":3386.389,"parentUnits":{"pascals":1},"symbols":{"inHg":{"text":"inHg","placement":"Suffix","space":true}}},"inchesOfWater60DegreesFahrenheit":{"unitSystem":"Imperial","factor":248.84,"parentUnits":{"pascals":1},"symbols":{"inDashWg":{"text":"in-wg","placement":"Suffix","space":true}}},"inchesOfWater60DegreesFahrenheitPer100Feet":{"unitSystem":"Imperial","factor":0.01,"parentUnits":{"inchesOfWater60DegreesFahrenheit":1,"feet":-1},"symbols":{"inDashWgPer100ft":{"text":"in-wg/100ft","placement":"Suffix","space":true}}},"inchesPerSecond":{"unitSystem":"Imperial","parentUnits":{"inches":1,"seconds":-1},"symbols":{"inPerS":{"text":"in/s","placement":"Suffix","space":true}}},"inchesPerSecondSquared":{"unitSystem":"Imperial","parentUnits":{"inchesPerSecond":1,"seconds":-1},"symbols":{"inPerSSup2":{"text":"in/s²","placement":"Suffix","space":true}}},"inchesToTheFourthPower":{"unitSystem":"Imperial","parentUnits":{"inches":4},"symbols":{"inSup4":{"text":"in⁴","placement":"Suffix","space":true}}},"inchesToTheSixthPower":{"unitSystem":"Imperial","parentUnits":{"inches":6},"symbols":{"inSup6":{"text":"in⁶","placement":"Suffix","space":true}}},"inverseDegreesCelsius":{"unitSystem":"Metric","parentUnits":{"celsiusInterval":-1},"symbols":{"invDegreeC":{"text":"1/°C","placement":"Suffix","space":true}}},"inverseDegreesFahrenheit":{"unitSystem":"Imperial","parentUnits":{"fahrenheitInterval":-1},"symbols":{"invDegreeF":{"text":"1/°F","placement":"Suffix","space":true}}},"inverseKilonewtons":{"unitSystem":"Metric","parentUnits":{"kilonewtons":-1},"symbols":{"invKN":{"text":"1/kN","placement":"Suffix","space":true}}},"inverseKips":{"unitSystem":"Imperial","parentUnits":{"kips":-1},"symbols":{"invKip":{"text":"1/kip","placement":"Suffix","space":true}}},"joules":{"unitSystem":"Metric","parentUnits":{"newtonMeters":1},"symbols":{"joule":{"text":"J","placement":"Suffix","space":true}}},"joulesPerGram":{"unitSystem":"Metric","parentUnits":{"joules":1,"grams":-1},"symbols":{"jPerG":{"text":"J/g","placement":"Suffix","space":true}}},"joulesPerGramDegreeCelsius":{"unitSystem":"Metric","parentUnits":{"joulesPerGram":1,"celsiusInterval":-1},"symbols":{"jPerGDegreeC":{"text":"J/(g·°C)","placement":"Suffix","space":true}}},"joulesPerKelvin":{"unitSystem":"Metric","parentUnits":{"joules":1,"kelvinInterval":-1},"symbols":{"jPerK":{"text":"J/K","placement":"Suffix","space":true}}},"joulesPerKilogram":{"unitSystem":"Metric","parentUnits":{"joules":1,"kilograms":-1},"symbols":{"jPerKg":{"text":"J/kg","placement":"Suffix","space":true}}},"joulesPerKilogramDegreeCelsius":{"unitSystem":"Metric","parentUnits":{"joulesPerKilogram":1,"celsiusInterval":-1},"symbols":{"jPerKgDegreeC":{"text":"J/(kg·°C)","placement":"Suffix","space":true}}},"joulesPerSquareMeterKelvin":{"unitSystem":"Metric","parentUnits":{"joules":1,"squareMeters":-1,"kelvinInterval":-1},"symbols":{"jPerMSup2K":{"text":"J/(m²·K)","placement":"Suffix","space":true}}},"kelvin":{"unitSystem":"Metric","parentUnit":"kelvinInterval","symbols":{"kelvin":{"text":"K","placement":"Suffix","space":true}}},"kelvinInterval":{"defaultSymbol":"deltaK","unitSystem":"Metric","dimension":"temperature","symbols":{"deltaK":{"text":"deltaK","placement":"Suffix","space":true},"kelvinInterval":{"text":"K","placement":"Suffix","space":true}}},"kiloamperes":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"amperes":1},"symbols":{"kA":{"text":"kA","placement":"Suffix","space":true}}},"kilocalories":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"calories":1},"symbols":{"kcal":{"text":"kcal","placement":"Suffix","space":true}}},"kilocaloriesPerSecond":{"unitSystem":"Metric","parentUnits":{"kilocalories":1,"seconds":-1},"symbols":{"kcalPerS":{"text":"kcal/s","placement":"Suffix","space":true}}},"kilogramForceMeters":{"unitSystem":"Metric","parentUnits":{"kilogramsForce":1,"meters":1},"symbols":{"kgfDashM":{"text":"kgf-m","placement":"Suffix","space":true}}},"kilogramForceMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"kilogramForceMeters":1,"meters":-1},"symbols":{"kgfDashMPerM":{"text":"kgf-m/m","placement":"Suffix","space":true}}},"kilogramKelvins":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"kelvinInterval":1},"symbols":{"kgK":{"text":"kg·K","placement":"Suffix","space":true}}},"kilograms":{"unitSystem":"Metric","dimension":"mass","symbols":{"kg":{"text":"kg","placement":"Suffix","space":true}}},"kilogramsForce":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"standardGravity":1},"symbols":{"kgf":{"text":"kgf","placement":"Suffix","space":true}}},"kilogramsForcePerMeter":{"unitSystem":"Metric","parentUnits":{"kilogramsForce":1,"meters":-1},"symbols":{"kgfPerM":{"text":"kgf/m","placement":"Suffix","space":true}}},"kilogramsForcePerSquareMeter":{"unitSystem":"Metric","parentUnits":{"kilogramsForce":1,"squareMeters":-1},"symbols":{"kgfPerMSup2":{"text":"kgf/m²","placement":"Suffix","space":true}}},"kilogramsPerCubicCentimeter":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"cubicCentimeters":-1}},"kilogramsPerCubicMeter":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"cubicMeters":-1},"symbols":{"kgPerMSup3":{"text":"kg/m³","placement":"Suffix","space":true}}},"kilogramsPerHour":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"hours":-1},"symbols":{"kgPerH":{"text":"kg/h","placement":"Suffix","space":true}}},"kilogramsPerKilogramKelvin":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"kilogramKelvins":-1},"symbols":{"kgPerKgK":{"text":"kg/(kg·K)","placement":"Suffix","space":true}}},"kilogramsPerMeter":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"meters":-1},"symbols":{"kgPerM":{"text":"kg/m","placement":"Suffix","space":true}}},"kilogramsPerMeterHour":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"meters":-1,"hours":-1},"symbols":{"kgPerMH":{"text":"kg/(m·h)","placement":"Suffix","space":true}}},"kilogramsPerMeterSecond":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"meters":-1,"seconds":-1},"symbols":{"kgPerMS":{"text":"kg/(m·s)","placement":"Suffix","space":true}}},"kilogramsPerMinute":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"minutes":-1},"symbols":{"kgPerMin":{"text":"kg/min","placement":"Suffix","space":true}}},"kilogramsPerSecond":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"seconds":-1},"symbols":{"kgPerS":{"text":"kg/s","placement":"Suffix","space":true}}},"kilogramsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"squareMeters":-1},"symbols":{"kgPerMSup2":{"text":"kg/m²","placement":"Suffix","space":true}}},"kilojoules":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"joules":1},"symbols":{"kJ":{"text":"kJ","placement":"Suffix","space":true}}},"kilojoulesPerKelvin":{"unitSystem":"Metric","parentUnits":{"kilojoules":1,"kelvinInterval":-1},"symbols":{"kJPerK":{"text":"kJ/K","placement":"Suffix","space":true}}},"kilojoulesPerSquareMeterKelvin":{"unitSystem":"Metric","parentUnits":{"kilojoules":1,"squareMeters":-1,"kelvinInterval":-1},"symbols":{"kJPerMSup2K":{"text":"kJ/(m²·K)","placement":"Suffix","space":true}}},"kilometers":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"meters":1},"symbols":{"km":{"text":"km","placement":"Suffix","space":true}}},"kilometersPerHour":{"unitSystem":"Metric","parentUnits":{"kilometers":1,"hours":-1},"symbols":{"kmPerH":{"text":"km/h","placement":"Suffix","space":true}}},"kilometersPerSecond":{"unitSystem":"Metric","parentUnits":{"kilometers":1,"seconds":-1},"symbols":{"kmPerS":{"text":"km/s","placement":"Suffix","space":true}}},"kilometersPerSecondSquared":{"unitSystem":"Metric","parentUnits":{"kilometersPerSecond":1,"seconds":-1},"symbols":{"kmPerSSup2":{"text":"km/s²","placement":"Suffix","space":true}}},"kilonewtonMeters":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"meters":1},"symbols":{"kNDashM":{"text":"kN-m","placement":"Suffix","space":true}}},"kilonewtonMetersPerDegree":{"unitSystem":"Metric","parentUnits":{"kilonewtonMeters":1,"degrees":-1},"symbols":{"kNDashMPerDegree":{"text":"kN-m/°","placement":"Suffix","space":true}}},"kilonewtonMetersPerDegreePerMeter":{"unitSystem":"Metric","parentUnits":{"kilonewtonMetersPerDegree":1,"meters":-1},"symbols":{"kNDashMPerDegreePerM":{"text":"kN-m/°/m","placement":"Suffix","space":true}}},"kilonewtonMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"kilonewtonMeters":1,"meters":-1},"symbols":{"kNDashMPerM":{"text":"kN-m/m","placement":"Suffix","space":true}}},"kilonewtons":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"newtons":1},"symbols":{"kN":{"text":"kN","placement":"Suffix","space":true}}},"kilonewtonsPerCubicMeter":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"cubicMeters":-1},"symbols":{"kNPerMSup3":{"text":"kN/m³","placement":"Suffix","space":true}}},"kilonewtonsPerMeter":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"meters":-1},"symbols":{"kNPerM":{"text":"kN/m","placement":"Suffix","space":true}}},"kilonewtonsPerSquareCentimeter":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"squareCentimeters":-1},"symbols":{"kNPerCmSup2":{"text":"kN/cm²","placement":"Suffix","space":true}}},"kilonewtonsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"squareMeters":-1},"symbols":{"kNPerMSup2":{"text":"kN/m²","placement":"Suffix","space":true}}},"kilonewtonsPerSquareMillimeter":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"squareMillimeters":-1},"symbols":{"kNPerMmSup2":{"text":"kN/mm²","placement":"Suffix","space":true}}},"kilopascals":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"pascals":1},"symbols":{"kPa":{"text":"kPa","placement":"Suffix","space":true}}},"kilovoltAmperes":{"unitSystem":"Metric","parentUnits":{"kilovolts":1,"amperes":1},"symbols":{"kVA":{"text":"kVA","placement":"Suffix","space":true}}},"kilovolts":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"volts":1},"symbols":{"kV":{"text":"kV","placement":"Suffix","space":true}}},"kilowattHours":{"unitSystem":"Metric","parentUnits":{"kilowatts":1,"hours":1},"symbols":{"kWh":{"text":"kWh","placement":"Suffix","space":true}}},"kilowattHoursPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"kilowattHours":1,"squareMeters":-1},"symbols":{"kWhPerMSup2":{"text":"kWh/m²","placement":"Suffix","space":true}}},"kilowatts":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"watts":1},"symbols":{"kW":{"text":"kW","placement":"Suffix","space":true}}},"kipFeet":{"unitSystem":"Imperial","parentUnits":{"kips":1,"feet":1},"symbols":{"kipDashFt":{"text":"kip-ft","placement":"Suffix","space":true}}},"kipFeetPerDegree":{"unitSystem":"Imperial","parentUnits":{"kipFeet":1,"degrees":-1},"symbols":{"kipDashFtPerDegree":{"text":"kip-ft/°","placement":"Suffix","space":true}}},"kipFeetPerDegreePerFoot":{"unitSystem":"Imperial","parentUnits":{"kipFeetPerDegree":1,"feet":-1},"symbols":{"kipDashFtPerDegreePerFt":{"text":"kip-ft/°/ft","placement":"Suffix","space":true}}},"kipFeetPerFoot":{"unitSystem":"Imperial","parentUnits":{"kipFeet":1,"feet":-1},"symbols":{"kipDashFtPerFt":{"text":"kip-ft/ft","placement":"Suffix","space":true}}},"kips":{"unitSystem":"Imperial","parentFactors":{"kilo":1},"parentUnits":{"poundsForce":1},"symbols":{"kip":{"text":"kip","placement":"Suffix","space":true}}},"kipsPerCubicFoot":{"unitSystem":"Imperial","parentUnits":{"kips":1,"cubicFeet":-1},"symbols":{"kipPerFtSup3":{"text":"kip/ft³","placement":"Suffix","space":true}}},"kipsPerCubicInch":{"unitSystem":"Imperial","parentUnits":{"kips":1,"cubicInches":-1},"symbols":{"kipPerInSup3":{"text":"kip/in³","placement":"Suffix","space":true}}},"kipsPerFoot":{"unitSystem":"Imperial","parentUnits":{"kips":1,"feet":-1},"symbols":{"kipPerFt":{"text":"kip/ft","placement":"Suffix","space":true}}},"kipsPerInch":{"unitSystem":"Imperial","parentUnits":{"kips":1,"inches":-1},"symbols":{"kipPerIn":{"text":"kip/in","placement":"Suffix","space":true}}},"kipsPerSquareFoot":{"defaultSymbol":"kipPerFtSup2","unitSystem":"Imperial","parentUnits":{"kips":1,"squareFeet":-1},"symbols":{"kipPerFtSup2":{"text":"kip/ft²","placement":"Suffix","space":true},"ksf":{"text":"ksf","placement":"Suffix","space":true}}},"kipsPerSquareInch":{"defaultSymbol":"kipPerInSup2","unitSystem":"Imperial","parentUnits":{"kips":1,"squareInches":-1},"symbols":{"kipPerInSup2":{"text":"kip/in²","placement":"Suffix","space":true},"ksi":{"text":"ksi","placement":"Suffix","space":true}}},"liters":{"unitSystem":"Metric","parentUnits":{"decimeters":3},"symbols":{"liter":{"text":"L","placement":"Suffix","space":true}}},"litersPerHour":{"unitSystem":"Metric","parentUnits":{"liters":1,"hours":-1},"symbols":{"lPerH":{"text":"L/h","placement":"Suffix","space":true}}},"litersPerMinute":{"defaultSymbol":"lPerMin","unitSystem":"Metric","parentUnits":{"liters":1,"minutes":-1},"symbols":{"lPerMin":{"text":"L/min","placement":"Suffix","space":true},"lpm":{"text":"LPM","placement":"Suffix","space":true}}},"litersPerSecond":{"defaultSymbol":"lPerS","unitSystem":"Metric","parentUnits":{"liters":1,"seconds":-1},"symbols":{"lPerS":{"text":"L/s","placement":"Suffix","space":true},"lps":{"text":"LPS","placement":"Suffix","space":true}}},"litersPerSecondCubicMeter":{"unitSystem":"Metric","parentUnits":{"litersPerSecond":1,"cubicMeters":-1},"symbols":{"lPerSMSup3":{"text":"L/(s·m³)","placement":"Suffix","space":true}}},"litersPerSecondKilowatt":{"unitSystem":"Metric","parentUnits":{"litersPerSecond":1,"kilowatts":-1},"symbols":{"lPerSKw":{"text":"L/(s·kW)","placement":"Suffix","space":true}}},"litersPerSecondSquareMeter":{"defaultSymbol":"lPerSMSup2","unitSystem":"Metric","parentUnits":{"litersPerSecond":1,"squareMeters":-1},"symbols":{"lPerSMSup2":{"text":"L/(s·m²)","placement":"Suffix","space":true},"lpsPerMSup2":{"text":"LPS/m²","placement":"Suffix","space":true}}},"lumens":{"unitSystem":"Metric","parentUnits":{"candelas":1,"steradians":1},"symbols":{"lm":{"text":"lm","placement":"Suffix","space":true}}},"lumensPerWatt":{"unitSystem":"Metric","parentUnits":{"lumens":1,"watts":-1},"symbols":{"lmPerW":{"text":"lm/W","placement":"Suffix","space":true}}},"lux":{"unitSystem":"Metric","parentUnits":{"lumens":1,"squareMeters":-1},"symbols":{"lx":{"text":"lx","placement":"Suffix","space":true}}},"maxwells":{"unitSystem":"Metric","parentFactors":{"ten":-8},"parentUnits":{"webers":1},"symbols":{"mx":{"text":"Mx","placement":"Suffix","space":true}}},"megajoules":{"unitSystem":"Metric","parentFactors":{"mega":1},"parentUnits":{"joules":1}},"megajoulesPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"megajoules":1,"squareMeters":-1}},"meganewtonMeters":{"unitSystem":"Metric","parentUnits":{"meganewtons":1,"meters":1},"symbols":{"mNDashM":{"text":"MN-m","placement":"Suffix","space":true}}},"meganewtonMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"meganewtonMeters":1,"meters":-1},"symbols":{"mNDashMPerM":{"text":"MN-m/m","placement":"Suffix","space":true}}},"meganewtons":{"unitSystem":"Metric","parentFactors":{"mega":1},"parentUnits":{"newtons":1},"symbols":{"mN":{"text":"MN","placement":"Suffix","space":true}}},"meganewtonsPerMeter":{"unitSystem":"Metric","parentUnits":{"meganewtons":1,"meters":-1},"symbols":{"mNPerM":{"text":"MN/m","placement":"Suffix","space":true}}},"meganewtonsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"meganewtons":1,"squareMeters":-1},"symbols":{"mNPerMSup2":{"text":"MN/m²","placement":"Suffix","space":true}}},"megapascals":{"unitSystem":"Metric","parentFactors":{"mega":1},"parentUnits":{"pascals":1},"symbols":{"mPa":{"text":"MPa","placement":"Suffix","space":true}}},"megawattHours":{"unitSystem":"Metric","parentUnits":{"megawatts":1,"hours":1},"symbols":{"mWh":{"text":"mWh","placement":"Suffix","space":true}}},"megawatts":{"unitSystem":"Metric","parentFactors":{"mega":1},"parentUnits":{"watts":1}},"meters":{"defaultSymbol":"meter","unitSystem":"Metric","dimension":"length","symbols":{"meter":{"text":"m","placement":"Suffix","space":true},"metersAndCentimeters":{"inherits":"symbol"}}},"metersOfWaterColumn":{"unitSystem":"Metric","parentUnits":{"meters":1,"standardGravity":1,"waterDensity4DegreesCelsius":1},"symbols":{"mH2O":{"text":"mH2O","placement":"Suffix","space":true}}},"metersOfWaterColumnPerMeter":{"unitSystem":"Metric","parentUnits":{"metersOfWaterColumn":1,"meters":-1},"symbols":{"mH2OPerM":{"text":"mH2O/m","placement":"Suffix","space":true}}},"metersPerKilonewton":{"unitSystem":"Metric","parentUnits":{"meters":1,"kilonewtons":-1},"symbols":{"mPerKN":{"text":"m/kN","placement":"Suffix","space":true}}},"metersPerKilonewtonMeter":{"unitSystem":"Metric","parentUnits":{"meters":1,"kilonewtonMeters":-1},"symbols":{"mPerKNDashM":{"text":"m/kN-m","placement":"Suffix","space":true}}},"metersPerSecond":{"unitSystem":"Metric","parentUnits":{"meters":1,"seconds":-1},"symbols":{"mPerS":{"text":"m/s","placement":"Suffix","space":true}}},"metersPerSecondSquared":{"unitSystem":"Metric","parentUnits":{"metersPerSecond":1,"seconds":-1},"symbols":{"mPerSSup2":{"text":"m/s²","placement":"Suffix","space":true}}},"metersToTheFourthPower":{"unitSystem":"Metric","parentUnits":{"meters":4},"symbols":{"mSup4":{"text":"m⁴","placement":"Suffix","space":true}}},"metersToTheSixthPower":{"unitSystem":"Metric","parentUnits":{"meters":6},"symbols":{"mSup6":{"text":"m⁶","placement":"Suffix","space":true}}},"mhos":{"unitSystem":"Metric","parentUnits":{"ohms":-1},"symbols":{"mho":{"text":"mho","placement":"Suffix","space":true}}},"microinches":{"unitSystem":"Imperial","parentFactors":{"micro":1},"parentUnits":{"inches":1},"symbols":{"uin":{"text":"µin","placement":"Suffix","space":true}}},"microinchesPerInchDegreeFahrenheit":{"unitSystem":"Imperial","parentFactors":{"micro":1},"parentUnits":{"inverseDegreesFahrenheit":1},"symbols":{"uinPerInDegreeF":{"text":"µin/(in·°F)","placement":"Suffix","space":true}}},"micrometersPerMeterDegreeCelsius":{"unitSystem":"Metric","parentFactors":{"micro":1},"parentUnits":{"inverseDegreesCelsius":1},"symbols":{"umPerMDegreeC":{"text":"µm/(m·°C)","placement":"Suffix","space":true}}},"microns":{"unitSystem":"Metric","parentFactors":{"micro":1},"parentUnits":{"meters":1},"symbols":{"micron":{"text":"micron","placement":"Suffix","space":true}}},"miles":{"unitSystem":"Imperial","factor":1760,"parentUnits":{"yards":1},"symbols":{"mi":{"text":"mi","placement":"Suffix","space":true}}},"milesPerHour":{"unitSystem":"Imperial","parentUnits":{"miles":1,"hours":-1},"symbols":{"mph":{"text":"mph","placement":"Suffix","space":true}}},"milesPerSecond":{"unitSystem":"Imperial","parentUnits":{"miles":1,"seconds":-1},"symbols":{"miPerS":{"text":"mi/s","placement":"Suffix","space":true}}},"milesPerSecondSquared":{"unitSystem":"Imperial","parentUnits":{"milesPerSecond":1,"seconds":-1},"symbols":{"miPerSSup2":{"text":"mi/s²","placement":"Suffix","space":true}}},"milliamperes":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"amperes":1},"symbols":{"mA":{"text":"mA","placement":"Suffix","space":true}}},"milligrams":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"grams":1},"symbols":{"mg":{"text":"mg","placement":"Suffix","space":true}}},"millimeters":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"meters":1},"symbols":{"mm":{"text":"mm","placement":"Suffix","space":true}}},"millimetersOfMercury":{"unitSystem":"Metric","factor":133.3224,"parentUnits":{"pascals":1},"symbols":{"mmHg":{"text":"mmHg","placement":"Suffix","space":true}}},"millimetersOfWaterColumn":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"metersOfWaterColumn":1},"symbols":{"mmH2O":{"text":"mmH2O","placement":"Suffix","space":true}}},"millimetersOfWaterColumnPerMeter":{"unitSystem":"Metric","parentUnits":{"millimetersOfWaterColumn":1,"meters":-1},"symbols":{"mmH2OPerM":{"text":"mmH2O/m","placement":"Suffix","space":true}}},"millimetersToTheFourthPower":{"unitSystem":"Metric","parentUnits":{"millimeters":4},"symbols":{"mmSup4":{"text":"mm⁴","placement":"Suffix","space":true}}},"millimetersToTheSixthPower":{"unitSystem":"Metric","parentUnits":{"millimeters":6},"symbols":{"mmSup6":{"text":"mm⁶","placement":"Suffix","space":true}}},"milliseconds":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"seconds":1},"symbols":{"ms":{"text":"ms","placement":"Suffix","space":true}}},"millivolts":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"volts":1},"symbols":{"mV":{"text":"mV","placement":"Suffix","space":true}}},"mils":{"unitSystem":"Imperial","parentFactors":{"milli":1},"parentUnits":{"inches":1},"symbols":{"mil":{"text":"mil","placement":"Suffix","space":true}}},"minutes":{"unitSystem":"Metric","factor":60,"parentUnits":{"seconds":1},"symbols":{"min":{"text":"min","placement":"Suffix","space":true}}},"nanograms":{"unitSystem":"Metric","parentFactors":{"nano":1},"parentUnits":{"grams":1},"symbols":{"ng":{"text":"ng","placement":"Suffix","space":true}}},"nanogramsPerPascalSecondSquareMeter":{"unitSystem":"Metric","parentUnits":{"nanograms":1,"seconds":-1,"squareMeters":-1,"pascals":-1},"symbols":{"ngPerPaSMSup2":{"text":"ng/(Pa·s·m²)","placement":"Suffix","space":true}}},"nanometers":{"unitSystem":"Metric","parentFactors":{"nano":1},"parentUnits":{"meters":1},"symbols":{"nm":{"text":"nm","placement":"Suffix","space":true}}},"nauticalMiles":{"unitSystem":"Imperial","factor":1852,"parentUnits":{"meters":1},"symbols":{"nauticalMile":{"text":"M","placement":"Suffix","space":true}}},"newtonMeters":{"unitSystem":"Metric","parentUnits":{"newtons":1,"meters":1},"symbols":{"nDashM":{"text":"N-m","placement":"Suffix","space":true}}},"newtonMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"newtonMeters":1,"meters":-1},"symbols":{"nDashMPerM":{"text":"N-m/m","placement":"Suffix","space":true}}},"newtonSecondsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"newtons":1,"seconds":1,"squareMeters":-1},"symbols":{"nSPerMSup2":{"text":"N·s/m²","placement":"Suffix","space":true}}},"newtons":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"metersPerSecondSquared":1},"symbols":{"newton":{"text":"N","placement":"Suffix","space":true}}},"newtonsPerMeter":{"unitSystem":"Metric","parentUnits":{"newtons":1,"meters":-1},"symbols":{"nPerM":{"text":"N/m","placement":"Suffix","space":true}}},"newtonsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"newtons":1,"squareMeters":-1},"symbols":{"nPerMSup2":{"text":"N/m²","placement":"Suffix","space":true}}},"newtonsPerSquareMillimeter":{"unitSystem":"Metric","parentUnits":{"newtons":1,"squareMillimeters":-1},"symbols":{"nPerMmSup2":{"text":"N/mm²","placement":"Suffix","space":true}}},"oersteds":{"unitSystem":"Metric","factor":250,"parentFactors":{"pi":-1},"parentUnits":{"amperes":1,"meters":-1},"symbols":{"oe":{"text":"Oe","placement":"Suffix","space":true}}},"ohmMeters":{"unitSystem":"Metric","parentUnits":{"ohms":1,"meters":1},"symbols":{"ohmM":{"text":"ohm·m","placement":"Suffix","space":true}}},"ohms":{"defaultSymbol":"omega","unitSystem":"Metric","parentUnits":{"volts":1,"amperes":-1},"symbols":{"ohm":{"text":"ohm","placement":"Suffix","space":true},"omega":{"text":"Ω","placement":"Suffix","space":true}}},"ouncesForce":{"unitSystem":"Imperial","factor":0.0625,"parentUnits":{"poundsForce":1},"symbols":{"ozf":{"text":"ozf","placement":"Suffix","space":true}}},"ouncesMass":{"unitSystem":"Imperial","factor":0.0625,"parentUnits":{"poundsMass":1},"symbols":{"oz":{"text":"oz","placement":"Suffix","space":true}}},"pascalSeconds":{"unitSystem":"Metric","parentUnits":{"pascals":1,"seconds":1},"symbols":{"paDashS":{"text":"Pa-s","placement":"Suffix","space":true}}},"pascals":{"unitSystem":"Metric","parentUnits":{"newtonsPerSquareMeter":1},"symbols":{"pa":{"text":"Pa","placement":"Suffix","space":true}}},"pascalsPerMeter":{"unitSystem":"Metric","parentUnits":{"pascals":1,"meters":-1},"symbols":{"paPerM":{"text":"Pa/m","placement":"Suffix","space":true}}},"perMille":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"ratioTo1":1},"symbols":{"perMille":{"text":"‰","placement":"Suffix","space":false}}},"percentage":{"unitSystem":"Metric","parentFactors":{"centi":1},"parentUnits":{"ratioTo1":1},"symbols":{"percent":{"text":"%","placement":"Suffix","space":false}}},"pi":{"unitSystem":"Imperial","parentFactors":{"pi":1},"parentUnits":{"radians":1},"symbols":{"pi":{"text":"π","placement":"Suffix","space":true}}},"poises":{"unitSystem":"Metric","parentUnits":{"grams":1,"centimeters":-1,"seconds":-1},"symbols":{"poise":{"text":"P","placement":"Suffix","space":true}}},"poundForceFeet":{"defaultSymbol":"lbForceDashFt","unitSystem":"Imperial","parentUnits":{"poundsForce":1,"feet":1},"symbols":{"lbForceDashFt":{"text":"lb-ft","placement":"Suffix","space":true},"lbfDashFt":{"text":"lbf-ft","placement":"Suffix","space":true}}},"poundForceFeetPerFoot":{"defaultSymbol":"lbForceDashFtPerFt","unitSystem":"Imperial","parentUnits":{"poundForceFeet":1,"feet":-1},"symbols":{"lbForceDashFtPerFt":{"text":"lb-ft/ft","placement":"Suffix","space":true},"lbfDashFtPerFt":{"text":"lbf-ft/ft","placement":"Suffix","space":true}}},"poundForceSecondsPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"poundsForce":1,"seconds":1,"squareFeet":-1},"symbols":{"lbForceSPerFtSup2":{"text":"lb·s/ft²","placement":"Suffix","space":true}}},"poundMassDegreesFahrenheit":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"fahrenheitInterval":1},"symbols":{"lbMassDegreeF":{"text":"lb·°F","placement":"Suffix","space":true}}},"poundsForce":{"defaultSymbol":"lbForce","unitSystem":"Imperial","parentUnits":{"poundsMass":1,"standardGravity":1},"symbols":{"lbForce":{"text":"lb","placement":"Suffix","space":true},"lbf":{"text":"lbf","placement":"Suffix","space":true}}},"poundsForcePerCubicFoot":{"defaultSymbol":"lbForcePerFtSup3","unitSystem":"Imperial","parentUnits":{"poundsForce":1,"cubicFeet":-1},"symbols":{"lbForcePerFtSup3":{"text":"lb/ft³","placement":"Suffix","space":true},"lbfPerFtSup3":{"text":"lbf/ft³","placement":"Suffix","space":true}}},"poundsForcePerFoot":{"defaultSymbol":"lbForcePerFt","unitSystem":"Imperial","parentUnits":{"poundsForce":1,"feet":-1},"symbols":{"lbForcePerFt":{"text":"lb/ft","placement":"Suffix","space":true},"lbfPerFt":{"text":"lbf/ft","placement":"Suffix","space":true}}},"poundsForcePerSquareFoot":{"defaultSymbol":"lbForcePerFtSup2","unitSystem":"Imperial","parentUnits":{"poundsForce":1,"squareFeet":-1},"symbols":{"lbForcePerFtSup2":{"text":"lb/ft²","placement":"Suffix","space":true},"lbfPerFtSup2":{"text":"lbf/ft²","placement":"Suffix","space":true},"psf":{"text":"psf","placement":"Suffix","space":true}}},"poundsForcePerSquareInch":{"defaultSymbol":"lbForcePerInSup2","unitSystem":"Imperial","parentUnits":{"poundsForce":1,"squareInches":-1},"symbols":{"lbForcePerInSup2":{"text":"lb/in²","placement":"Suffix","space":true},"lbfPerInSup2":{"text":"lbf/in²","placement":"Suffix","space":true},"psi":{"text":"psi","placement":"Suffix","space":true},"psia":{"text":"psia","placement":"Suffix","space":true},"psig":{"text":"psig","placement":"Suffix","space":true}}},"poundsMass":{"defaultSymbol":"lbMass","unitSystem":"Imperial","factor":0.45359237,"parentUnits":{"kilograms":1},"symbols":{"lbMass":{"text":"lb","placement":"Suffix","space":true},"lbm":{"text":"lbm","placement":"Suffix","space":true}}},"poundsMassPerCubicFoot":{"defaultSymbol":"lbMassPerFtSup3","unitSystem":"Imperial","parentUnits":{"poundsMass":1,"cubicFeet":-1},"symbols":{"lbMassPerFtSup3":{"text":"lb/ft³","placement":"Suffix","space":true},"lbmPerFtSup3":{"text":"lbm/ft³","placement":"Suffix","space":true}}},"poundsMassPerCubicInch":{"defaultSymbol":"lbMassPerInSup3","unitSystem":"Imperial","parentUnits":{"poundsMass":1,"cubicInches":-1},"symbols":{"lbMassPerInSup3":{"text":"lb/in³","placement":"Suffix","space":true},"lbmPerInSup3":{"text":"lbm/in³","placement":"Suffix","space":true}}},"poundsMassPerFoot":{"defaultSymbol":"lbMassPerFt","unitSystem":"Imperial","parentUnits":{"poundsMass":1,"feet":-1},"symbols":{"lbMassPerFt":{"text":"lb/ft","placement":"Suffix","space":true},"lbmPerFt":{"text":"lbm/ft","placement":"Suffix","space":true}}},"poundsMassPerFootHour":{"defaultSymbol":"lbMassPerFtDashH","unitSystem":"Imperial","parentUnits":{"poundsMassPerFoot":1,"hours":-1},"symbols":{"lbMassPerFtDashH":{"text":"lb/ft-h","placement":"Suffix","space":true},"lbmPerFtDashH":{"text":"lbm/ft-h","placement":"Suffix","space":true}}},"poundsMassPerFootSecond":{"defaultSymbol":"lbMassPerFtDashS","unitSystem":"Imperial","parentUnits":{"poundsMassPerFoot":1,"seconds":-1},"symbols":{"lbMassPerFtDashS":{"text":"lb/ft-s","placement":"Suffix","space":true},"lbmPerFtDashS":{"text":"lbm/ft-s","placement":"Suffix","space":true}}},"poundsMassPerHour":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"hours":-1},"symbols":{"lbMassPerH":{"text":"lb/h","placement":"Suffix","space":true}}},"poundsMassPerMinute":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"minutes":-1},"symbols":{"lbMassPerMin":{"text":"lb/min","placement":"Suffix","space":true}}},"poundsMassPerPoundDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"poundMassDegreesFahrenheit":-1},"symbols":{"lbMassPerLbDegreeF":{"text":"lb/(lb·°F)","placement":"Suffix","space":true}}},"poundsMassPerSecond":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"seconds":-1},"symbols":{"lbMassPerS":{"text":"lb/s","placement":"Suffix","space":true}}},"poundsMassPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"squareFeet":-1},"symbols":{"lbMassPerFtSup2":{"text":"lb/ft²","placement":"Suffix","space":true}}},"radians":{"unitSystem":"Metric","symbols":{"rad":{"text":"rad","placement":"Suffix","space":true}}},"radiansPerSecond":{"unitSystem":"Metric","parentUnits":{"radians":1,"seconds":-1},"symbols":{"radPerS":{"text":"rad/s","placement":"Suffix","space":true}}},"rankine":{"unitSystem":"Imperial","parentUnit":"rankineInterval","symbols":{"degreeR":{"text":"°R","placement":"Suffix","space":true}}},"rankineInterval":{"defaultSymbol":"degreeRInterval","unitSystem":"Imperial","parentFactors":{"nineFifths":-1},"parentUnits":{"kelvinInterval":1},"symbols":{"degreeRInterval":{"text":"°R","placement":"Suffix","space":true},"deltaDegreeR":{"text":"delta°R","placement":"Suffix","space":true}}},"ratioTo1":{"unitSystem":"Metric","symbols":{"colon1":{"text":":1","placement":"Suffix","space":false}}},"ratioTo10":{"unitSystem":"Metric","parentFactors":{"ten":-1},"parentUnits":{"ratioTo1":1},"symbols":{"colon10":{"text":":10","placement":"Suffix","space":false}}},"ratioTo12":{"unitSystem":"Imperial","parentFactors":{"twelve":-1},"parentUnits":{"ratioTo1":1},"symbols":{"colon12":{"text":":12","placement":"Suffix","space":false}}},"revolutionsPerMinute":{"unitSystem":"Imperial","parentUnits":{"turns":1,"minutes":-1},"symbols":{"rpm":{"text":"RPM","placement":"Suffix","space":true}}},"revolutionsPerSecond":{"unitSystem":"Metric","parentUnits":{"turns":1,"seconds":-1},"symbols":{"rps":{"text":"RPS","placement":"Suffix","space":true}}},"riseDividedBy1000Millimeters":{"unitSystem":"Metric","parentUnits":{"perMille":1}},"riseDividedBy10Feet":{"unitSystem":"Imperial","parentUnits":{"ratioTo10":1}},"riseDividedBy120Inches":{"unitSystem":"Imperial","parentFactors":{"ten":-1},"parentUnits":{"riseDividedBy12Inches":1}},"riseDividedBy12Inches":{"unitSystem":"Imperial","parentUnits":{"ratioTo12":1}},"riseDividedBy1Foot":{"unitSystem":"Imperial","parentUnits":{"ratioTo1":1}},"seconds":{"unitSystem":"Metric","dimension":"time","symbols":{"second":{"text":"s","placement":"Suffix","space":true}}},"siemens":{"unitSystem":"Metric","parentUnits":{"mhos":1},"symbols":{"siemens":{"text":"S","placement":"Suffix","space":true}}},"slugs":{"unitSystem":"Imperial","parentUnits":{"poundsForce":1,"seconds":2,"feet":-1},"symbols":{"slug":{"text":"slug","placement":"Suffix","space":true}}},"squareCentimeters":{"defaultSymbol":"cmSup2","unitSystem":"Metric","parentUnits":{"centimeters":2},"symbols":{"cmCaret2":{"text":"cm^2","placement":"Suffix","space":true},"cmSup2":{"text":"cm²","placement":"Suffix","space":true}}},"squareCentimetersPerMeter":{"unitSystem":"Metric","parentUnits":{"squareCentimeters":1,"meters":-1},"symbols":{"cmSup2PerM":{"text":"cm²/m","placement":"Suffix","space":true}}},"squareFeet":{"defaultSymbol":"ftSup2","unitSystem":"Imperial","parentUnits":{"feet":2},"symbols":{"ftCaret2":{"text":"ft^2","placement":"Suffix","space":true},"ftSup2":{"text":"ft²","placement":"Suffix","space":true},"sf":{"text":"SF","placement":"Suffix","space":true}}},"squareFeetPer1000BritishThermalUnitsPerHour":{"defaultSymbol":"ftSup2HPerKbtu","unitSystem":"Imperial","factor":0.001,"parentUnits":{"squareFeet":1,"britishThermalUnitsPerHour":-1},"symbols":{"ftSup2HPerKbtu":{"text":"ft²·h/kBtu","placement":"Suffix","space":true},"ftSup2PerMbh":{"text":"ft²/MBh","placement":"Suffix","space":true},"sfHPerKbtu":{"text":"SF·h/kBtu","placement":"Suffix","space":true},"sfPerMbh":{"text":"SF/MBh","placement":"Suffix","space":true}}},"squareFeetPerFoot":{"unitSystem":"Imperial","parentUnits":{"squareFeet":1,"feet":-1},"symbols":{"ftSup2PerFt":{"text":"ft²/ft","placement":"Suffix","space":true}}},"squareFeetPerKip":{"unitSystem":"Imperial","parentUnits":{"squareFeet":1,"kips":-1},"symbols":{"ftSup2PerKip":{"text":"ft²/kip","placement":"Suffix","space":true}}},"squareFeetPerKipFoot":{"unitSystem":"Imperial","parentUnits":{"squareFeet":1,"kipFeet":-1},"symbols":{"ftSup2PerKipDashFt":{"text":"ft²/kip-ft","placement":"Suffix","space":true}}},"squareFeetPerSecond":{"unitSystem":"Imperial","parentUnits":{"squareFeet":1,"seconds":-1},"symbols":{"ftSup2PerS":{"text":"ft²/s","placement":"Suffix","space":true}}},"squareFeetPerTonOfRefrigeration":{"defaultSymbol":"ftSup2PerTon","unitSystem":"Imperial","parentUnits":{"squareFeet":1,"tonsOfRefrigeration":-1},"symbols":{"ftSup2PerTon":{"text":"ft²/ton","placement":"Suffix","space":true},"sfPerTon":{"text":"SF/ton","placement":"Suffix","space":true}}},"squareHectometers":{"unitSystem":"Metric","parentUnits":{"hectometers":2},"symbols":{"hmSup2":{"text":"hm²","placement":"Suffix","space":true}}},"squareInches":{"defaultSymbol":"inSup2","unitSystem":"Imperial","parentUnits":{"inches":2},"symbols":{"inCaret2":{"text":"in^2","placement":"Suffix","space":true},"inSup2":{"text":"in²","placement":"Suffix","space":true}}},"squareInchesPerFoot":{"unitSystem":"Imperial","parentUnits":{"squareInches":1,"feet":-1},"symbols":{"inSup2PerFt":{"text":"in²/ft","placement":"Suffix","space":true}}},"squareMeterKelvinsPerWatt":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"kelvinInterval":1,"watts":-1},"symbols":{"mSup2KPerW":{"text":"(m²·K)/W","placement":"Suffix","space":true}}},"squareMeters":{"defaultSymbol":"mSup2","unitSystem":"Metric","parentUnits":{"meters":2},"symbols":{"mCaret2":{"text":"m^2","placement":"Suffix","space":true},"mSup2":{"text":"m²","placement":"Suffix","space":true}}},"squareMetersPerKilonewton":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"kilonewtons":-1},"symbols":{"mSup2PerKN":{"text":"m²/kN","placement":"Suffix","space":true}}},"squareMetersPerKilonewtonMeter":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"kilonewtonMeters":-1},"symbols":{"mSup2PerKNDashM":{"text":"m²/kN-m","placement":"Suffix","space":true}}},"squareMetersPerKilowatt":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"kilowatts":-1},"symbols":{"mSup2PerKw":{"text":"m²/kW","placement":"Suffix","space":true}}},"squareMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"meters":-1},"symbols":{"mSup2PerM":{"text":"m²/m","placement":"Suffix","space":true}}},"squareMetersPerSecond":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"seconds":-1},"symbols":{"mSup2PerS":{"text":"m²/s","placement":"Suffix","space":true}}},"squareMillimeters":{"defaultSymbol":"mmSup2","unitSystem":"Metric","parentUnits":{"millimeters":2},"symbols":{"mmCaret2":{"text":"mm^2","placement":"Suffix","space":true},"mmSup2":{"text":"mm²","placement":"Suffix","space":true}}},"squareMillimetersPerMeter":{"unitSystem":"Metric","parentUnits":{"squareMillimeters":1,"meters":-1},"symbols":{"mmSup2PerM":{"text":"mm²/m","placement":"Suffix","space":true}}},"squareMils":{"defaultSymbol":"milSup2","unitSystem":"Imperial","parentUnits":{"mils":2},"symbols":{"milCaret2":{"text":"mil^2","placement":"Suffix","space":true},"milSup2":{"text":"mil²","placement":"Suffix","space":true}}},"squareYards":{"unitSystem":"Imperial","parentUnits":{"yards":2},"symbols":{"ydSup2":{"text":"yd²","placement":"Suffix","space":true}}},"standardGravity":{"unitSystem":"Metric","factor":9.80665,"parentUnits":{"metersPerSecondSquared":1},"symbols":{"gravity":{"text":"𝘨","placement":"Suffix","space":true}}},"steradians":{"unitSystem":"Metric","symbols":{"sr":{"text":"sr","placement":"Suffix","space":true}}},"teslas":{"unitSystem":"Metric","parentUnits":{"webers":1,"meters":-2},"symbols":{"tesla":{"text":"T","placement":"Suffix","space":true}}},"therms":{"unitSystem":"Imperial","factor":100000,"parentUnits":{"britishThermalUnits":1},"symbols":{"therm":{"text":"therm","placement":"Suffix","space":true}}},"thousandBritishThermalUnits":{"unitSystem":"Imperial","parentFactors":{"kilo":1},"parentUnits":{"britishThermalUnits":1},"symbols":{"kBtu":{"text":"kBtu","placement":"Suffix","space":true}}},"thousandBritishThermalUnitsPerHour":{"unitSystem":"Imperial","factor":1000,"parentUnits":{"britishThermalUnitsPerHour":1},"symbols":{"mbh":{"text":"MBH","placement":"Suffix","space":true}}},"thousandBritishThermalUnitsPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"thousandBritishThermalUnits":1,"squareFeet":-1},"symbols":{"kBtuPerFtSup2":{"text":"kBtu/ft²","placement":"Suffix","space":true}}},"tonneForceMeters":{"unitSystem":"Metric","parentUnits":{"tonnesForce":1,"meters":1},"symbols":{"tfDashM":{"text":"Tf-m","placement":"Suffix","space":true}}},"tonneForceMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"tonneForceMeters":1,"meters":-1},"symbols":{"tfDashMPerM":{"text":"Tf-m/m","placement":"Suffix","space":true}}},"tonnes":{"unitSystem":"Metric","factor":1000,"parentUnits":{"kilograms":1},"symbols":{"tonne":{"text":"t","placement":"Suffix","space":true}}},"tonnesForce":{"unitSystem":"Metric","parentUnits":{"tonnes":1,"standardGravity":1},"symbols":{"tf":{"text":"Tf","placement":"Suffix","space":true}}},"tonnesForcePerMeter":{"unitSystem":"Metric","parentUnits":{"tonnesForce":1,"meters":-1},"symbols":{"tfPerM":{"text":"Tf/m","placement":"Suffix","space":true}}},"tonnesForcePerSquareMeter":{"unitSystem":"Metric","parentUnits":{"tonnesForce":1,"squareMeters":-1},"symbols":{"tfPerMSup2":{"text":"Tf/m²","placement":"Suffix","space":true}}},"tonsOfRefrigeration":{"defaultSymbol":"ton","unitSystem":"Imperial","factor":12000,"parentUnits":{"britishThermalUnitsPerHour":1},"symbols":{"ton":{"text":"ton","placement":"Suffix","space":true},"tonOfRefrigeration":{"text":"ton of refrigeration","placement":"Suffix","space":true}}},"turns":{"unitSystem":"Metric","factor":2,"parentFactors":{"pi":1},"parentUnits":{"radians":1},"symbols":{"tr":{"text":"tr","placement":"Suffix","space":true}}},"usGallons":{"unitSystem":"Imperial","factor":231,"parentUnits":{"cubicInches":1},"symbols":{"gal":{"text":"gal","placement":"Suffix","space":true}}},"usGallonsPerHour":{"defaultSymbol":"galPerH","unitSystem":"Imperial","parentUnits":{"usGallons":1,"hours":-1},"symbols":{"galPerH":{"text":"gal/h","placement":"Suffix","space":true},"gph":{"text":"GPH","placement":"Suffix","space":true},"usgph":{"text":"usgph","placement":"Suffix","space":true}}},"usGallonsPerMinute":{"defaultSymbol":"galPerMin","unitSystem":"Imperial","parentUnits":{"usGallons":1,"minutes":-1},"symbols":{"galPerMin":{"text":"gal/min","placement":"Suffix","space":true},"gpm":{"text":"GPM","placement":"Suffix","space":true},"usgpm":{"text":"usgpm","placement":"Suffix","space":true}}},"usSurveyFeet":{"unitSystem":"Imperial","factor":1200,"parentFactors":{"threeThousandNineHundredThirtySeven":-1},"parentUnits":{"meters":1},"symbols":{"usft":{"text":"USft","placement":"Suffix","space":true}}},"usTonnesForce":{"defaultSymbol":"stf","unitSystem":"Imperial","parentUnits":{"usTonnesMass":1,"standardGravity":1},"symbols":{"stf":{"text":"STf","placement":"Suffix","space":true},"tonsf":{"text":"Tonsf","placement":"Suffix","space":true},"usTonnesForceSt":{"text":"ST","placement":"Suffix","space":true},"usTonnesForceT":{"text":"T","placement":"Suffix","space":true},"usTonnesForceTons":{"text":"Tons","placement":"Suffix","space":true}}},"usTonnesMass":{"defaultSymbol":"usTonnesMassSt","unitSystem":"Imperial","factor":2000,"parentUnits":{"poundsMass":1},"symbols":{"usTonnesMassSt":{"text":"ST","placement":"Suffix","space":true},"usTonnesMassT":{"text":"T","placement":"Suffix","space":true},"usTonnesMassTons":{"text":"Tons","placement":"Suffix","space":true}}},"voltAmperes":{"unitSystem":"Metric","parentUnits":{"volts":1,"amperes":1},"symbols":{"vA":{"text":"VA","placement":"Suffix","space":true}}},"voltAmperesPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"voltAmperes":1,"squareFeet":-1},"symbols":{"vAPerFtSup2":{"text":"VA/ft²","placement":"Suffix","space":true}}},"voltAmperesPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"voltAmperes":1,"squareMeters":-1},"symbols":{"vAPerMSup2":{"text":"VA/m²","placement":"Suffix","space":true}}},"volts":{"unitSystem":"Metric","parentUnits":{"watts":1,"amperes":-1},"symbols":{"volt":{"text":"V","placement":"Suffix","space":true}}},"waterDensity4DegreesCelsius":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"liters":-1}},"watts":{"unitSystem":"Metric","parentUnits":{"joules":1,"seconds":-1},"symbols":{"watt":{"text":"W","placement":"Suffix","space":true}}},"wattsPerCubicFoot":{"unitSystem":"Imperial","parentUnits":{"watts":1,"cubicFeet":-1},"symbols":{"wPerFtSup3":{"text":"W/ft³","placement":"Suffix","space":true}}},"wattsPerCubicFootPerMinute":{"unitSystem":"Imperial","parentUnits":{"watts":1,"cubicFeetPerMinute":-1},"symbols":{"wMinPerFtSup3":{"text":"W·min/ft³","placement":"Suffix","space":true}}},"wattsPerCubicMeter":{"unitSystem":"Metric","parentUnits":{"watts":1,"cubicMeters":-1},"symbols":{"wPerMSup3":{"text":"W/m³","placement":"Suffix","space":true}}},"wattsPerCubicMeterPerSecond":{"unitSystem":"Metric","parentUnits":{"watts":1,"cubicMetersPerSecond":-1},"symbols":{"wSPerMSup3":{"text":"W·s/m³","placement":"Suffix","space":true}}},"wattsPerFoot":{"unitSystem":"Imperial","parentUnits":{"watts":1,"feet":-1},"symbols":{"wPerFt":{"text":"W/ft","placement":"Suffix","space":true}}},"wattsPerMeter":{"unitSystem":"Metric","parentUnits":{"watts":1,"meters":-1},"symbols":{"wPerM":{"text":"W/m","placement":"Suffix","space":true}}},"wattsPerMeterKelvin":{"unitSystem":"Metric","parentUnits":{"watts":1,"meters":-1,"kelvinInterval":-1},"symbols":{"wPerMK":{"text":"W/(m·K)","placement":"Suffix","space":true}}},"wattsPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"watts":1,"squareFeet":-1},"symbols":{"wPerFtSup2":{"text":"W/ft²","placement":"Suffix","space":true}}},"wattsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"watts":1,"squareMeters":-1},"symbols":{"wPerMSup2":{"text":"W/m²","placement":"Suffix","space":true}}},"wattsPerSquareMeterKelvin":{"unitSystem":"Metric","parentUnits":{"wattsPerSquareMeter":1,"kelvinInterval":-1},"symbols":{"wPerMSup2K":{"text":"W/(m²·K)","placement":"Suffix","space":true}}},"webers":{"unitSystem":"Metric","parentUnits":{"volts":1,"seconds":1},"symbols":{"wb":{"text":"Wb","placement":"Suffix","space":true}}},"yards":{"unitSystem":"Imperial","factor":3,"parentUnits":{"feet":1},"symbols":{"yd":{"text":"yd","placement":"Suffix","space":true}}},"feetFractionalInches":{"defaultSymbol":"feetAndInches","unitSystem":"Imperial","factor":12,"parentUnits":{"inches":1},"symbols":{"feetAndInches":{"inherits":"symbol"},"footSingleQuote":{"text":"\'","placement":"Suffix","space":false},"ft":{"text":"ft","placement":"Suffix","space":true},"lf":{"text":"LF","placement":"Suffix","space":true}}},"fractionalInches":{"defaultSymbol":"in","unitSystem":"Imperial","factor":2.54,"parentUnits":{"centimeters":1},"symbols":{"in":{"text":"in","placement":"Suffix","space":true},"inchDoubleQuote":{"text":"\\"","placement":"Suffix","space":false}}},"metersCentimeters":{"defaultSymbol":"meter","unitSystem":"Metric","dimension":"length","symbols":{"meter":{"text":"m","placement":"Suffix","space":true},"metersAndCentimeters":{"inherits":"symbol"}}},"degreesMinutes":{"defaultSymbol":"degree","unitSystem":"Metric","parentFactors":{"threeHundredSixty":-1},"parentUnits":{"turns":1},"symbols":{"degree":{"text":"°","placement":"Suffix","space":false},"degreesMinutesSeconds":{"inherits":"symbol"}}},"slopeDegrees":{"defaultSymbol":"slopeDegree","unitSystem":"Metric","parentFactors":{"threeHundredSixty":-1},"parentUnits":{"turns":1},"symbols":{"slopeDegree":{"text":"°","placement":"Suffix","space":false}}},"stationingFeet":{"defaultSymbol":"feetAndInches","unitSystem":"Imperial","factor":12,"parentUnits":{"inches":1},"symbols":{"feetAndInches":{"inherits":"symbol"},"footSingleQuote":{"text":"\'","placement":"Suffix","space":false},"ft":{"text":"ft","placement":"Suffix","space":true},"lf":{"text":"LF","placement":"Suffix","space":true}}},"stationingMeters":{"defaultSymbol":"meter","unitSystem":"Metric","dimension":"length","symbols":{"meter":{"text":"m","placement":"Suffix","space":true},"metersAndCentimeters":{"inherits":"symbol"}}},"stationingSurveyFeet":{"unitSystem":"Imperial","factor":1200,"parentFactors":{"threeThousandNineHundredThirtySeven":-1},"parentUnits":{"meters":1},"symbols":{"usft":{"text":"USft","placement":"Suffix","space":true}}},"dateTime":{"symbols":{"date":{"text":"Date"},"dateTime":{"text":"ISODate","description":"default"},"dateAndTime":{"text":"Date, Time"}}}},"quantity":{"acceleration":{"units":["metersPerSecondSquared","kilometersPerSecondSquared","inchesPerSecondSquared","feetPerSecondSquared","milesPerSecondSquared","standardGravity"]},"angle":{"units":["degrees","radians","gradians","turns"]},"angularLineSpringCoefficient":{"units":["kipFeetPerDegreePerFoot","kilonewtonMetersPerDegreePerMeter"]},"angularPointSpringCoefficient":{"units":["kipFeetPerDegree","kilonewtonMetersPerDegree"]},"angularSpeed":{"units":["radiansPerSecond","revolutionsPerMinute"]},"area":{"units":["squareFeet","squareInches","squareMeters","squareCentimeters","squareHectometers","squareMillimeters","acres","hectares","squareYards","circularMils","squareMils"]},"areaPerLength":{"units":["squareFeetPerFoot","squareCentimetersPerMeter","squareMillimetersPerMeter","squareInchesPerFoot","squareMetersPerMeter"]},"areaPerPower":{"units":["squareFeetPerTonOfRefrigeration","squareMetersPerKilowatt","squareFeetPer1000BritishThermalUnitsPerHour"]},"areaPerTorque":{"units":["squareFeetPerKipFoot","squareMetersPerKilonewtonMeter"]},"colorTemperature":{"units":["kelvin"]},"costPerArea":{"units":["currencyPerSquareFoot","currencyPerSquareMeter"]},"currency":{"units":["currency"]},"density":{"units":["kilogramsPerCubicMeter","poundsMassPerCubicInch","poundsMassPerCubicFoot"]},"diffusivity":{"units":["squareFeetPerSecond","squareMetersPerSecond"]},"dynamicViscosity":{"units":["centipoises","kilogramsPerMeterHour","kilogramsPerMeterSecond","newtonSecondsPerSquareMeter","pascalSeconds","poises","poundForceSecondsPerSquareFoot","poundsMassPerFootHour","poundsMassPerFootSecond"]},"electricCapacitance":{"units":["farads"]},"electricCharge":{"units":["coulombs","ampereHours","ampereSeconds"]},"electricConductance":{"units":["mhos","siemens"]},"electricCurrent":{"units":["amperes","kiloamperes","milliamperes"]},"electricInductance":{"units":["henries"]},"electricPotential":{"units":["volts","kilovolts","millivolts"]},"electricResistance":{"units":["ohms"]},"electricResistivity":{"units":["ohmMeters"]},"energy":{"units":["joules","newtonMeters","kilogramForceMeters","poundForceFeet","kilojoules","britishThermalUnits","calories","kilocalories","kilowattHours","therms","ergs"]},"flow":{"units":["cubicFeetPerMinute","cubicFeetPerHour","cubicMetersPerSecond","cubicMetersPerHour","litersPerHour","litersPerMinute","litersPerSecond","usGallonsPerMinute","usGallonsPerHour"]},"flowPerArea":{"units":["cubicFeetPerMinuteSquareFoot","litersPerSecondSquareMeter"]},"flowPerPower":{"units":["cubicFeetPerMinutePerBritishThermalUnitPerHour","cubicFeetPerMinuteTonOfRefrigeration","cubicMetersPerWattSecond","litersPerSecondKilowatt","squareFeetPerKip","squareMetersPerKilonewton"]},"flowPerVolume":{"units":["cubicFeetPerMinuteCubicFoot","litersPerSecondCubicMeter"]},"force":{"units":["newtons","dekanewtons","kilonewtons","meganewtons","kips","kilogramsForce","tonnesForce","usTonnesForce","poundsForce","dynes","ouncesForce"]},"forceDensity":{"units":["kilonewtonsPerCubicMeter","poundsForcePerCubicFoot","kipsPerCubicInch","kipsPerCubicFoot"]},"forcePerLength":{"units":["newtonsPerMeter","dekanewtonsPerMeter","kilonewtonsPerMeter","meganewtonsPerMeter","kipsPerFoot","kilogramsForcePerMeter","tonnesForcePerMeter","poundsForcePerFoot","kipsPerInch"]},"frequency":{"units":["hertz","cyclesPerSecond"]},"friction":{"units":["pascalsPerMeter","feetOfWater39.2DegreesFahrenheitPer100Feet","inchesOfWater60DegreesFahrenheitPer100Feet"]},"heatCapacity":{"units":["britishThermalUnitsPerDegreeFahrenheit","joulesPerKelvin","kilojoulesPerKelvin"]},"heatTransferCoefficient":{"units":["wattsPerSquareMeterKelvin","britishThermalUnitsPerHourSquareFootDegreeFahrenheit"]},"illuminance":{"units":["lux","footcandles"]},"length":{"units":["centimeters","decimeters","feet","hectometers","inches","kilometers","meters","microinches","microns","miles","millimeters","mils","nanometers","nauticalMiles","usSurveyFeet","yards"]},"lengthPerTorque":{"units":["metersPerKilonewtonMeter","feetPerKipFoot"]},"lightingEfficacy":{"units":["lumensPerWatt"]},"luminance":{"units":["footlamberts","candelasPerSquareFoot","candelasPerSquareMeter"]},"luminousFlux":{"units":["lumens"]},"luminousIntensity":{"units":["candelas"]},"magneticFieldStrength":{"units":["oersteds"]},"magneticFlux":{"units":["webers","maxwells"]},"magneticFluxDensity":{"units":["teslas","gauss","gammas"]},"mass":{"units":["kilograms","tonnes","poundsMass","grams","milligrams","nanograms","grains","usTonnesMass","slugs","ouncesMass"]},"massPerArea":{"units":["kilogramsPerSquareMeter","poundsMassPerSquareFoot"]},"massPerLength":{"units":["kilogramsPerMeter","poundsMassPerFoot"]},"massPerTime":{"units":["poundsMassPerHour","poundsMassPerMinute","poundsMassPerSecond","kilogramsPerHour","kilogramsPerMinute","kilogramsPerSecond"]},"number":{"units":["general","fixed","percentage"]},"permeability":{"units":["nanogramsPerPascalSecondSquareMeter","grainsPerHourSquareFootInchMercury"]},"power":{"units":["watts","kilowatts","britishThermalUnitsPerSecond","britishThermalUnitsPerHour","caloriesPerSecond","kilocaloriesPerSecond","voltAmperes","kilovoltAmperes","horsepower","thousandBritishThermalUnitsPerHour","tonsOfRefrigeration"]},"powerDensity":{"units":["wattsPerCubicFoot","wattsPerCubicMeter","britishThermalUnitsPerHourCubicFoot"]},"powerPerArea":{"units":["wattsPerSquareFoot","wattsPerSquareMeter","britishThermalUnitsPerHourSquareFoot"]},"powerPerFlow":{"units":["wattsPerCubicFootPerMinute","wattsPerCubicMeterPerSecond"]},"powerPerLength":{"units":["wattsPerFoot","wattsPerMeter"]},"pressure":{"units":["pascals","kilopascals","megapascals","poundsForcePerSquareInch","inchesOfMercury32DegreesFahrenheit","millimetersOfMercury","atmospheres","bars","feetOfWater39.2DegreesFahrenheit","inchesOfWater60DegreesFahrenheit"]},"ratio":{"units":["fixed","percentage","perMille","ratioTo1","ratioTo10","ratioTo12","1ToRatio"]},"secondMomentOfArea":{"units":["feetToTheFourthPower","inchesToTheFourthPower","millimetersToTheFourthPower","centimetersToTheFourthPower","metersToTheFourthPower"]},"slope":{"units":["percentage","ratioTo1","ratioTo10","ratioTo12","riseDividedBy12Inches","riseDividedBy1Foot","riseDividedBy1000Millimeters","riseDividedBy120Inches","1ToRatio","riseDividedBy10Feet","perMille"]},"solidAngle":{"units":["steradians"]},"specificEnergy":{"units":["joulesPerGram","joulesPerKilogram","britishThermalUnitsPerPound"]},"specificHeatCapacity":{"units":["joulesPerGramDegreeCelsius","britishThermalUnitsPerPoundDegreeFahrenheit","joulesPerKilogramDegreeCelsius"]},"stress":{"units":["pascals","kilopascals","megapascals","poundsForcePerSquareInch","bars","newtonsPerSquareMeter","dekanewtonsPerSquareMeter","kilonewtonsPerSquareMeter","meganewtonsPerSquareMeter","kipsPerSquareFoot","kilogramsForcePerSquareMeter","tonnesForcePerSquareMeter","poundsForcePerSquareFoot","kipsPerSquareInch","kilonewtonsPerSquareCentimeter","newtonsPerSquareMillimeter","kilonewtonsPerSquareMillimeter"]},"temperature":{"units":["fahrenheit","celsius","kelvin","rankine"]},"temperatureInterval":{"units":["fahrenheitInterval","celsiusInterval","kelvinInterval","rankineInterval"]},"thermalConductivity":{"units":["wattsPerMeterKelvin","britishThermalUnitsPerHourFootDegreeFahrenheit"]},"thermalExpansionCoefficient":{"units":["inverseDegreesFahrenheit","inverseDegreesCelsius","micrometersPerMeterDegreeCelsius","microinchesPerInchDegreeFahrenheit"]},"thermalInsulance":{"units":["hourSquareFootDegreesFahrenheitPerBritishThermalUnit","squareMeterKelvinsPerWatt"]},"time":{"units":["milliseconds","seconds","minutes","hours"]},"torque":{"units":["newtonMeters","dekanewtonMeters","kilonewtonMeters","meganewtonMeters","kipFeet","kilogramForceMeters","tonneForceMeters","poundForceFeet"]},"torquePerLength":{"units":["newtonMetersPerMeter","dekanewtonMetersPerMeter","kilonewtonMetersPerMeter","meganewtonMetersPerMeter","kipFeetPerFoot","kilogramForceMetersPerMeter","tonneForceMetersPerMeter","poundForceFeetPerFoot"]},"velocity":{"units":["feetPerMinute","centimetersPerMinute","inchesPerSecond","metersPerSecond","feetPerSecond","kilometersPerSecond","milesPerSecond","kilometersPerHour","milesPerHour"]},"volume":{"units":["cubicYards","cubicFeet","cubicInches","cubicMeters","cubicCentimeters","cubicMillimeters","liters","usGallons"]},"volumePerForce":{"units":["cubicFeetPerKip","cubicMetersPerKilonewton"]},"warpingCoefficient":{"units":["feetToTheSixthPower","inchesToTheSixthPower","millimetersToTheSixthPower","centimetersToTheSixthPower","metersToTheSixthPower"]}}}')}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(i,n){if(1&n&&(i=this(i)),8&n)return i;if("object"==typeof i&&i){if(4&n&&i.__esModule)return i;if(16&n&&"function"==typeof i.then)return i}var o=Object.create(null);r.r(o);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&i;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>i[e]));return s.default=()=>i,r.d(o,s),o},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var o=r(72980);LMV=o})(); +//# sourceMappingURL=viewer3D.min.js.map \ No newline at end of file diff --git a/src/hooks/baja/useSystemStatusByBaja.js b/src/hooks/baja/useSystemStatusByBaja.js index 79c08c0..f8432b3 100644 --- a/src/hooks/baja/useSystemStatusByBaja.js +++ b/src/hooks/baja/useSystemStatusByBaja.js @@ -90,7 +90,7 @@ export default function useSystemStatusByBaja(updateHeatBarIsShow) { }); subscribeData.value = sub_data; updateHeatMapData(sub_data); - updateSubscribeDataFromBaja(sub_data); + // updateSubscribeDataFromBaja(sub_data); }); const visibleDbid = computed(() => { @@ -106,10 +106,9 @@ export default function useSystemStatusByBaja(updateHeatBarIsShow) { // return visible; return [ 26, 32, 38, 43, 48, 53, 58, 63, 70, 76, 879, 1068, 1011, 1065, 855, 1109, - 867, - 963,1044,966,1139,936,1136,957,1133,954,610,1130,951,1041,939, - 1145,987,999,1148,1002,1151,981, - 813,1088,825,1091,804 + 867, 963, 1044, 966, 1139, 936, 1136, 957, 1133, 954, 610, 1130, 951, + 1041, 939, 1145, 987, 999, 1148, 1002, 1151, 981, 813, 1088, 825, 1091, + 804, ]; }); diff --git a/src/views/dashboard/components/DashboardAlert.vue b/src/views/dashboard/components/DashboardAlert.vue index a82d043..b0b5d42 100644 --- a/src/views/dashboard/components/DashboardAlert.vue +++ b/src/views/dashboard/components/DashboardAlert.vue @@ -59,17 +59,12 @@ const alarms = ref([ - - - 無資料 + + + - - {{ alarm.timestamp_date }} - {{ alarm.timestamp_time }} - {{ alarm.msg }} - {{ alarm.status }} - +